Structure and Interpretation of Computer Programs, second edition
Harold Abelson & Gerald Jay Sussman