27 Feb
2003
27 Feb
'03
7:55 p.m.
Wang Meng wrote
I understand that existentially bound types cannot escape.
For example, say we have data Foo = forall a. Foo Int a
Then we cannot define a function extract (Foo i a) = a
However,this limitation makes it extremly difficult to program with local quantifications.Is there any way to by pass this? It occasionally happens that I *know* what type is (or at least ought to be) inside an existential type, but unfortunately GHC doesn't, and I need to get the value out. This can be solved using dynamic types, for example you declare the datatype as
data Foo = forall a. Typeable a => Foo Int a
(or something like that), then you can extract the a value by going to Dynamic and back.