Crafting interpreters in Erlang
Stare at this program until you understand it.