Wow, I'm a little surprised. I took the _exact_ same path all the way up to PAIP. It's eerie to read your thoughts on a blog that isn't yours.<p>Anyway, the CLQR [1] is by far the most useful CL book I've found. It's small enough to print and bind yourself, and the pages on LOOP & the type hierarchy are just pure typography.<p>I recently finished Let Over Lambda (finished the first read-through, anyway), and I almost wish I had started with it. CL is the C of the lambda calculi, but it didn't 'click' until the final chapters of LoL. With a sufficiently smart compiler (and by compiler I mean sets of macros), CL can do damn near anything.<p>ANSI Common Lisp is a great book, too, but I found the chapters oddly arranged (chapters 12,13 need to come first, maybe).<p>[1] <a href="http://clqr.boundp.org/" rel="nofollow">http://clqr.boundp.org/</a>
Don't forget 'Successful Lisp' by David Lamkins (<a href="http://psg.com/~dlamkins/sl/" rel="nofollow">http://psg.com/~dlamkins/sl/</a>) - in printed-book or HTML versions.<p>Chapter 3 is an excellent 'nutshell' introduction to Common Lisp. The rest of the book, aside from covering various details of CL, provides a wide-ranging overview of the modern Lisp ecosystem, from editors to UIs.<p>I found it a valuable complement to the other books noted here, but somehow it doesn't get much mention!
Practical CL (written with Java mindset) is a waste of time, compared to PG's ANSI CL which has more idiomatic, subtle examples. Then On Lisp, of course.<p>HtDP should go before SICP. HtDP2 is a much better reading than old HtDP. In both books exercises must be done.<p>PAIP is a decent reading, but mr. Norvig, it seems, dislikes macros and recursion and prefers strictures and loops.)<p>btw, all the books are "available" on piratebay, if you are not too strict or american.)
I actually found the Little/Reasoned/Seasoned Schemer series to be rather enlightening even as an experienced programmer (Little Schemer can seem a little basic at first but the principles it teaches are sound and applicable outside of Lisp programming as well).
Keene's "Guide to CLOS" is good for understanding how CLOS was intended to be used. (Actually, since I read it, I use CLOS less, since I have a better sense of what it's good for.)
Though will mostly repeat what others have said, here it is:<p>ANSI Common Lisp from Paul Graham is also a good CL textbook. I bought it as a complement to Practical Common Lisp and it also has a nice quick reference at the end.<p>Having read both On Lisp and Let Over Lambda, of those, I would recommend On Lisp more because it has more practical applications of macros, LOL is much more esoteric/playful/abstract, and not everybody is into that sort of thing.
A good book for experienced Lispers (because it's out of date, it's not for beginners) is Allen's <i>Anatomy of Lisp</i>. Good luck finding a copy, though.<p><a href="http://www.amazon.com/Anatomy-Lisp-McGraw-Hill-computer-science/dp/007001115x" rel="nofollow">http://www.amazon.com/Anatomy-Lisp-McGraw-Hill-computer-scie...</a><p>And then there are the original Lambda papers:<p><a href="http://library.readscheme.org/page1.html" rel="nofollow">http://library.readscheme.org/page1.html</a>
Personally, I don't think Let over Lambda and On Lisp are super advanced or hardcore. I found On Lisp very readable not too long after I got rolling with Common Lisp (after quite a few years programming experience, though). Of course, both books have great concepts that still make me muse for a moment over the nature of code.<p>Unlike the author, I found Practical Common Lisp to be the lamp for my path into Lisp, and have no qualms about recommending it to other people.
Great post, I am wanting to head down this path. I am really wanting to get Lisp in Small Pieces but is it super costly.<p>Maybe I will look at Let Over Lambda.
About "On Lisp" and "Lisp in small pieces", the author has the order backwards, "On Lisp" is a much easier book to apprehend, and deals with less advanced concepts. In "On Lisp" you'll learn how to leverage macros. In LISP you'll learn how to implement them.
Link to Second Edition [draft] of How to Design Programs:<p><a href="http://www.ccs.neu.edu/home/matthias/HtDP2e/" rel="nofollow">http://www.ccs.neu.edu/home/matthias/HtDP2e/</a>