Learning

Awesome Common Lisp Learning Awesome

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: - Libraries - Curated Libraries - Forked and updated from the above list. - Software

Contributions are welcome. Please read the contribution guidelines for details.

How To Use

  1. Get a Lisp environment.
  2. Bookmark the The Common Lisp Hyperspec.
  3. 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.
  4. Try out Exercism.
  5. If you get stuck, find an online community and ask smart questions.
  6. Learn about Quicklisp.
  7. At some point, read your Lisp implementation's manual.

Lisp Environments

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, macOS and Linux. Descendant of "Lisp in a Box" mentioned in Practical Common Lisp. - Lispworks Personal Edition - 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 - 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.

Online References

Online Books

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 - 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 - A textbook that teaches mainly through the use of exercises. - Practical Common Lisp by Peter Seibel - A great introduction for experienced programmers, and tries to highlight from the very beginning what makes CL different to other languages. - Common Lisp Koans - Not exactly a book, but a set of koans to help you learn the language. - On Lisp by Paul Graham - A great book for intermediately experienced Lispers. - Let Over Lambda by Doug Hoyte - An advanced book on Lisp Macros. - The first six chapters are available online. - Comments on Let Over Lambda - Several people recommend that you be comfortable with On Lisp before reading this book, and that the start is slow. - The chapter on closures - Has several non-trivial examples, and demonstrates the power of this feature. - Paradigms of Artificial Intelligence Programming by Peter Norvig - Has many interesting applications of Lisp, but is no longer a good reference for AI.

Offline Books

These are books that you'll have to buy, or borrow from a library. - Land of Lisp by Conrad Barski, MD - 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 - Good as a reference, covers CLOS, and has several example program implementations. - Plaintext versions of Chapter 1 and Chapter 2 are available online. - Common Lisp Recipes by Edmund Weitz - A great set of Common Lisp patterns. - Object-Oriented Programming in Common Lisp by Sonya E. Keene - 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). - Chapters 5 and 6 (available online) - The specification of a metaobject protocol extension to CLOS. - Adam Tornhill on AMOP - Recommends reading Practical Common Lisp, then Object-Oriented Programming in Common Lisp, and then AMOP.

Online Community

Library Management

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 - Article about what libraries you should use, and why. - Articulate Common Lisp - Lists some useful 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) - Commercial, but has a free Express Edition. - ACL manual - Training videos on YouTube - CLISP - CLISP Manual - Clozure Common Lisp (CCL) - CCL manual - Carnegie Mellon University Common Lisp (CMUCL) - CMUCL manual and other useful information - Embeddable Common Lisp (ECL) - ECL manual - LispWorks - Commercial, but as mentioned previously, has a Personal Edition with minor limitations. - LispWorks manual - Steel Bank Common Lisp (SBCL) - My personal favorite. - SBCL manual - Scieneer Common Lisp (SCL) - A commercial Linux and Unix implementation, but has an unrestricted free evaluation and non-commercial use version. - SCL manual

Credit

I got a lot of the information from Rainer Joswig's Stack Overflow answer on learning Common Lisp, and from the now-defunct Stack Overflow Documents site. The Cliki's Getting Started page was also invaluable.