Brian Alliet Programming Language Theory syntax.scm: A few syntax-rules that aid in writing other syntax-rules match.scm: A simple syntax-rules based pattern matching facility prelude.scm: A bunch of handy functions (many based on functions in the Haskell Prelude) hw6.scm: The lambda calculator You need all 4 files loaded to run the lambda calculator (and the eopl libraries) > ,load syntax.scm > ,load match.scm > ,load prelude.scm > ,load hw6.scm > (run "(((lambda (x) (lambda (y) (x y))) hello) world)") '(hello world) > (run test) '(lambda (f) (lambda (x) (f (f (f (f (f (f x)))))))) > (run test3) '(((((hello hello) hello) hello) hello) hello) For some reason (I suppose a combination of dynamic type checking and define-datypes inefficient implementation) this is significantly slower than my Haskell implementation. It is almost painfully slow. However, speed wasn't one of the requirements, so hopefully this will be good enough.