- The Scheme Programming Language Third Edition by R. Kent Dybvig
How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram KrishnamurthiStructure 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 to me that I had to revise this post to clarify its intent and correct its content. As such, the title has been changed, and only one book has been recommended.