
2008/7/10 Ron Alford
Ok, I'm closer, but I'm running into a problem with typeOf and lists, of all things: *WouterTest> typeOf (eVar "v" :: TermExpr) Planning.Wouter.Expr (Planning.Wouter.:+: WouterTest.Const WouterTest.Var) *WouterTest> typeOf ([eVar "v"] :: [TermExpr]) *** Exception: Prelude.undefined
I'm pretty sure this is the culprit for getName: *WouterTest> getName testNamed "*** Exception: Prelude.undefined
Any hints?
Also, anyone have hints for how to get automatic derivation of Data (Expr f) ? I don't want to proliferate the last lines: deriving instance Data (Expr (And :+: Atomic (Expr (Const :+: Var)))) deriving instance Data (Expr (Const :+: Var))
I screwed up the example code - it typechecks, but it'll fail at runtime. If you say:
Inr x = undefined
and then try to pass 'x' off to another function, you're trying to evaluate the "undeifned", which is a runtime error. You'll want something more like: typeOf1 in@(InR f) = [...] where InL f = (InL undefined) `asTypeOf` in This is approaching silliness, but I've tested the code this time around - so it should even work. -Antoine