Common Lisp — Links

The programmable programming language

See also: Intro: where to start with the Lisp language

2018: start here: Lisp-Lang.org, and ask questions on #lisp

Common Lisp Quick Reference for the language and Quickref (repo) reference manuals for libraries available via Quicklisp


Released 2016: 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

LispDoc
searchable index of various on-line books, the Lisp language specification, certain Lisp implementations and ASDF-installable libraries
The Common Lisp Directory
common-lisp.net projects
LISPWIRE more Lisp news and resources
Common Lisp on Wikibooks
(non-wiki older version on SF.net)
Library from Assoc. of Lisp users
CLOCC-- Common Lisp Open Code Collection including CLLIB and PORT
CL-PPCRE-- portable Perl-compatible regular expressions for Common Lisp
SLIME: Superior Lisp Interaction Mode for Emacs
manual
When you can't find something in the SBCL manual, try the CMU CL docs

Lisp Links

Allegro - Common Lisp Opensource Center
From Franz Inc, makers of Allegro Common Lisp

Package Management

Quicklisp: Much thanks to Zach Beane
A better way to get all your lisp libraries in one place!
asdf: Another System Definition Facility
asdf Manual
Tutorial on asdf-install
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 NLP library
An essential guide for this library is his blog's NLP section

Data Storage

Persistence in Common Lisp
A white-paper on saving Lisp objects and loading them back later
BKNR
The datastore is a logical descendent of Sven's CL-Prevalence
CL-Prevalence
An in-memory database with (without relational table overhead)
See databases on CLiki

Bit Twidling

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:
LispC
Extract (setf bits
      (ldb (byte 5 7) value))
bits =
  (word>>7)&0x1F;
Modify (setf new-value
      (dpb bits (byte 5 7) value))
new_value =
  (value&(~(0x1F<<7)))|((bits&0x1F)<<7);

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 portable-AllegroServe but can be installed stand-alone; supports the usual suspects of Lisp systems
cliki.net's networking links:
Looking for something like Unix select() for Lisp?
SBCL and CMUCL use #'sb-sys:serve-event instead of select(), which works like FreeBSD style kqueue()/kpoll() or Linux epoll(), and OpenMCL's #'process-input-wait works like select(). 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
CLSQL
database interface supporting various database engines like PostgreSQL, MySQL, Oracle; more info on cliki
XMLisp
alternative approach for Lisp than SAX/DOM libraries... for those institutions insistent on using XML.
Sven Van Caekenberghe's Lisp movies and libraries
``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 comp.lang.lisp
Conditions go far beyond try-except exception-handling
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 routines.

But for those crossing-over, you might find this helpful: split-sequence.

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 memory allocation?

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 management.

ACM SIGPLAN - Lisp Pointers 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!

Miscellaneous

Who are you? Please respond to the Lisp Questionnaire!
newLISP
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 Lisp variables
Eshell
an implementation of a shell in Emacs Lisp
GOAL
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
logos
Lisp song
lyrics
Copyright © 2005-2018 Daniel Joseph Pezely
May be licensed via Creative Commons Attribution.