/** * A transformation from let expressions to the lambda calculus. * * @author Jacob Andersen */ (| "locals.l" -> "lambda.l" [Exp -> Exp, Id -> LongId] Exp.var = '<$1>' ; Exp.app = '($1) ($2)' ; Exp.letvar = '(\<$1>.$3) ($2)' ; Exp.letfun = '(\<$1>.$4) (\<$2>.$3)' ; Exp.letrec = '(\<$1>.$4)((\xy.y(xxy))(\xy.y(xxy))(\<$1><$2>.$3))'; |)