by Andrew Appel
Used to build my Tiger compiler for CS 553 at Duke. Was ultimately convinced that SML is a clean language.