The Scheme Programming Language Third Edition by R. Kent Dybvig
How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi
Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman
Addendum 6/26/8:
The difference between learning a programming language and learning how to program is now clear enough [...]