Write a program that accepts lambda expressions as input. It reduces them to ground form if it is possible to do so. (if it is not possible to do so, your program will get into an infinite loop that, as you know, will be undetectable, so don't worry about it). Finally, it should print the result in a readable manner. As you can't type a lambda on the keyboard, you'll need to change the syntax. Here's three ways that work out well: simply replace the lambda sign with some otherwise useless symbol that is on the keyboard, such as # rewrite function abstractions (lambda var . body) in a form that suggests a function, such as var -> body rewrite function abstractions in a way that distinguishes the bound variable, such as [var]body you could just type out "lambda", but you'd probably grow to hate that pretty quickly.