
Hi Mads,
Not only pictures, but also code can say more than a thousands words. Therefore, I have been implementing a proof of concept. The code is attached in two files.
Nice! I have to admit, it's much nicer than I expected it to be. Just out of curiousity, what happens when you write: selectTupleList :: Connection -> IO [Integer] instead of selectTupleList :: Connection -> IO [(Integer, String, String)] What kind of error message do you get? More specifically, is this error caught statically or dynamically. The only other limitation I can think of, would be in the situation where you don't have compile-time access to the database, e.g. developing software for a client with a database that can only be accessed from their intranet. I have no idea how much of a limitation that is.
ok, there is some noise. But at the end of line three it says "Unknown column 'duser_id'". Also with a little more work I could properly improve the output.
The message is a bit verbose, but if you ignore the noise, it gives pretty good feedback about what's wrong. Good.
Perhaps I should explain my own thoughts on the subject a bit better. I got interested in this problem because I think it makes a nice example of dependent types "in the real world" - you really want to
But won't you end up implementing all the functionality of an SQL parser? While possible, it does seem like a huge job. With a TH solution you will safe a lot of work.
Yes - but parsing the result of an SQL describe statement is pretty easy.
A library that will be a lot more complex to learn than what I am proposing (assuming the developer already knows SQL).
Hmm. This is a rather sticky point. One might also argue that Haskell developers have to learn SQL to use the solution you propose. I'm not particularly convinced. Both approaches have their merits I think. Anyhow - nice work! Have you asked Bjorn Bringert what he thinks? He's a really clever and approachable guy - and he knows a lot more about interfacing with databases than I do. Kind regards, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation.