the Lisp programming language
2016: start here: Lisp-Lang.org
A new book for 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
- 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
- When you can't find something in the SBCL manual, try the CMU CL docs
- 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
- 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 CL-Prevalence
- An in-memory database with (without relational table overhead)
- See databases on CLiki
- 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:
Lisp C Extract
(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 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
SBCL and CMUCL use
select(), which works like FreeBSD style
epoll(), and OpenMCL's
select(). An Excellent example of nonblocking sockets in SBCL that is brief and to the point.
Other resources and libraries
- Lisp Idioms
- Coding style
- database interface supporting various database engines like PostgreSQL, MySQL, Oracle; more info on cliki
- 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
- 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
- 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 Lisp variables
- Search: Software / Compilers / Optimization
- a specialized search via Google Co-op
- 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