
Hi again, the solutions/proposals of Ian and Iavor seem to be exactly what I need at a first glance. But looking at them more in detail reveals some other problems. I also have got a function
getFieldValueMB :: SqlBind s => Statement -> String -> Maybe s
To get Ians approach working I would need a function of type
getFieldValueMB' :: Statement -> String -> Maybe (forall s. SqlBind s => s)
and for Iavor approach I would need a function of type:
getFieldValueMB' :: Statament -> String -> Maybe Binder
which are almost the same. The remaining problem is: How can I construct either of these functions? My thoughts were that for any class C the types
Maybe (forall a. C a => a) (I will call it T1 for short)
and
(forall a. C a => Maybe a) (I will call it T2 for short)
are isomorphic. Defining the isomorphism from T1 to T2 is quite simple: iso1 :: Maybe (forall a. C a => a) -> (forall a. C a => Maybe a) iso1 (Just s) = Just s iso1 Nothing = Nothing But I don't catch how to define the isomorphism of the other direction (from T2 to T1). I would guess that defining this isomorphism would also solve my problem concerning the SQL stuff. So, is there anybody who knows how to define this isomorphism in a way that GHC-6.6 can compile it? Thanks for you help in advance, Martin.