When I tried to write a Haskell app, one thing I learned quickly was that most of the awesome Haskell features that are perfect for modeling a domain <i>in Haskell</i> were useless because the majority of my modeling needs to be done in the database and merely wrapped with Haskell, rather than written entirely in Haskell. That disappointed me a bit. But maybe I'm wrong, in fact I hope I was wrong!