Interesting Modern Lisps

Lisp is pretty much my favorite language, so here's a list of the dialects that I think are most interesting:

  1. Common Lisp - An oldie but a goodie. Since the publication of Seibel's book, Common Lisp is experiencing something of a renaissance.
  2. Scheme - It's not just for teaching.
  3. Clojure - Lisp on the JVM? With Java interoperability? Yeah.
  4. LFE - Lisp Flavored Erlang. LFE : Erlang :: Clojure : Java.
  5. Arc - Just because.

Note that I am specifically omitting Emacs lisp here. I cannot for the life of me understand why Stallman did not choose Scheme instead of doing his own thing.

Why do I like Lisp? Here are a few reasons:

  1. Macros. As a C programmer, I learned to despise macros in the preprocessor, but Lisp macros are totally different. They are functions that return expressions, not tokens that trigger textual substitutions and change the underlying lexicographical structure of programs.
  2. Homoiconicity. The homoiconic structure of Lisp enables most of the rest of the magic.
  3. Simplicity. Once you get the hang of it, Lisp is simple. You can learn the basics of the syntax in a couple of hours, and all else follows. Bravo!

There are, of course, other reasons. But these are the basics, and they all lead to two things: power and expressiveness. Lisp is singularly powerful because of it's ability to manipulate itself, and this makes it wonderfully expressive. I realized at one point, while really learning Common Lisp, that I was being far more productive in Lisp than I am in most languages: things that were difficult to write in, say, C or even SML were simple in Lisp. And that's what it's all about, right?