FreeMonad.hs: implementation of Data Types à la Carte, Section 6+
InterpreterALC.hs: minimal lambda calculus that is extensible a la carte