Structure and interpretation of computer programs. - Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (MIT electrical engineering and computer science series., 1996)