Lisp dialects
December 20, 2005 11:05 AM   Subscribe

What dialect of Lisp should I learn?

My criteria are: Favoring widely-used versions; favoring versions with free compilers available for Linux; favoring versions with helpful tutorials and documentation; disfavoring versions that include lots of non-functional programming extensions. Speed and memory efficiency are not priorities. This is for academic interest only, not to make myself more employable, and not because I intend to write any useful code in Lisp. I have worked in several other languages already; all the major (and some minor) imperative languages, plus Haskell, which is so far my sole functional language.
posted by profwhat to Computers & Internet (14 answers total)
 
I'd suggest Common LISP. There's a tasty book on it by Paul Graham. You can get a CLISP interpreter with relative ease.

Also, you might consider learning Emacs LISP.

The thing that's going to kill you, though, is the complete lack of system libraries.
posted by Netzapper at 11:25 AM on December 20, 2005


scheme.

drscheme is an excellent first scheme environment with a nice editor and loads of libraries and documentation.

chicken is an excellent scheme compiler (with a very ugly web page).

the structure and interpretation of computer programs is an excellent book on the foundations of algorithmics which also happens to have the side effect of teaching scheme.

teach yourself scheme in fixnum days is a practical guide to learning scheme.
posted by paradroid at 11:26 AM on December 20, 2005


I recently learned Scheme for school using the SICP book linked by paradroid.

Bonus: SICP is in the Jargon file!
posted by adamwolf at 11:39 AM on December 20, 2005


I won't hazard a suggestion as to which you should learn--I say all of 'em.

However, I will add two other dialects to the list:

Logo

A great set of books that explore computer science: Computer Science Logo Style, There are links to interpreters on that page too.

Dylan

Last year's second place ICFP winners used Dylan (read about there use of Dylan).
Here's a compiler: Gwydion Dylan
posted by AmaAyeRrsOonN at 11:42 AM on December 20, 2005


The CLiki list of free Common Lisp Implementations with a nice table comparing them at the bottom.

Just my opinion. clisp offers the best "shell-scriptable" implementation. CMUCL seems the most stable to me. And SBCL seems to break compatibility with emacs SLIME on a frequent basis.

Emacs lisp, common lisp, and scheme are subtly different beasts. While there is some cross-over between the two, there are enough differences that you want to mix the two with caution.
posted by KirkJobSluder at 11:46 AM on December 20, 2005


another interesting language, fairly far removed from lisp but still in the semifunctional family is ocaml. nowhere near as elegant as scheme, but it can produce very fast code for such a high level language.
posted by paradroid at 11:48 AM on December 20, 2005


Drat, that should be "read about their use of Dylan"...

Now for some content:

If you're going with Common Lisp, Practical Common Lisp is a pretty good book to get your feet wet, or for fun, try casting some SPELs in Lisp.
posted by AmaAyeRrsOonN at 11:56 AM on December 20, 2005


I would second Scheme. I think it's a pretty easy functional programming language to pick up. It also has a lot of parentheses.
posted by chunking express at 12:07 PM on December 20, 2005


Based on the specific criteria you mention (e.g. "disfavoring versions that include lots of non-functional programming extensions"), you should start with Scheme. If you find that box too small, then I'd give Dylan a thumbs up. If you favor pragrammatism and productivity over purity, then go for Common Lisp.

Disclaimer: I spent a significant portion of my working life on the design of Dylan, but haven't been doing that sort of thing for ten years or more.
posted by alms at 12:18 PM on December 20, 2005


Oh, is that disfavoring non functional-programming extensions?

Or is it disfavoring non-functional programming extensions?
posted by KirkJobSluder at 12:21 PM on December 20, 2005


hmmm. how/what do you want to learn? if you're interested in ai (particularly old-fashioned ai), norvig's book is fascinating, and uses common lisp. if you're interested in looking at something new from a language perspective then macros are the obvious focus point, and paul graham's "on lisp" is a brilliant introduction to them (common lisp again). another interesting language aspect is the common lisp object system - if you want to understand how an extremely frexible object system can be built within a language then "the art of the metaobject protocol" is for you.

on the other hand, if you're more interested in looking at general programming - a fresh look at how to solve problems you've already met in your work - then working through sicp with dr scheme would make more sense.

otherwise, given that you're not doing anything industrial strength, and that this is mainly for "the good of your programming soul", you could choose almost any dialect. you might choose based on support for hygienic macros, or the module system, or whether there's some interesting integration with static typing.

(but of course, nothing beats haskell ;o)
posted by andrew cooke at 1:17 PM on December 20, 2005


Python! Har har. Seriously, try Practical Common Lisp.
posted by Nelson at 2:23 PM on December 20, 2005


DrScheme is good, and I don't just say that because I work on the implementation. (We just released a major new version, v300, a couple days ago, incidentally, so grab it again even if you've already got an old copy.) DrScheme is designed explicitly for playing and learning, as opposed to running real fast, which sounds like maybe what you're after.
posted by jacobm at 3:23 PM on December 20, 2005


disfavoring versions that include lots of non-functional programming extensions

that suggests scheme rather than common lisp, but you can always ignore the "mutable" commands (which tend to be prefixed with n, iirc, although i can't remember why).
posted by andrew cooke at 4:32 AM on December 21, 2005


« Older Who is responsible for a stolen and "washed" check...   |   Excel sorting Newer »
This thread is closed to new comments.