The code here implements a typechecker and interpreters based off three different dynamic semantics for the lambda calculus, extended with integers and four binary integer operations. I wrote this for a class I taught at the University of Maryland, and figured I'd stick it here for posterity's sake.
This code is released under the CRAPL. See CRAPL-LICENSE.txt for more details.