Typeable and 'forall' in data constructors
Akos Korosmezey
Akos.Korosmezey at eth.ericsson.se
Wed Apr 21 15:23:12 EDT 2004
I am tying to write a Term class with function application:
data (Typeable a) => Term a =
Const a |
LVar Int |
forall b. Typeable b => App (Term (b -> a)) (Term b) |
Lam (Term a)
Because 'forall' is present, ghc refuses to derive Typeable and Data for
Term. I tried to implement them:
instance (Typeable a) => Typeable (Term a) where
typeOf w = mkAppTy (mkTyCon "Term.Term") [typeOf (undefined :: a)]
instance (Typeable a) => Data (Term a) where
toConstr (Const _) = mkConstr 1 "Const" Prefix
toConstr (LVar _) = mkConstr 3 "LVar" Prefix
toConstr (App _ _) = mkConstr 4 "App" Prefix
toConstr (Lam _) = mkConstr 5 "Lam" Prefix
But ghc 6.2.1 returns with error on the line 'toConstr (App _ _)...':
parse error on input `b'. How can this be fixed?
Thank you
Akos Korosmezey
More information about the Glasgow-haskell-users
mailing list