Getting going with modern Common Lisp on Linux

31 Jan 2011

High-level overview:

I’m doing this under Ubuntu 10.04, but I’m only using the package manager for Emacs so this should translate well across multiple distributions.

Download and install SBCL

SBCL is probably the most popular Common Lisp implementation available for Linux. There are other great ones out there (Clozure CL and CLISP come to mind), but SBCL’s the one I usually use.

Go to SBCL’s download page and download the latest release for Linux. (Both 32-bit and 64-bit work great).

Now fire up a terminal, switch to where you downloaded SBCL, unpack and install it:

$ cd Downloads/
$ tar xjf sbcl-1.0.45-x86-linux-binary.tar.bz2
$ cd sbcl-1.0.45-x86-linux
$ sudo sh install.sh

That’ll install SBCL into /usr/local/bin. At this point you should be able to run ‘sbcl’ and get a Lisp prompt:

$ sbcl
This is SBCL 1.0.45, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
*

Hit Control-D or type (quit) to exit.

Install Emacs

Use your package manager for this. On Ubuntu:

$ apt-get update
$ apt-get install emacs

Download and install Quicklisp

Download Quicklisp from http://www.quicklisp.org/. (It’s in beta at the time this was written, but it’s fully functional and awesome). Download the install file and save it to disk somewhere easy to find.

Next, run sbcl and type in the following:

(load "/path/to/quicklisp.lisp")

After it loads, run:

(quicklisp-quickstart:install)

That’ll download the rest of the system and get it set up for you. Quicklisp will install by default in ~/quicklisp; you can change that by passing :path "/target/path/" to the install function.

Finally, run:

(ql:add-to-init-file)

That’ll add Quicklisp to your init file so that anytime you run SBCL Quicklisp will be loaded and ready to go.

Now go ahead and read on http://www.quicklisp.org/ about how to use it. It’s very easy to search for and install Common Lisp libraries. For example, to get ahold of “ieee-floats” for the previous entry, just run:

(ql:quickload "ieee-floats")

That will download the library if it hasn’t already and load it into your CL environment for you.

Configure everything so that it plays nice together

SBCL and Quicklisp are already playing nicely together at this point; you just need to let Emacs know about them.

First in SBCL run:

(ql:quickload "quicklisp-slime-helper")

This’ll install SLIME for you, an awesome Common Lisp development environment. It should give you a line to add to your .emacs configuration file:

slime-helper.el installed in "/Users/jfischer/quicklisp/slime-helper.el"

To use, add this to your ~/.emacs:

    (load (expand-file-name "~/quicklisp/slime-helper.el"))

You’ll need to both add that line and tell Emacs how to launch your Lisp environment. To do that, add the following to ~/.emacs:

(setq inferior-lisp-program "sbcl")
(load (expand-file-name "~/quicklisp/slime-helper.el"))

At this point, you should be ready to go. To try it all out, launch Emacs, type Alt-x (Meta-x, technically), and type in “slime”. Hit enter and you should find yourself at a CL-USER prompt within Emacs.

Now, actually learning to use SLIME is well beyond the scope of this entry. For that, I recommend Peter Seibel’s Practical Common Lisp. Chapter 2 covers getting around both in Emacs and SLIME.