Romildo,
> How should an instance of (Functor ExprF) be defined? It is not shown in
> the thesis.
It's actually quite straigtforward:
instance Functor ExprF where
fmap _ (Num n) = Num n
fmap _ (Var x) = Var x
fmap f (Bin op l r) = Bin op (f l) (f r)
As expected you get:
> cata exprEval (runExpr (1+2*3))
7.0
HTH,
Stefan