Common Lisp Recipes
by Edi Weitz.
News and general topics
- Meta-blog: Planet Lisp
- News and blogs from the core of our Lisp community
- CLiki-- the Common Lisp wiki
- Wiki of the
from the Association of Lisp Users
- This is probably where you'll find
your local group of Lisp programmers.
- CLHS: Selected Highlights of ANSI Common Lisp Spec (HyperSpec)
- International Lisp Conference
- See conference list
at Franz, Inc.
Lisp tools and projects
- searchable index of various on-line books, the
Lisp language specification,
certain Lisp implementations and ASDF-installable libraries
- The Common Lisp Directory
- LISPWIRE more Lisp news and resources
- Common Lisp on Wikibooks
- (non-wiki older version on SF.net)
- Library from
Assoc. of Lisp users
Common Lisp Open Code Collection including
portable Perl-compatible regular expressions for Common Lisp
Superior Lisp Interaction Mode for Emacs
- When you can't find something in the
SBCL manual, try the
CMU CL docs
- Allegro - Common Lisp Opensource Center
- From Franz Inc, makers of Allegro Common Lisp
- Quicklisp: Much thanks to Zach Beane
- A better way to get all your lisp libraries in one place!
Another System Definition Facility
- asdf Manual
- Tutorial on
- Install third-party libraries into a Lisp system
- The Complete Idiot's Guide to Common Lisp Packages
Natural Language Processing
- From a principal developer at Grammarly
comes his own
- An essential guide for this library is
his blog's NLP section
- Persistence in Common Lisp
- A white-paper on saving Lisp objects and loading them back later
- The datastore is a logical descendent of Sven's
- An in-memory database with (without relational table overhead)
- See databases on
- Bit twiddling in ANSI Common Lisp
- Whether you're packing/unpacking C data structures or building
your own custom network protocols, most programmers don't realize how nice
Lisp is for manipulating bits. The idea is that you have an arbitrary set
of bytes from which you access in chunks of arbitrary bit lengths.
Compare Lisp versus C manipulating 5 bits from a sequence with 7 or more bytes:
(ldb (byte 5 7) value))
(dpb bits (byte 5 7) value))
See also: Lisp manipulation of C structures from Common Lisp topics in Wikibooks.
Networking & Distributed Systems
- ACL-COMPAT --
the Allegro Common Lisp compatibility library
- This is part of
but can be installed stand-alone; supports the usual suspects of Lisp systems
- Looking for something like Unix
select() for Lisp?
SBCL and CMUCL use
select(), which works like FreeBSD
kqueue()/kpoll() or Linux
#'process-input-wait works like
An Excellent example of
nonblocking sockets in SBCL that is brief and to the point.
Other resources and libraries
- Lisp Idioms
- Google's CL Coding style
- An earlier one, coding style guide circa 2000
- database interface supporting various database engines like
PostgreSQL, MySQL, Oracle;
more info on
- alternative approach for Lisp than SAX/DOM libraries... for those
institutions insistent on using XML.
- Sven Van Caekenberghe's
- ``Peter Norvig found that
16 of the 23 patterns in
Design Patterns were `invisible or simpler' in Lisp.''
- Lisp hacks
Some of what makes Lisp unique
- Debugging is different in ANSI Common Lisp!
- Read this thread,
Debugging Lisp code (stupid newbie question), on
- Conditions go far beyond
- Condition Handling in the Lisp Language Family
- Q: What's the Lisp equivalent of a string library from Perl/Python/Ruby/etc?
A: You don't need one just for strings when you have the SEQUENCE
But for those crossing-over, you might find this helpful:
Some things to consider: do you mind creating new strings during a
split as with Perl or Python, or would you prefer to avoid run-time
After all, many common operations in Perl, Python and especially Ruby
simply waste CPU cycles and memory. "Processor and RAM are cheap," you
say? Well, that depends...! For long-running, persistent processes;
for deterministic time (hard real-time) execution; etc; those things
matter. The culture and tradition of Lisp simply makes you more
conscious and the language itself gives you control over
allocating memory at runtime, all without pains of C and C++ memory
1969-95 (membership required for full text)
- Valuable tips on things like parsing, despite predating the ANSI
standard. That is, some minor code revisions may be necessary, but the
insight gained might be worth a subscription for one year.
- Injecting code into a running system? Yes, and
detachtty will help!
- For those new to Lisp, you might have mistakenly dismissed all mention
of "detached" proceses as merely being a Unix job running in the
background. If so, learn
about detached TTYs!
- Who are you?
Please respond to the Lisp Questionnaire!
- not Common Lisp but may be a non-scheme Lisp1-ish
substitute for Python, Ruby, Perl, etc, with one implementation on
various operating systems.
- Lush - Lisp Universal Shell
- not Common Lisp but offers tight integration of C and
Lisp for graphics intensive applications, offers inline C with access to
- an implementation of a shell in Emacs Lisp
- Game Oriented Assembly Lisp -- was created for PS2 game, Jak and Daxter
as a second generation domain specific language
(the original, GOOL, was developed for Crash Bandicoot).
- EmacsWiki: MacKeyMode
- fiddle with modifier keys on the Mac: make Command-key be META,
Alt/Option be HYPER, etc
- Lisp song