1 datatype expr = Var string | Lam string expr | App expr expr
2 | Data data
3 and data = Bool bool | Num nat
4 | Closure string expr "(string * data)list"