[misc.misc] Lisp operators

dant@tekla.UUCP (02/26/87)

In article <517@cod.UUCP> rupp@cod.nosc.mil.UUCP (William L. Rupp) writes:
>In article <1277@beta.UUCP> hp@beta.UUCP (Akkana) writes:
>>
>
>>I knew I had joined the ranks of REAL Lisp programmers when I found out
>>that "cdr" was pronounced "could-er" instead of "cooder" the way the
>>books said.  (But how do you pronounce cadddadr?)
>
>I don't understand why a three letter command should not just be
>pronounced as its spelled; i.e. 'cee dee are.'  
>

Many years ago at school when I learned Lisp (I've never used it since) I
learned that there are essentially two operators in the language.  These
are "CAR" and "CDR".  ("CDR" *is* pronounced "could-er".)  The interesting
thing about them is their origin.  It seems that on the machine where
the language was developed (at Stanford, I think; don't know what machine)
there were two registers: a Current Address Register (CAR) and a Current
Decrement Register (CDR).

I always thought that this was perfect example of a machine independent
language.

((;-))   <== Lisp smiley

---
Dan Tilque
dant@tekla.tek.com

bobr@zeus.UUCP (02/26/87)

	(But how do you pronounce cadddadr?)

Why, don't cha know?

car	= car
cdr	= coulder
caar	= cahar
cadr	= cahder
cdar	= couldaher
cddr	= coulduhder
caaar	= cahahaher
caadr	= cahader
cadar	= cahdauher
caddr	= cahduhder
cdaar	= couldahaher
cdadr	= couldader
cddar	= coulduhdaher
cdddr	= couldduhduhder

Following these simple rules, then "cadddadr" would be pronounced:

cahduhduhdahder.

Follow in your books as we learn our next three words in Turkish. :-)

-- 
Robert Reed, Tektronix CAE Systems Division, bobr@zeus.TEK

kaufman@Shasta.UUCP (02/26/87)

In article <1297@zeus.TEK.COM> dant@tekla.tek.com (Dan Tilque) writes:
>learned that there are essentially two operators in the language.  These
>are "CAR" and "CDR".  ("CDR" *is* pronounced "could-er".)  The interesting
>thing about them is their origin.  It seems that on the machine where
>the language was developed (at Stanford, I think; don't know what machine)
>there were two registers: a Current Address Register (CAR) and a Current
>Decrement Register (CDR).

>I always thought that this was perfect example of a machine independent
>language.

The IBM 709 and 7090 had 36 bit words, which were formatted as follows
for instructions:
   3 bits - Flag
  15 bits - Decrement field (used for index modification)
   3 bits - Tag
  15 bits - Address field (obvious use)

Memory size was 32K words (15 bit address).  What more natural thing to
do in a list structure than store one address in the Address field,
and one address in the Decrement field of a list token.  The Flag bits
were used by the garbage collector marking algorithm, and the Tag bits
for typing (Atoms, etc), or perhaps the other way around.

John McCarthy was at MIT when LISP was invented..

ron@brl-sem.UUCP (02/26/87)

In article <1297@zeus.TEK.COM>, dant@tekla.tek.com.tek.com (Dan Tilque;1893;92-789;LP=A;60sB) writes:
> the language was developed (at Stanford, I think; don't know what machine)
> there were two registers: a Current Address Register (CAR) and a Current
> Decrement Register (CDR).

The machine is an IBM 7094 (or one of its relatives).  There were two
big banks of 18 switches and lights side by side.  The address register
and the data register.  The C stands for contents not current  I believe.
I was walking through the University of Maryland one day with one of the
MIT lisp hackers and we stumbled accross an old 7094 console and his eyes
got kind of misty and said "This is where it all began."

suhre@trwrb.UUCP (02/26/87)

In article <1297@zeus.TEK.COM> dant@tekla.tek.com (Dan Tilque) writes:
>
>Many years ago at school when I learned Lisp (I've never used it since) I
>learned that there are essentially two operators in the language.  These
>are "CAR" and "CDR".  ("CDR" *is* pronounced "could-er".)  The interesting
>thing about them is their origin.  It seems that on the machine where
>the language was developed (at Stanford, I think; don't know what machine)
>there were two registers: a Current Address Register (CAR) and a Current
>Decrement Register (CDR).
The IBM 7094 had a 36 bit word, which could contain two 15 bit fields.
One was the "address", the other the "decrement".  There were LXA (Load
Index in Address), SXA, LXD, and SXD instructions.  I thought the acronyms
were CAR = Contents of Address Register, CDR = Contents of Decrement
Register.

So, the names CAR and CDR were spawned by the hardware implementation,
but not required by it.

-- 
Maurice Suhre

{decvax,sdcrdcf,ihnp4,ucbvax}!trwrb!suhre

elisa@mmm.UUCP (03/02/87)

> In article <1297@zeus.TEK.COM>, dant@tekla.tek.com.tek.com (Dan Tilque;1893;92-789;LP=A;60sB) writes:

re: car, cdr

> > there were two registers: a Current Address Register (CAR) and a Current
> > Decrement Register (CDR).

I thought it was *Contents* of Address Register and Decrement Register.  My 
book, Structure and interpretation of Computer Programs by Abelson & Sussman
of MIT says so, on p. 76.


-- 
@>--->---- 
Elisa Collins  3M  St. Paul, MN ...!ihnp4!mmm!elisa
Not necessarily the opinions of 3M