Structure and interpretation of computer programs - Abelson, Harold (MIT Press, 1985)