[Haskell-cafe] Inverse of HaskellDB

Christopher Done chrisdone at googlemail.com
Thu Sep 30 11:25:02 EDT 2010

While we're on the topic of databases, I really wanted to try out
query/inserting from/to my database with records like this:

Define a record:

data Person f =
  Person { pid        :: f Integer
         , firstName  :: f String
         , middleName :: f (Maybe String)
         , lastName   :: f String
         , age        :: f Integer

then I'd query it like

personById :: Integer -> Query Person
personById i =
  Person { pid        = constant i
         , firstName  = anything
         , middleName = anything
         , lastName   = anything
         , age        = anything
         }  deriving (Typeable,Data)

Or with a Data.Default instance:

personById :: Integer -> Query Person
personById i = def { pid = constant i }

But I have yet to figure out how to derive a Typeable instance for
such a type. I don't want to write any instances of anything.
Technically I can get the field names and values using a
Data.Data.Data instance, but I don't know, maybe I should make a
TypeablePolymorphicKinds class or something and try to derive for it.
UHC's generic deriving would probably be good for something like this,
but I want GHC.

More information about the Haskell-Cafe mailing list