escape from existential quantification
George Russell
ger@tzi.de
Thu, 27 Feb 2003 20:55:07 +0100
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.