A simple lambda calculus read-eval-print-loop that offers multiple
evaluation mechanisms.  Also performs semantic analysis (name and
type analysis) on entered expressions before evaluation.

The lambda calculus supported and the strategies used are based on
"Building Interpreters with Rewriting Strategies", Eelco Dolstra and
Eelco Visser, LDTA 2002 (published in Volume 65/3 of Electronic Notes
in Theoretical Computer Science, Elsevier).
