I’ve Consed Every Pair

Peter Norvig
2 min readApr 30, 2020

Back when cafes were open, I met an enthusiastic programmer who wanted to tell me how awesome the Clojure language is. This is a sentiment with which I wholeheartedly agreed, and we had a great discussion. But I found it somewhat ironic that this person, who recognized me as a Python programmer, did not realize that I had a long 15-year history of using Lisp (which Clojure is a dialect of) as my primary language. It reminded me of this Johnny Cash song:

so I wrote down these lyrics:

I’ve Consed Every Pair

I was totin’ my laptop at a trendy Palo Alto cafe
When I passed a hacker bro’ with a new 16 inch display
“If you’re goin’ to be hacking, Mack, at my table you can rest”
And so I climbed into a seat and then I started up a test
He asked me if I’d programmed with the Clojure brand
And I said, “Listen, I’ve used every repl in this here land”

I’ve consed every pair, man
I’ve consed every pair, man
Signaled every err, man
I’ve done so much software, man
Of repls I’ve a’had my share, man
I’ve consed every pair

I’ve used Franz Lisp, LM Lisp, Common Lisp, PLT
MacLisp, ZetaLisp, Emacs Lisp, and Yale’s T
Vaxen, Explorer, Symbolics, PDP
Sun station, PC, MacBook, Blackberry
Racket, Pyret, JScheme, R7
R6, R5, R4, I’m in heaven

I’ve consed every pair, man
I’ve consed every pair, man
Signaled every err, man
I’ve done so much software, man
Of repls I’ve a’had my share, man
I’ve consed every pair

I’ve used deftype, ftype, machine-type, define
lisp-type, typecase, check-type, read-line
class-name, class-of, defclass, load-time
base-string, write-string, string-trim, run-time
make-list, make-hash, make-node, string-make
make-array, display, two-way, for Pete’s sake

I’ve consed every pair, man
I’ve consed every pair, man
Signaled every err, man
I’ve done so much software, man
Of repls I’ve a’had my share, man
I’ve consed every pair

I’ve used arrayp, boundp, minusp, iterator
constantp, equalp, typep, numerator
bit-nor, vector, ffloor, butlast,
special or, xor, err-or, broadcast,
truncate, conjugate, concatenate, package-error,
allocate, update, random-state, what a terror.

I’ve consed every pair, man
I’ve consed every pair, man
Signaled every err, man
I’ve done so much software, man
Of repls I’ve a’had my share, man
I’ve consed every pair

--

--

Peter Norvig

Fellow at Stanford's Human-Centered AI Institute and a researcher at Google.