a package:simple-reflect
This data type specifies the associativity of operators: left, right
or none.
A variable with the given name
Single letter variable names.
All names have type Expr, except for f, g
and h, which are generic functions. This means that show
(f x :: Expr) == "f x", but that show (a x :: Expr)
gives a type error. On the other hand, the type of g in
show (f g) is ambiguous.