Structure and interpretation of computer programs - Abelson, Harold (The MIT Electrical Engineering and Computer Science Series, 1987)