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