How To Write an Interpreter for a Lambda-Calculus-Based Language