“The Little Schemer”:http://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992 by Daniel P. Friedman, Matthias Felleisen.
This is a very good book, Highly recommended.
In the Preface, it says: ” The goal of this book is to teach the reader to think recursively”, and the book does it very well. I had to read this book twice to understand, and at the second time, I had to read the chapter 9 twice. I really think this book is all about recursive functions, IMHO it does not really teach you about LISP/Scheme. I learned Scheme in school before, and did not see how people without Scheme/LISP knowledge can follow this book easily.
Even though the book achieves its goal, I still don’t like the conversation style of the book, it make reading so boring and tedious sometime. The monotone flow of the conversation makes it very hard to know which parts are important, which parts are not. For people like me who has already known about programming, some basic Scheme/LISP, only Chapter 8 and 9 are interesting.
The best thing I get from this book is the understanding of Y combinator function. Chapter 10 talks a bit about how to write an interpretor, however if you already take Compiler course in school, you will not find anything new. If you have not taken Compiler course, I don’t see this chapter is good introduction for you.