Learning Lisp

In my “copious spare time,” or at least during my trip home to see family, I’m planning to try and brush up on my Lisp knowledge. Just as learning Smalltalk has expanded my understanding of object-oriented programming and especially meta-programming, I think that adding Lisp will expand my understanding of functional programming and give me some new perspectives.

My experience in the past is limited to two phases. One, when I used to write massive amounts of elisp (Emacs Lisp), and another when I actually had one of various Lisp machines on my desk. I actually still own a couple Lisp machines, including an LMI CADR, a Xerox Dandelion (1108) and a TI Explorer. I’m not sure the working status of them, honestly, but two (TI, LMI) use Zetalisp and the Xerox uses Interlisp. Honestly, I’ve not touched them in a decade, and they’ve stayed in storage.

Now seems like a good time, and I decided to download a couple different environments to try out. First, LispWorks , which has a free version that basically is only missing a few features, and has a time-limit on it (per session, not days). The other is the venerated Allegro Common Lisp , which I had actually dabbled on back in the early Macintosh days. Both, unfortunately, are outrageously expensive for their “commercial” versions, at least for a home user. We shall see. I also have both CMUCL and SBCL (a derivitive of CMUCL) on my UNIX box at home, but the development in SLIME pales compared to the LispWorks or Allegro environment. Free, however, is a good price for me. I have to admit that from memory, nothing can come close to the experience yet of a true Lisp machine.

What I’ve found is that the parenthesis that people ridicule in Lisp actually do disappear after a few minutes of actual code writing. Functional programming, on the other hand, is still a bit foreign to me.