Structure and Interpretation of Computer Programs - Abelson, Harold; Sussman, Gerald Jay; Sussman, Gerald Jay; Sussman, Julie (Cambridge The MIT Press, 1996)