<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>


<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<meta name="Generator" content="Microsoft SafeHTML">
<style>
.hmmessage P
{margin:0px;padding:0px;}
body.hmmessage
{font-size:10pt;font-family:Verdana;}
</style>

Hi Justin,<br><br>I updated my changes to apply against that repo, thanks for <br>the pointer. Cool to see new changes to haskelldb, especially<br>all the new unit tests!<br><br>You can find my updated repo at:<br>http://patch-tag.com/r/haskelldb-hlist<br>Re-reading your email now, I see you asked for a patch, but seeing<br>patch-tag for the first time I got excited and uploaded a whole new<br>repo, whoops.<br><br>Anyway, I had to do some minor surgery to update to the new<br>version -- everything compiles, but I haven't tested much beyond that<br>yet. Let me know if you have any questions.<br><br>Thanks,<br>-Brian<br><br>&gt; I like the direction you are going. I looked into using HList a year<br>&gt; or so ago and I wasn't quite up to it.  The latest (unreleased)<br>&gt; version of HaskellDB is on patch-tag at<br>&gt; http://patch-tag.com/r/haskelldb/snapshot/current/content/pretty.<br>&gt; Would you mind creating a patch file against that for easier review? I<br>&gt; won't commit it until you say its ready but I'd like to see what<br>&gt; changes you have made.<br>&gt; <br>&gt; No announcement has been made but I took over maintainership from<br>&gt; Bjorn a few months ago. I hope to get a 1.0 release of HaskellDB out<br>&gt; this summer, and having something new like this in it would be pretty<br>&gt; sweet.<br>&gt; <br>&gt; On Sat, May 16, 2009 at 3:08 PM, Brian Bloniarz &lt;phunge0@hotmail.com&gt; wrote:<br>&gt; &gt; Hi,<br>&gt; &gt;<br>&gt; &gt; It's come time to share something that I've been playing around with<br>&gt; &gt; recently:<br>&gt; &gt; a branch of HaskellDB which replaces the home-grown Record code with HList<br>&gt; &gt; records. It's definitely not ready for primetime, but I thought it'd be a<br>&gt; &gt; good<br>&gt; &gt; time to post the code and solicit some feedback from the community.<br>&gt; &gt;<br>&gt; &gt; HaskellDB the concept is very promising, but IMHO the code still falls short<br>&gt; &gt; of that promise. Hopefully this is a small step in the right direction --<br>&gt; &gt; the<br>&gt; &gt; advantages of using HList:<br>&gt; &gt; * Shared implementation of extensible records<br>&gt; &gt; * Additional features from HList<br>&gt; &gt; &nbsp; * Better error messages for record misuse<br>&gt; &gt; &nbsp; * "Lacks" predicates<br>&gt; &gt; * Simpler code<br>&gt; &gt;<br>&gt; &gt; As an example of how this can be better, a DB insert looks like so:<br>&gt; &gt;&gt; insert db table $ constantRecord $<br>&gt; &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; film .=. "Munchie" .*.<br>&gt; &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; director .=. Just "Jim Wynorski" .*.<br>&gt; &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; emptyRecord<br>&gt; &gt; The columns need not appear in the same order as in the database. If you<br>&gt; &gt; forget<br>&gt; &gt; a column, you'll get "error: No instance for (Fail (FieldNotFound (Proxy<br>&gt; &gt; Director)))"<br>&gt; &gt; rather than an opaque error. Using the new "insertOpt" function, Maybe<br>&gt; &gt; columns<br>&gt; &gt; will default to Nothing rather than needing to be specified.<br>&gt; &gt;<br>&gt; &gt; The details:<br>&gt; &gt;<br>&gt; &gt; I haven't updated everything, but there's enough to run test/TestCases.hs<br>&gt; &gt; under Postgresql. TestCases is probably the best place to look for examples<br>&gt; &gt; of<br>&gt; &gt; the new syntax for now.<br>&gt; &gt;<br>&gt; &gt; HList had name conflicts with HaskellDB's SQL expression language<br>&gt; &gt; ((.*.), (.++.), etc.) My temporary band-aid is to move the expression<br>&gt; &gt; functions<br>&gt; &gt; to Database.HaskellDB.SqlExpr, and require people to import qualified.<br>&gt; &gt;<br>&gt; &gt; The Attr type is gone, columns labels are untyped now. I also replaced a<br>&gt; &gt; few instances of primitive type-level recursion with HMap/HMapOut. This<br>&gt; &gt; makes<br>&gt; &gt; the code simpler, and the type signatures more complex -- type families<br>&gt; &gt; would<br>&gt; &gt; help a lot here, I think.<br>&gt; &gt;<br>&gt; &gt; Feedback welcome! You can find my darcs tree at:<br>&gt; &gt;<br>&gt; &gt; http://mysite.verizon.net/vzewxzuh/sitebuildercontent/sitebuilderfiles/haskelldb-hlist-20090516.tar.gz<br>&gt; &gt; It also requires minor changes to HList, available at:<br>&gt; &gt;<br>&gt; &gt; http://mysite.verizon.net/vzewxzuh/sitebuildercontent/sitebuilderfiles/hlist-20090516.tar.gz<br>&gt; &gt; I'll talk to the HList people about getting those merged.<br>&gt; &gt;<br>&gt; &gt; Thanks!<br>&gt; &gt;<br>&gt; &gt; Brian Bloniarz<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; ________________________________<br>&gt; &gt; Hotmail® has a new way to see what's up with your friends. Check it out.<br>&gt; &gt; _______________________________________________<br>&gt; &gt; Haskell-Cafe mailing list<br>&gt; &gt; Haskell-Cafe@haskell.org<br>&gt; &gt; http://www.haskell.org/mailman/listinfo/haskell-cafe<br>&gt; &gt;<br>&gt; &gt;<br><br /><hr />Hotmail® has ever-growing storage! Don’t worry about storage limits. <a href='http://windowslive.com/Tutorial/Hotmail/Storage?ocid=TXT_TAGLM_WL_HM_Tutorial_Storage1_052009' target='_new'>Check it out.</a></body>
</html>