Effective Haskell: no `Show expr` arising from print

Thanks for catching this! I’ll take a look and push a fix in the next update!

In the mean time, you can work around this bug by adding deriving Show after your definition of Expr. For example:

data Expr = Lit Int
    | Sub Expr Expr
    | Add Expr Expr
    | Mul Expr Expr
    | Div Expr Expr
    deriving Show