Files
awesome-awesomeness/html/commonlisplearning.html
2025-07-18 22:22:32 +02:00

288 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 id="awesome-common-lisp-learning-awesome">Awesome Common Lisp
Learning <a href="https://awesome.re"><img
src="https://awesome.re/badge.svg" alt="Awesome" /></a></h1>
<div data-align="center">
<p><img src="LISP_logo_mid.png"></p>
</div>
<p>This list focuses on resources for learning Common Lisp, especially
resources that Ive found useful.</p>
<p>There are other Awesome Common Lisp lists that focus on other topics:
- <a href="https://github.com/CodyReichert/awesome-cl">Libraries</a> -
<a href="https://github.com/vindarel/curated-awesome-cl">Curated
Libraries</a> - Forked and updated from the above list. - <a
href="https://github.com/azzamsa/awesome-cl-software">Software</a></p>
<p>Contributions are welcome. Please read the <a
href="contributing.md">contribution guidelines</a> for details.</p>
<h2 id="contents">Contents</h2>
<ul>
<li><a href="#how-to-use">How To Use</a></li>
<li><a href="#lisp-environments">Lisp Environments</a></li>
<li><a href="#online-references">Online References</a></li>
<li><a href="#online-books">Online Books</a></li>
<li><a href="#offline-books">Offline Books</a></li>
<li><a href="#online-community">Online Community</a></li>
<li><a href="#library-management">Library Management</a></li>
<li><a href="#common-lisp-implementations">Common Lisp
Implementations</a></li>
<li><a href="#credit">Credit</a></li>
</ul>
<h2 id="how-to-use">How To Use</h2>
<ol type="1">
<li>Get a Lisp environment.</li>
<li>Bookmark the <a
href="http://www.lispworks.com/documentation/common-lisp.html">The
Common Lisp Hyperspec</a>.</li>
<li>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.</li>
<li>Try out <a
href="https://exercism.org/tracks/common-lisp">Exercism</a>.</li>
<li>If you get stuck, find an online community and <a
href="http://www.catb.org/esr/faqs/smart-questions.html">ask smart
questions</a>.</li>
<li>Learn about <a
href="https://www.quicklisp.org/beta/">Quicklisp</a>.</li>
<li>At some point, read your Lisp implementations manual.</li>
</ol>
<h2 id="lisp-environments">Lisp Environments</h2>
<p>You can run a Lisp implementation directly, but an editing
environment makes the experience easier. - Prepackaged environments - <a
href="https://shinmera.github.io/portacle/">Portacle</a> - 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 its a
very quick and easy way to get going. - <a
href="https://common-lisp.net/project/lispbox/">Lispbox</a> - 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” <a
href="http://www.gigamonkeys.com/book/lather-rinse-repeat-a-tour-of-the-repl.html">mentioned</a>
in Practical Common Lisp. - <a
href="http://www.lispworks.com/downloads/">Lispworks Personal
Edition</a> - A non-Emacs based IDE for LispWorks Lisp, with some
restrictions. - <a href="https://franz.com/products/allegrocl/">Allegro
Common Lisp</a> - Has a free <a
href="https://franz.com/downloads/clp/survey">Express Edition</a> IDE,
and <a
href="https://www.youtube.com/channel/UCN36UrxtyNBJPaG0kmBJNRw">training
videos on YouTube</a>. - For advanced users - <a
href="http://articulate-lisp.com">Articulate Common Lisp</a> - A HOWTO
for putting together a Lisp environment, and has information on <a
href="http://articulate-lisp.com/project/abcs.html">useful libraries</a>
and how to <a
href="http://articulate-lisp.com/project/new-project.html">structure
projects</a>. - If youre an experienced <a
href="https://www.gnu.org/software/emacs/">Emacs</a> user, you can just
install <a href="https://common-lisp.net/project/slime/">SLIME</a> and a
<a
href="https://common-lisp.net/project/slime/doc/html/Platforms.html#Platforms">supported
Common Lisp implementation</a>. See the <a
href="https://common-lisp.net/project/slime/doc/html/">SLIME manual</a>
for more details. - The Common Lisp Cookbook has more information about
<a
href="https://lispcookbook.github.io/cl-cookbook/getting-started.html">installing
an implementation</a> using an implementation manager like <a
href="https://github.com/roswell/roswell/wiki">Roswell</a>, or on
Docker.</p>
<h2 id="online-references">Online References</h2>
<ul>
<li><a
href="http://www.lispworks.com/documentation/common-lisp.html">The
Common Lisp Hyperspec (CLHS)</a> - <em>The</em> language reference
document for Common Lisp. Bookmark it now.
<ul>
<li><a
href="http://www.lispworks.com/documentation/HyperSpec/Body/07_.htm">Chapter
7</a> - Covers the Common Lisp Object System (CLOS).</li>
</ul></li>
<li><a
href="http://cberr.us/tech_writings/notes/common_lisp_standard_draft.html">The
ANSI Common Lisp Standard Draft</a> - The last draft version of the ANSI
INCITS 226-1994 (previously ANSI X3.226-1994) standard.
<ul>
<li>The draft is free, the standard isnt.</li>
<li>Its pretty much the same as the official standard, and some people
prefer it to the CLHS.</li>
</ul></li>
<li><a href="http://lispcookbook.github.io/cl-cookbook/">The Common Lisp
Cookbook</a> - A list of useful Lisp recipes. Also contains a list of
other online sources of CL information.</li>
<li><a
href="https://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html">Common Lisp
the Language (2nd Edition) by Guy L. Steele</a> - A description of the
Common Lisp language from just before it was standardized by ANSI. Dont
use it as a reference.
<ul>
<li><a href="https://cliki.net/Getting+Started">Cliki on CLtL2</a> -
Claims it has more useful descriptions of <a
href="http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node235.html#SECTION003000000000000000000">LOOP</a>
and <a
href="http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html">FORMAT</a>
than the CLHS does.</li>
<li><a
href="https://stackoverflow.com/questions/108537/what-are-the-main-differences-between-cltl2-and-ansi-cl">Stack
Overflow on CLtL2</a> - Some recommend using CLtL2 for insight and
inspiration, but to use the CLHS when programming.</li>
<li><a href="http://linuxfinances.info/info/commonlisp.html#AEN9679">A
list of differences between CLtL2 and the ANSI Common Lisp
specification.</a></li>
<li><a
href="https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node260.html#SECTION003200000000000000000">Chapter
28</a> - Covers the Common Lisp Object System.</li>
</ul></li>
</ul>
<h2 id="online-books">Online Books</h2>
<p>These books that are freely accessible online, arranged roughly in
order from basic to advanced: - <a
href="http://www.cs.cmu.edu/~dst/LispBook/">Common Lisp: A Gentle
Introduction to Symbolic Computation by David S. Touretzky</a> - a good
introduction for people new to programming. Contains code for really
useful utilities like <a
href="http://www.cs.cmu.edu/~dst/Lisp/dtrace/">DTRACE</a> and <a
href="http://www.cs.cmu.edu/~dst/Lisp/sdraw/">SDRAW</a>. - <a
href="https://www.cse.buffalo.edu/~shapiro/Commonlisp/">Common Lisp: An
interactive approach by Stuart C. Shapiro</a> - A textbook that teaches
mainly through the use of exercises. - <a
href="http://www.gigamonkeys.com/book/">Practical Common Lisp by Peter
Seibel</a> - A great introduction for experienced programmers, and tries
to highlight from the very beginning what makes CL different to other
languages. - <a href="https://github.com/google/lisp-koans">Common Lisp
Koans</a> - Not exactly a book, but a set of koans to help you learn the
language. - <a href="http://www.paulgraham.com/onlisp.html">On Lisp by
Paul Graham</a> - A great book for intermediately experienced Lispers. -
<a href="https://letoverlambda.com">Let Over Lambda by Doug Hoyte</a> -
An advanced book on Lisp Macros. - The first six chapters are available
online. - <a
href="https://www.reddit.com/r/lisp/comments/3actsc/let_over_lambda/">Comments
on Let Over Lambda</a> - Several people recommend that you be
comfortable with On Lisp before reading this book, and that the start is
slow. - <a
href="https://letoverlambda.com/index.cl/guest/chap2.html">The chapter
on closures</a> - Has several non-trivial examples, and demonstrates the
power of this feature. - <a
href="https://github.com/norvig/paip-lisp">Paradigms of Artificial
Intelligence Programming by Peter Norvig</a> - Has many interesting
applications of Lisp, but is no longer a good reference for AI.</p>
<h2 id="offline-books">Offline Books</h2>
<p>These are books that youll have to buy, or borrow from a library. -
<a href="http://landoflisp.com">Land of Lisp by Conrad Barski, MD</a> -
A fun introduction to Lisp that uses comics and has you writing games. -
Available as an <a href="https://www.nostarch.com/lisp.htm">ebook</a>. -
A couple of the LOOP macros are written <code>for x for y...</code>
which you can change to <code>for x from 0 for y...</code> to make them
work in SBCL. - Has an <a
href="http://landoflisp.com/errata.html">errata page</a>. - Most of the
book is entertaining and fairly easy, but gets hairy from about Chapter
18. It doesnt 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. - <a
href="http://www.paulgraham.com/acl.html">ANSI Common Lisp by Paul
Graham</a> - Good as a reference, covers CLOS, and has several example
program implementations. - Plaintext versions of <a
href="http://lib.store.yahoo.net/lib/paulgraham/acl1.txt">Chapter 1</a>
and <a href="http://lib.store.yahoo.net/lib/paulgraham/acl2.txt">Chapter
2</a> are available online. - <a
href="http://weitz.de/cl-recipes/">Common Lisp Recipes by Edmund
Weitz</a> - A great set of Common Lisp patterns. - <a
href="https://www.amazon.com/Object-Oriented-Programming-COMMON-LISP-Programmers/dp/0201175894">Object-Oriented
Programming in Common Lisp by Sonya E. Keene</a> - An in-depth
description of the CLOS, and shows how to use it with example
applications. - <a
href="https://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczales/dp/0262610744/">The
Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres, and
Daniel G. Bobrow</a> - Describes the CLOS Metaobject Protocol (MOP). -
<a href="http://metamodular.com/CLOS-MOP/">Chapters 5 and 6 (available
online)</a> - The specification of a metaobject protocol extension to
CLOS, by Robert Strandh. - Superseded by the <a
href="https://clos-mop.hexstreamsoft.com/">modern public domain CLOS MOP
specification</a> by Jean-Philippe Paradis (<a
href="https://github.com/Hexstream">Hexstream</a>). - <a
href="http://www.adamtornhill.com/reviews/amop.htm">Adam Tornhill on
AMOP</a> - Recommends reading Practical Common Lisp, then
Object-Oriented Programming in Common Lisp, and then AMOP.</p>
<h2 id="online-community">Online Community</h2>
<ul>
<li>The <a href="http://cliki.net">Cliki</a> - The Common Lisp Wiki. A
great resource for all things CL. Has a great <a
href="http://cliki.net/Getting+Started">Getting Started</a> page and an
extensive list of <a href="http://cliki.net/Lisp%20books">Lisp
books</a>.</li>
<li>The #clschool, #lisp, #ccl, #sbcl and <a
href="https://www.cliki.net/IRC">other rooms</a> on the <a
href="https://libera.chat/">Libera.Chat</a> network are great places for
learning about Common Lisp. (<a
href="https://gist.github.com/joepie91/df80d8d36cd9d1bde46ba018af497409">Freenode
should be avoided.</a>)</li>
<li><a href="http://www.reddit.com/r/lisp/">Lisp Subreddit</a> - An
active community, and has loads of useful links and reference documents
in the sidebar.
<ul>
<li><a href="https://www.reddit.com/r/Common_Lisp">Common Lisp
Subreddit</a> - The Subreddit for Common Lisp.</li>
</ul></li>
<li><a href="https://exercism.org/tracks/common-lisp">Exercisms Common
Lisp track</a> - An excellent way to learn the language through
practice, have your code reviewed, and to discuss solutions with other
people.</li>
<li><a href="https://discord.gg/7tSq5EaA6Z">Lisp Discord server</a> - Is
a Discord for Lisp. Has a channel dedicated to Common Lisp and will
happily answer questions.</li>
</ul>
<h2 id="library-management">Library Management</h2>
<p>These arent libraries, but can help you find and install other
libraries. - <a href="https://www.quicklisp.org/beta">Quicklisp</a> - A
package management platform for Lisp libraries. - <a
href="http://quickdocs.org">Quickdocs</a> - Documentation for projects
in Quicklisp. - <a
href="http://borretti.me/article/common-lisp-sotu-2015">State of the
Common Lisp Ecosystem, 2015</a> - Article about what libraries you
should use, and why. - <a
href="http://articulate-lisp.com/project/abcs.html">Articulate Common
Lisp</a> - Lists some useful libraries.</p>
<h2 id="common-lisp-implementations">Common Lisp Implementations</h2>
<p>This section lists some common CL implementations and their manuals
in alphabetical order. Unless otherwise noted, these are free software
implementations. See also the Clikis list of <a
href="https://www.cliki.net/Common%20Lisp%20implementation">free
software Common Lisp Implementations</a>. - <a
href="https://franz.com/products/allegrocl/">Allegro Common Lisp
(ACL)</a> - Commercial, but has a free <a
href="https://franz.com/downloads/clp/survey">Express Edition</a>. - <a
href="https://franz.com/support/documentation/">ACL manual</a> - <a
href="https://www.youtube.com/channel/UCN36UrxtyNBJPaG0kmBJNRw">Training
videos on YouTube</a> - <a href="https://clisp.sourceforge.io">CLISP</a>
- <a href="https://clisp.sourceforge.io/impnotes.html">CLISP Manual</a>
- <a href="https://ccl.clozure.com">Clozure Common Lisp (CCL)</a> - <a
href="https://ccl.clozure.com/manual/">CCL manual</a> - <a
href="https://www.cons.org/cmucl/">Carnegie Mellon University Common
Lisp (CMUCL)</a> - <a
href="https://www.cons.org/cmucl/doc/index.html">CMUCL manual and other
useful information</a> - <a
href="https://common-lisp.net/project/ecl/">Embeddable Common Lisp
(ECL)</a> - <a
href="https://common-lisp.net/project/ecl/static/manual/">ECL manual</a>
- <a href="http://www.lispworks.com/products/index.html">LispWorks</a> -
Commercial, but as mentioned previously, has a <a
href="http://www.lispworks.com/downloads/index.html">Personal
Edition</a> with minor limitations. - <a
href="http://www.lispworks.com/documentation/index.html">LispWorks
manual</a> - <a href="http://www.sbcl.org">Steel Bank Common Lisp
(SBCL)</a> - My personal favorite. - <a
href="http://www.sbcl.org/manual/index.html">SBCL manual</a> - <a
href="http://web.archive.org/web/20171014210404/http://www.scieneer.com/scl/">Scieneer
Common Lisp (SCL)</a> - A commercial Linux and Unix implementation, but
has an unrestricted free evaluation and non-commercial use version. - <a
href="http://web.archive.org/web/20171014210404/http://www.scieneer.com/scl/doc/">SCL
manual</a></p>
<h2 id="credit">Credit</h2>
<p>I got a lot of the information from <a
href="https://stackoverflow.com/a/7224914/1005039">Rainer Joswigs Stack
Overflow answer on learning Common Lisp</a>, and from the now-defunct
Stack Overflow Documents site. The <a
href="https://cliki.net/Getting%20Started">Clikis Getting Started</a>
page was also invaluable.</p>
<p><a
href="https://github.com/GustavBertram/awesome-common-lisp-learning">commonlisplearning.md
Github</a></p>