Besides this first report (AIM-001), some of the reports following it in the next months are at least as important, by introducing other essential features of LISP and of many later languages:
1958-10: AIM-003 (the special form "maplist", i.e. a kind of "forall" iteration)
1958-10: AIM-004 (anonymous function definitions using "lambda"; the special form "select", which already at that early date had better syntax and semantics than the "switch" or "case" statements of later languages; the special form "search")
1959-03-13: AIM-008 (the special form "quote"; the special form "label", for defining anonymous recursive functions; also the special forms "and" and "or", a.k.a. McCarthy AND and McCarthy OR, inherited by many languages, including C)
It doesn't fully explain it, but drops some hints:
"The other main advantage of the algebraic notation for list structure processing was first noticed by Gelernter."
That's one of the authors of the Fortran-compiled List-processing Language (FLPL) in which thef unctions XCARF and XCDRF were introduced.
MacCarthy drops a hint that he actually had something to do with Gelernter's work and his choices:
"Algebraic notation for list processing is not used by
Net'Jell, Simon and Shaw, pelhaps beaause to do so is most
convenient when a compiler is available, but is used by
Gelernter in the geometry program. This was accomplished
(on the advice of the present author) by using the Fortran
compiler together with a set of machine language coded
functions for handling the primitive list processes that
go from one element of a list to the next"
> Despite its old age, Lisp remains mysterious to many of its admirers. The mysteries on one hand fascinate the language, on the other hand also obscure it. Following Stoyan but paying attention to what he has neglected or omitted, in this first essay of a series intended to unravel these mysteries, we trace the development of Lisp back to its origin, revealing how the language has evolved into its nowadays look and feel. The insights thus gained will not only enhance existent understanding of the language but also inspires further improvement of it.
I like how the McCarthy's paper maps the fundamental operations to machine instructions and memory model. It's like something you can actually implement.
Besides this first report (AIM-001), some of the reports following it in the next months are at least as important, by introducing other essential features of LISP and of many later languages:
1958-10: AIM-003 (the special form "maplist", i.e. a kind of "forall" iteration)
1958-10: AIM-004 (anonymous function definitions using "lambda"; the special form "select", which already at that early date had better syntax and semantics than the "switch" or "case" statements of later languages; the special form "search")
1959-03-13: AIM-008 (the special form "quote"; the special form "label", for defining anonymous recursive functions; also the special forms "and" and "or", a.k.a. McCarthy AND and McCarthy OR, inherited by many languages, including C)
Does anybody attempt to re-implment each variant of pre-LISP described in these reports? Even if it just for educational/historical purposes?
https://t3x.org/lispxv/index.html
If you ever wondered why Lisp has CAR and CDR, this explains it.
It doesn't fully explain it, but drops some hints:
"The other main advantage of the algebraic notation for list structure processing was first noticed by Gelernter."
That's one of the authors of the Fortran-compiled List-processing Language (FLPL) in which thef unctions XCARF and XCDRF were introduced.
MacCarthy drops a hint that he actually had something to do with Gelernter's work and his choices:
"Algebraic notation for list processing is not used by Net'Jell, Simon and Shaw, pelhaps beaause to do so is most convenient when a compiler is available, but is used by Gelernter in the geometry program. This was accomplished (on the advice of the present author) by using the Fortran compiler together with a set of machine language coded functions for handling the primitive list processes that go from one element of a list to the next"
I think the main reason is car/cdr permits elegant recursive solutions to problems.
more the names then the functions themselves
Reposting my now very old comment https://news.ycombinator.com/item?id=10502434 :
> Herbert Stoyan's historical work on early Lisp http://www.mcjones.org/dustydecks/archives/2010/07/29/185/ https://web.archive.org/web/20050617031004/http://www8.infor... is probably worth reading if one is seriously interested. (I haven't read much of it myself yet.) McCarthy praised Stoyan's work as better than his own 1979 HOPL paper ( http://www-formal.stanford.edu/jmc/history/lisp/lisp.html ): "Stoyan's reading of the early LISP documents gives a more accurate picture than my own memories turned out to have given." http://www-formal.stanford.edu/jmc/history/
> (As a side-note, I'm pretty sure that the broken, Wayback-beating link to "Lisp references according to Miller" on McCarthy's page is to this http://www.ai.sri.com/~delacaze/alu-site/alu/table/Lisp-Hist... document by Kent Pitman and Brad Miller (see http://www.ai.sri.com/~delacaze/alu-site/alu/table/history.h... ).)
From 2015-2018, "The Mysteries of Lisp -- I: The Way to S-expression Lisp" by Hong-Yi Dai https://arxiv.org/abs/1505.07375 ( https://news.ycombinator.com/item?id=31153702 )
> Despite its old age, Lisp remains mysterious to many of its admirers. The mysteries on one hand fascinate the language, on the other hand also obscure it. Following Stoyan but paying attention to what he has neglected or omitted, in this first essay of a series intended to unravel these mysteries, we trace the development of Lisp back to its origin, revealing how the language has evolved into its nowadays look and feel. The insights thus gained will not only enhance existent understanding of the language but also inspires further improvement of it.
I like how the McCarthy's paper maps the fundamental operations to machine instructions and memory model. It's like something you can actually implement.
Subset of Lisp 1.5 https://t3x.org/lispxv/index.html