Dear Group, Greetings. I have a feeling that what I am trying to do is easy, I just don't know how to say it in Haskell. Let's start with:
> {-# LANGUAGE > DeriveDataTypeable, GeneralizedNewtypeDeriving #-} > > import Database.HDBC > import Data.Typeable (Typeable) > import Data.Data > data C = C { str :: String, dbl:: Double } > deriving (Eq, Ord, Typeable, Data) > > a :: C > a = C "twelve" 12.0 > Now I load this up in ghci and I can do the following: toSql . str $ a -- result: SqlString "twelve" toSql . dbl $ a -- result: SqlDouble 12.0 but what I would really like to do is something like: gmapQ toSql $ a which results in: <interactive>:1:7: Could not deduce (Convertible d SqlValue) arising from a use of `toSql' from the context (Data d) bound by a type expected by the context: Data d => d -> SqlValue at <interactive>:1:1-11 Possible fix: add (Convertible d SqlValue) to the context of a type expected by the context: Data d => d -> SqlValue or add an instance declaration for (Convertible d SqlValue) In the first argument of `gmapQ', namely `toSql' In the expression: gmapQ toSql In other words, I'm looking for a function with a signature: (Whatever Instances I neeed here) => a -> [SqlValue] I have tried various incantations of type signatures, but thus far I can't get it right. Can someone point me in the right direction? Thanks. Henry Laxen -- Nadine & Henry Laxen Belle, Venus, Aphrodite 10580 N. McCarran Blvd. Adonis, Miss Parker & Jarod Suite 115-396 Via Alta # 6 Reno, Nevada Chapala, Jalisco, Mexico 89503-1896 CP 45900 The rest is silence. (Hamlet) _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe