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