This is a lambda calculus interpreter written in LISP (Common Lisp).  It uses an evaluation strategy that is neither call-by-value nor call-by-name but lies somewhere in between.