The Boston Diaries

The ongoing saga of a programmer who doesn't live in Boston, nor does he even like Boston, but yet named his weblog/journal “The Boston Diaries.”

Go figure.

Monday, July 01, 2002

(l (i (s (p () (i (s () (f (u (n)))))))))

My first exposure to Lisp was in the summer of '86 in an introductory class on artificial intelligence. My impression of the language was that it was mildly interesting but littered with CARs, CDRs and parentheses. Lots of parentheses.

It also doesn't bode well when a typical fragment of Lisp looks like:

(DEFUN VALID-RANGE (LIST)
    (IF (NUMBERP (CAR LIST))
        (LET ((MIN (CAR LIST))   ;gets SETQed below
              (MAX (CAR LIST)))  ;gets SETQed below
             (DO ((ELS (CDR LIST) (CDR ELS)))
                 ((NULL ELS)
                  (LIST MIN MAX))
                 (LET ((CAND (CAR ELS)))
                      (COND ((NOT (NUMBERP CAND))
                             (RETURN 'INVALID))
                             ;; at most one of the next
                             ;; two cases can occur.
                             ((< CAND MIN) (SETQ MIN CAND)) ((> CAND MAX)
                              (SETQ MAX CAND))))))
        'INVALID))

Someone well versed in Lisp would be able to see what that does (much like someone well versed in Perl would be able to tell what $data =~ m/^211\s+\d+\s+(\d+)\s+(\d+)\s/; does—maybe).

But after reading Paul Graham's article about using Lisp for web-based applications and hearing the remark that XML is nothing more than Lisp in drag, I figured it may be time to give Lisp another look.

The two major dialects of Lisp today are Scheme and Common Lisp. Since Scheme is conceptually simpler and cleaner than Common Lisp, I decided to give it a try. The MIT version requires one to already have the MIT version installed before you can install the MIT version (and that's another lovely feature about Lisp—recursion to an infinite degree (or until you run out of memory)).

Off to try Common Lisp.

Oddly enough, the CMUCommon Lisp also requires an installation of CMUCommon Lisp before you can install CMUCommon Lisp.

Lovely.

Fortunately, Gnu (which itself is a recursive ancronym) has both a version of Scheme and Common Lisp that don't require a pre-existing installation to install.

Another thing I've come to realize is that Lisp, much like C++, accreted features over it's current 54 year history so quite a bit of arcana is needed to successfully write programs in it. Then again, the principles underlying Lisp are so simple that, like Forth, one can implement a Lisp system (functioning, if limited) in a few days of work so maybe that's the way I should proceed.

Obligatory Picture

[It's the most wonderful time of the year!]

Obligatory Contact Info

Obligatory Feeds

Obligatory Links

Obligatory Miscellaneous

You have my permission to link freely to any entry here. Go ahead, I won't bite. I promise.

The dates are the permanent links to that day's entries (or entry, if there is only one entry). The titles are the permanent links to that entry only. The format for the links are simple: Start with the base link for this site: http://boston.conman.org/, then add the date you are interested in, say 2000/08/01, so that would make the final URL:

http://boston.conman.org/2000/08/01

You can also specify the entire month by leaving off the day portion. You can even select an arbitrary portion of time.

You may also note subtle shading of the links and that's intentional: the “closer” the link is (relative to the page) the “brighter” it appears. It's an experiment in using color shading to denote the distance a link is from here. If you don't notice it, don't worry; it's not all that important.

It is assumed that every brand name, slogan, corporate name, symbol, design element, et cetera mentioned in these pages is a protected and/or trademarked entity, the sole property of its owner(s), and acknowledgement of this status is implied.

Copyright © 1999-2021 by Sean Conner. All Rights Reserved.