Thanks for that bit of historical information. Things always make more sense in
context. When I learned lisp on a B6700 it was hard to understand and harder to
program. With this bit of context lisp now makes a lot more sense, and looking
back if I knew this then I’m sure I would have grasped the language much more
quickly.
David
> On Oct 2, 2019, at 12:02 PM, Rich Alderson via cctech <[email protected]>
> wrote:
>
> From: Mark Kahrs
> Sent: Tuesday, October 01, 2019 7:24 PM
>
>> The first implementation was done for the 7090 by McCarthy (hence CAR and
>> CDR --- Contents of Address Register and Contents of Decrement Register).
>
> In the 70x series of IBM scientific systems (704, 709, 7040, 7090, 7044,
> 7094),
> the word "register" referred to memory locations rather than to the
> accumulator
> or multiplier/quotient. Each memory register was 36 bits long, and could be
> treated as 4 fields: A 15 bit address, a 15 bit decrement, a 3 bit tag, and a
> 3 bit index selector.
>
> In the earliest implementation of LISP, there were 4 functions which returned
> the different parts of a register: CAR, CDR, CTR, and CIR. These were
> abbreviations for "Contents of the {Address, Decrement, Tag, Index} PART OF
> THE
> Register", not "Contents of the {Address, Decrement} Register" as is so often
> misstated.
>
> Rich
>
> NB: Information from a talk given on the history of Lisp by Herbert Stoyan at
> the 1984 ACM Conference on Lisp and Functional Programming Languages, and
> later
> verified by personal inspection of the code.