> I'm fairly new to Haskell, but worked on Mercury until recently. > Mercury has a type "univ" which might be declared something like:
you would write this: data Univ = forall a . Univ a > mkUniv :: a -> Univ right, 'mkUniv = Univ' is sufficient. > getValue :: Univ -> Maybe a yes, this is the interesting bit :). you could presumably use dynamics to simulate this, but you'd have to do a bit of work and you wouldn't have as general a type signature. you could do something like > import Data.Dynamic > > data Univ = Univ Dynamic > > mkUniv :: Typeable a => a -> Univ > mkUniv = Univ . toDyn > > getValue :: Typeable a => Univ -> Maybe a > getValue (Univ d) = fromDynamic d then you can do something like: *Foo> getValue (mkUniv 'a') :: Maybe Char Just 'a' *Foo> getValue (mkUniv 'a') :: Maybe Int Nothing This works in GHC and Hugs (though for the version of Hugs I have you use just Dynamic instead of Data.Dynamic). Of course, there's no reason to have Univ in this case, you can just use the Dynamic type. - Hal _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell