Structure and interpretation of computer programs - Abelson, Harold (The MIT electrical engineering and computer science series, 1985)