Hello, I have a question regarding named fields and existential data types.
I want to extend this example from the User's guide to use named fields: data Foo = forall a. MkFoo a (a->Bool) | Nil foo = MkFoo 'g' isUpper I tried: data Foo2 = forall a. MkFoo2 { val2 :: a , func2 :: a -> Bool } But the compiler said: Can't combine named fields with locally-quantified type variables In the declaration of data constructor MkFoo2 In the data type declaration for `Foo2' Then I tried: data Foo3 = MkFoo3 { val3 :: forall a. a , func3 :: forall a. (a -> Bool) } foo3 = MkFoo3 'g' isUpper And the compiler said: Inferred type is less polymorphic than expected Quantified type variable `a' is unified with `Char' Signature type: forall a. a Type to generalise: Char When checking an expression type signature In the first argument of `MkFoo3', namely 'g' In the definition of `foo3': MkFoo3 'g' isUpper Am I doing something wrong, or can GHC just not do what I want yet? >From what I gathered looking through the mailing list, existential types are still a bit hacked up? Thanks! Jeremy Shaw. _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users