Anxious Mo-Fo

An anxious m*********** from Seattle

LISP poetry

leave a comment »

Sometime in the mid ’90s, in Magus Books, a used bookstore near the University of Washington in Seattle, I saw – but, to my regret, did not purchase – a curious book called LISP Poetry. The cover was mimeographed onto light green paper which was slightly thicker than the paper used for the inside pages. Both the cover and the inside pages were composed of letter paper folded in half. The cover featured the title, “LISP Poetry”, and an inept drawing of William Shakespeare, with his face replaced with a terminal screen upon which blurry (apparently) LISP code appeared, shaped more or less into a crude representation of a face, which was smiling. No author was listed.

Opening the book, one saw that the inside pages were also mimeographed. There was no copyright notice, nor was there mention of a publisher. For the first ten of the book’s thirty-two pages, each spread consisted of a left page of LISP code printed in Courier and a right page of English text printed in Computer Modern or Bookman. The remainder of the book was devoted to two longer works, eighteen pages of LISP code followed by four pages of poetry.

The poetry did not appear to have much to do with LISP (except, peripherally, the fourth poem, a limerick which rhymed “Stallman” with a filthy phrase ending with “almond”), nor did the LISP code appear to have much to do with poetry. After noticing that the first few poems shared words with the LISP code on their facing pages, I gathered that the purpose of the LISP code was to produce the poem as its output. Often the LISP code provided misdirection to a human reading it, turning one phrase into another. (The longest program transformed – using hard-coded substitutions, not general purpose translation – a poem in Latin into a poem in English.) As an example of the kind of game these poets played, here is a simple program of my own invention:

(setq But "N") (setq Nan "u") (setq Nantucket " t")
(setq Ran "c") (setq There "An") (setq Who "he")
(setq a ",") (setq a_man "t") (setq all_his "uc")
(setq away "k") (setq bucket " ") (setq cash "ke")
(setq daughter "n") (setq from "or") (setq his "a")
(setq in "t") (setq kept " b") (setq man " f")
(setq named "t") (setq once "d ") (setq was_a "as")
(setq with "e")
(message "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"


         There once was_a man from Nantucket
         Who kept all_his cash in a bucket
           But his daughter named Nan
           Ran away with a_man)

Years after finding the book, I found a set of LaTeX files – no longer on my hard drive, and which I can no longer find online – with more examples, some of which were much more baroque than even the longest poem in the book. While none of the examples were dated, some were apparently quite old: one mentioned the release of Emacs 16, another celebrated Minsky’s 50th birthday.

There were at least three ways in which these pairs of LISP programs and poems could be appreciated: (1) the qualities of the poem produced as output, (2) the English-language semantics of the LISP program (e.g., in my poor example above, the variable names spell out the first four lines of a limerick), and (3) the cleverness of the LISP code. A fourth and more peripheral way is the appearance of the code: as with many high level languages, white space is generally not relevant to the compiler, and one clever programmer exploited this to produce a LISP program in the shape of a fish which produced a short bit of doggerel which began something like “Beloved, as the leaping salmon leap’th / So my heart leap’th to thine…”

Unlike a Perl poet, a LISP poet is constrained by a relative lack of keywords in the language which are also words in the English language. Where a Perl poet would use a Perl keyword like “bless” or “return”, a LISP poet would use function names and variable names (which must be defined before they are used, which occasionally led to LISP programs with a very long preamble in which function names and variable names are defined, with the part of interest to human readers appearing at the very end). Using variable names and function names, as opposed to language keywords, is neutral to the human language of the poet, so LISP poetry was multilingual to a degree which Perl poetry is not: In that lost tarball of LaTeX files, I saw poetry in French, Spanish, and Latin. (I did not see a type of hackneyed work produced by some Perl poets, code meant to be read as a poem by humans which does not actually produce any output when run, e.g., “return $my_beloved; my $love; bless $me, $with_your_return; i_love_you();”, which can be considered tantamount to a long chain of irritating puns.)

As far as I know, LISP poetry is an art form which can be considered lost: in spite of my best efforts, I have been unable to find again the examples I saw years ago, and I know of no new efforts in this area.

Update August 17th: This post is a joke: I made it up. I wrote it for my own amusement, not expecting that anyone would actually read it – but, now that it’s getting the number of hits that it is, it seems reasonable to add a disclaimer which is a wee bit stronger than the “Fiction” tag applied to it at its birth. If I’m lucky, perhaps the Internets will make it true.

Update August 18th: Thanks to reddit user gst for linking to this post.

Written by JPP

August 16, 2008 at 11:17 am

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: