Getting Started with Steel Bank Common Lisp
As some of you know, I've been a closet Lisp fan for several years. When I first joined Canonical
in 2008, I was hacking on Lisp in Python, so that I could do genetic programming
in Python. In fact, my first and only lightening talk at a Canonical sprint was on genetic algorithms and programming :-) (This was the same set of lightening talks that Vincenzo Di Somma
gave a wonderful presentation on his photography; completely unrelated: this is one of my favorite pics of Vincenzo
A few years later, I talked to Jim Baker
about Python's AST, and how one might be able to do genetic programming by manipulating it directly, instead of running a Lisp in Python.
Throughout all this time, I've been touching in with various community projects, hacking on various Lispy Things, reading, etc., but generally doing so quite quietly. Over the past few months, however, I've really gotten into it, and Lisp has become a real force in my life, rapidly playing just as dominant a role as Python.
has become active in several Lisp projects; as such, there are a great many things to share now. However, before I begin all that, I'd like to take an opportunity to get folks up and running with an example Lisp environment.
Future posts will explore various areas of Common Lisp, Scheme dialects, I/O loops, etc., but this one will provide a basis for all future posts that relate to Common Lisp and specifically the Steel Bank implementation
If you don't have SBCL (Steel Bank Common Lisp; a pun on it's source parent
, CMUCL), you need to install it:
apt-get for Lisp
- For Ubuntu (12.04 LTS has 1.0.55): $ sudo apt-get install sbcl
- Or you can go to the download page for everyone else.
Next, you'll need to install Quicklisp
(as you might have surmised, it's like Debian
for Common Lisp). The instructions on this page
will get you up and running with Quicklisp.
I like having quicklisp available when I run SBCL, so I did the following after installing Quicklisp (and you might want to as well) from the
The default installation of SBCL doesn't have readline support for the REPL, so using your arrow keys won't give you the expected result (your command history). To remedy that, you can use a readline wrapper. First, install
- Ubuntu: $ sudo apt-get install rlwrap
- Mac OS X: $ brew install rlwrap
Then, create the
ed 755 script
with the following content (make sure that
is in your path):
At which point you can run the following and have access to a command history in SBCL:
Why Steel Bank?CMUCL
gained an excellent reputation for being a highly performant, optimized implementation of Lisp. Based on CMUCL and continuing this tradition of excellent performance, SBCL's reputation preceded it. Over a range of different types of programs, SBCL not only compares favorably to other Lisp dialects, it seriously kicks ass all over
SBCL comes in at 8th place in that benchmark ranking, beating out Go in 9th place. In all the languages that made it into the Top 10, I've only ever touched C, C++, Java, Scala, Lisp, and Go. In my list, SBCL made the Top 5 :-) Regardless, of all of them, Lisp has the syntax a find most pleasurable. Given my background in Python, this is not surprising ;-)
Funny that you should ask... given my background with Twisted
, I'll give you one guess ;-)
Syndicated 2012-10-18 18:24:00 (Updated 2013-03-14 03:43:27) from Duncan McGreggor