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.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to