
Hi ! I've tried to implement the expression interpreter present in Data types a la carte, putting the new "cases" of my data type in a separate module. When I'm trying to create a simple expression like this: x :: Expr (Val :+: Add :+: Mult) x = (val 2000 `mult` val 399) `plus` (val 3) I'm getting the following type error that I can't solve: src/Main.hs:25:4: No instance for (Add :<: Mult) arising from a use of `plus' at src/Main.hs:25:4-43 Possible fix: add an instance declaration for (Add :<: Mult) In the expression: (val 2000 `mult` val 399) `plus` (val 3) In the definition of `x': x = (val 2000 `mult` val 399) `plus` (val 3) src/Main.hs:25:5: No instance for (Val :<: Mult) arising from a use of `val' at src/Main.hs:25:5-12 Possible fix: add an instance declaration for (Val :<: Mult) In the first argument of `mult', namely `val 2000' In the first argument of `plus', namely `(val 2000 `mult` val 399)' In the expression: (val 2000 `mult` val 399) `plus` (val 3) I've attached the source code... Regards Rodrigo