Structure and interpretation of computer programs - Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (The MIT Press, 1996)