This list focuses on resources for learning Common Lisp, especially resources that I've found useful.
There are other awesome Common Lisp lists that focus on other topics:
- Awesome Common Lisp Libraries
- Curated Awesome Common Lisp Libraries (forked and updated from the above list)
- Awesome Common Lisp Software
Contributions are welcome. Please submit a pull request or create an issue to add to the list.
How To Use
- Get a Lisp environment.
- Bookmark the The Common Lisp Hyperspec.
- Download and work through a Lisp book of an appropriate level. Type the examples and play with the code. Feel free to switch books and try a different one.
- Try out Exercism.
- Ask smart questions in an online community if you get really stuck.
- Learn about Quicklisp.
- At some point, read your Lisp implementation's manual.
You can run a Lisp implementation directly, but an editing environment makes the experience easier.
- Prepackaged environments
- Portacle, a portable and multiplatform Common Lisp environment. It ships a slightly customized Emacs with SLIME, SBCL (a popular Common Lisp implementation), Quicklisp and Git. No installation needed, so it's a very quick and easy way to get going.
- Lispbox, an IDE (Emacs + SLIME), Common Lisp implementation (Clozure Common Lisp) and library manager (Quicklisp), pre-packaged as archives for Windows, Mac OSX and Linux. Descendant of "Lisp in a Box" mentioned in Practical Common Lisp.
- Lispworks Personal Edition is a non-Emacs based IDE for LispWorks Lisp, with some restrictions.
- Allegro Common Lisp has a free Express Edition IDE, and training videos on Youtube.
- For advanced users
- Articulate Common Lisp is a HOWTO for putting together a Lisp environment, and has information on useful libraries and how to structure projects.
- If you're an experienced Emacs user, you can just install SLIME and a supported Common Lisp implementation. See the SLIME manual for more details.
- The Common Lisp Cookbook has more information about installing an implementation using an implementation manager like Roswell, or on Docker.
- The Common Lisp Hyperspec (CLHS) is the language reference document for Common Lisp. Bookmark it now.
- Chapter 7 covers the Common Lisp Object System (CLOS).
- The ANSI Common Lisp Standard Draft is the last draft version of the ANSI INCITS 226-1994 (previously ANSI X3.226-1994) standard.
- The draft is free, the standard isn't.
- It's pretty much the same as the official standard, and some people prefer it to the CLHS.
- The Common Lisp Cookbook is a list of useful Lisp recipes. Also contains a list of other online sources of CL information.
- Common Lisp the Language (2nd Edition) by Guy L. Steele is a description of the Common Lisp language from just before it was standardized by ANSI. Don't use it as a reference.
- According to the Cliki, it has more useful descriptions of LOOP and FORMAT than the CLHS does.
- Others recommend using CLtL2 for insight and inspiration, but to use the CLHS when programming.
- This is a list of differences between CLtL2 and the ANSI Common Lisp specification.
- Chapter 28 covers the Common Lisp Object System.
These books that are freely accessible online, arranged roughly in order from basic to advanced:
- Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky is a good introduction for people new to programming. Contains code for really useful utilities like DTRACE and SDRAW.
- Common Lisp: An interactive approach by Stuart C. Shapiro is a textbook that teaches mainly through the use of exercises.
- Practical Common Lisp by Peter Seibel is a great introduction for experienced programmers, and tries to highlight from the very beginning what makes CL different to other languages.
- Common Lisp Koans is not exactly a book, but a set of koans to help you learn the language.
- On Lisp by Paul Graham is a great book for intermediately experienced Lispers.
- Let Over Lambda by Doug Hoyte is an advanced book on Lisp Macros.
- Paradigms of Artificial Intelligence Programming by Peter Norvig has many interesting applications of Lisp, but is no longer a good reference for AI.
These are books that you'll have to buy, or borrow from a library.
- Land of Lisp by Conrad Barski, MD is a fun introduction to Lisp that uses comics and has you writing games.
- Available as an ebook.
- A couple of the LOOP macros are written
for x for y...which you can change to
for x from 0 for y...to make them work in SBCL.
- Has an errata page.
- Most of the book is entertaining and fairly easy, but gets hairy from about Chapter 18. It doesn't feel like later chapters introduce much, so I recommend switching to a different book at that point.
- The Web server example in Ch 13, 19 and 20 will only work on CLISP, and needs the addition of HTTP response headers to render the HTML properly.
- ANSI Common Lisp by Paul Graham is good as a reference, covers CLOS, and has several example program implementations.
- Common Lisp Recipes by Edmund Weitz is a great set of Common Lisp patterns.
- Object-Oriented Programming in Common Lisp by Sonya E. Keene is an in-depth description of the CLOS, and shows how to use it with example applications.
- The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow describes the CLOS Metaobject Protocol (MOP).
- The Cliki is the Common Lisp Wiki. A great resource for all things CL. Has a great Getting Started page and an extensive list of Lisp books.
- The #clnoobs, #lisp, #ccl, #sbcl and other rooms on the Freenode IRC network are great places for learning about Common Lisp.
- The Lisp Subreddit is an active community, and has loads of useful links and reference documents in the sidebar.
- See also the Common Lisp Subreddit
- Exercism's Common Lisp track is an excellent way to learn the language through practice, have your code reviewed, and to discuss solutions with other people.
- The Lisp Discord server has a channel dedicated to Common Lisp and will happily answer questions.
These aren't libraries, but can help you find and install other libraries.
- Quicklisp, a package management platform for Lisp libraries.
- Quickdocs, documentation for projects in Quicklisp
- State of the Common Lisp Ecosystem, 2015 talks about what libraries you should use, and why.
- The Articulate Common Lisp site lists some useful libraries.
- As mentioned at the top, the Awesome Common Lisp and Curated Awesome Common Lisp lists focus on libraries.
Common Lisp Implementations
This section lists some common CL implementations and their manuals in alphabetical order. Unless otherwise noted, these are free software implementations. See also the Cliki's list of free software Common Lisp Implementations.
- Allegro Common Lisp (ACL) and manual. Commercial, but has a free Express Edition and training videos on Youtube.
- CLISP and manual.
- Clozure Common Lisp (CCL) and manual.
- Carnegie Mellon University Common Lisp (CMUCL), has a manual and other useful information.
- Embeddable Common Lisp (ECL) and manual.
- LispWorks and manual. Commercial, but as mentioned previously, has a Personal Edition with minor limitations.
- Steel Bank Common Lisp (SBCL) and manual. My personal favorite.
- Scieneer Common Lisp (SCL) and manual. A commercial Linux and Unix implementation, but has an unrestricted free evaluation and non-commercial use version.
I got a lot of the information from Rainer Joswig's StackOverflow answer on learning Common Lisp, and from the now-defunct StackOverflow Documents site. The Cliki's Getting Started page was also invaluable.
This work is licensed under a Creative Commons Attribution 4.0 International License.