types 'v binop = 'v => 'v => 'v datatype ('a,'v) expr = Cex 'v | Vex 'a | Bex ('v binop) (('a,'v) expr) (('a,'v) expr)