the Lisp programming language
For those seeking to join the new wave of Lisp programmers, you might want to start with books and articles specific for learning and tips on configuring your system.
There is a new work-in-progress Lisp FAQ, circa 2006-07 (contributions encouraged)
News and general topics
- Meta-blog: Planet Lisp
- News and blogs from the core of our Lisp community
- Lisp Gardeners
- The pro-active community moving lisp into the future.
- 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. (Mine is LispSea)
- 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
- The Common Lisp Cookbook
- (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
- del.icio.us lisp links (popular)
- Allegro - Common Lisp Opensource Center
- From Franz Inc, makers of Allegro Common Lisp
Package Management
- 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
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 Prevalence (see below)
- CL-Prevalence (See KPAX below)
- An in-memory database with (without relational table overhead)
- See databases on CLiki
Lisp-based Web Application Servers
- Start with Nicky Peeters' paper Using Common Lisp to Build Web Applications
- BKNR
- KPAX with Prevalence and other projects from Sven Van Caekenberghe
- Be sure to read his 2003 case study:
Deploying on an Apple Xserve running Mac OS X Server. From the article:
We have this configuration working on a website that gets up to 3.5 million hits a day, with peaks of 300.000 hits per hour, transferring up to 12 Gb a day - all this on modest hardware (but using a big pipe).
- Portable AllegroServe
- open-source, free web server for Lisp; a variant of AllegroServe, written to run on flavors other than Allegro Common Lisp
- AllegroServe
- Formerly "Allegro iServe", an open source web application server
originally written to be a demonstration of
multiprocessing and networking in Lisp while delivering high performance!
See Allegro Webactions and Using Webactions
Tutorials and instructions available from Franz, Inc.
- TBNL - A Toolkit for Dynamic Lisp Websites
- Lisp on Apache
- mod_lisp
- Lisp on Apache (not to be confused with cl-modlisp; the two work together)
- mod_remoteApp from play.org/code
- Similar to mod_lisp but parses HTTP headers only once and sends just the ones you need to your app. Includes SBCL client and C test code.
- Preliminary FastCGI Library for SBCL Lisp pasted by kingruedi on #lisp
- Note: with FastCGI, you forfeit
STDINandSTDOUT, so interactively debugging a live server app becomes rather difficult unless you re-re-map those file handles first, which is probably why mod_lisp came to be.
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-eventinstead ofselect(), which works like FreeBSD stylekqueue()/kpoll()or Linuxepoll(), and OpenMCL's#'process-input-waitworks likeselect(). An Excellent example of nonblocking sockets in SBCL that is brief and to the point.
Other resources and libraries
- Lisp Idioms
- Coding style
- 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-exceptexception-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
detachttywill 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!
Links To Other Lists of Links
- Google's top Lisp FAQs, Help and Tutorials
- Bill Clementson's Lisp bookshelf
- lispmachine.net: mr.bill's lisp links
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
- Search: Software / Compilers / Optimization
- a specialized search via Google Co-op
- 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