<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Mads,<div><br><div><div><blockquote type="cite"><div>I was wondering if anybody had experimented with using Template Haskell<br>(TH) and ordinary SQL to make type-safe database access?<br></div></blockquote></div><br></div><div>I know HaskellDB, for example, does something quite similar. There's a preprocessor that generates a Haskell file with a Haskell representation of the types of the database's tables. You could of course replace this with a TH function. There are two very nice papers about the design of HaskellDB:</div><div><br></div><div><font class="Apple-style-span" color="#144FAE"><span class="Apple-style-span" style="text-decoration: underline;"><a href="http://research.microsoft.com/users/daan/download/papers/dsec.ps">http://research.microsoft.com/users/daan/download/papers/dsec.ps</a></span></font></div><div><font class="Apple-style-span" color="#144FAE"><span class="Apple-style-span" style="text-decoration: underline;"><br></span></font></div><div><font class="Apple-style-span" color="#144FAE"><span class="Apple-style-span" style="text-decoration: underline;"><a href="http://haskelldb.sourceforge.net/haskelldb.pdf">http://haskelldb.sourceforge.net/haskelldb.pdf</a></span></font></div><div><br></div><div>I think there may a bit of problem with the approach you suggest: as the type returned by the query is computed by the SQL server (if I understand you correctly), it's very hard to do anything with the result of the query - the Haskell compiler has no idea what type the result has, so you can't do anything with it. I think it makes much more sense to bookkeep type information on the Haskell side.</div><div><br></div><div>Hope this helps,</div><div><br></div><div>&nbsp;&nbsp;Wouter</div></div></body></html>