The accursed program feature. Written; not tested.
This commit is contained in:
parent
dd6a9f7fbc
commit
022e409c51
24 changed files with 345 additions and 78 deletions
|
|
@ -1,7 +1,16 @@
|
|||
# Further Reading
|
||||
|
||||
1. [CODING for the MIT-IBM 704 COMPUTER, October 1957](http://bitsavers.org/pdf/mit/computer_center/Coding_for_the_MIT-IBM_704_Computer_Oct57.pdf)
|
||||
This paper is not about Lisp. But it is about the particular individual computer on which Lisp was first implemented, and it is written in part by members of the Lisp team. I have found it useful in understanding the software environment in which, and the constraints under which, Lisp was written.
|
||||
2. [MIT AI Memo 1, John McCarthy, September 1958](https://www.softwarepreservation.org/projects/LISP/MIT/AIM-001.pdf)
|
||||
This is, as far as I can find, the earliest specification document of the Lisp project.
|
||||
3. [Lisp 1 Programmer's Manual, Phyllis Fox, March 1960](https://bitsavers.org/pdf/mit/rle_lisp/LISP_I_Programmers_Manual_Mar60.pdf)
|
||||
4. [Lisp 1.5 Programmer's Manual, Michael I. Levin, August 1962](https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf#page=81)
|
||||
This book is essential reading: it documents in some detail the first fully realised Lisp language system.
|
||||
5. [Early LISP History (1956 - 1959), Herbert Stoyan, August 1984](https://dl.acm.org/doi/pdf/10.1145/800055.802047#page=3)
|
||||
|
||||
|
||||
6. [The Roots of Lisp, Paul Graham, 2001](http://www.paulgraham.com/rootsoflisp.html)
|
||||
6. [The Revenge of the Nerds, Paul Graham, 2002](http://www.paulgraham.com/icad.html)
|
||||
This is mainly about why to use Lisp as a language for modern commercial software, but has useful insights into where it comes from.
|
||||
> So the short explanation of why this 1950s language is not obsolete is that it was not technology but math, and math doesn't get stale.
|
||||
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
**Massachusetts Institute of Technology**
|
||||
|
||||
> John McCarthy
|
||||
> Paul W. Abrahams
|
||||
> Daniel J. Edwards
|
||||
> Timothy P. Hart
|
||||
> [John McCarthy](https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist))
|
||||
> [Paul W. Abrahams](https://mitpress.mit.edu/author/paul-w-abrahams-31449/)
|
||||
> [Daniel J. Edwards](https://www.chessprogramming.org/Daniel_Edwards)
|
||||
> [Timothy P. Hart](https://www.chessprogramming.org/Timothy_Hart)
|
||||
|
||||
> The M. I.T. Press
|
||||
> Massachusetts Institute of Technology
|
||||
|
|
@ -43,11 +43,11 @@ The over-all design of the LISP Programming System is the work of John McCarthy
|
|||
|
||||
This manual was written by Michael I. Levin.
|
||||
|
||||
The interpreter was programmed by Stephen B. Russell and Daniel J. Edwards. The print and read programs were written by John McCarthy, Klim Maling, Daniel J. Edwards, and Paul W, Abrahams.
|
||||
The interpreter was programmed by [Stephen B. Russell](https://en.wikipedia.org/wiki/Steve_Russell_(computer_scientist)) and Daniel J. Edwards. The print and read programs were written by John McCarthy, Klim Maling, Daniel J. Edwards, and Paul W. Abrahams.
|
||||
|
||||
The garbage collector and arithmetic features Were written by Daniel J. Edwards. The compiler and assembler were written by Timothy P. Hart and Michael I. Levin. An earlier compiler was written by Robert Brayton.
|
||||
|
||||
The "LISP 1 Programmer's Manual" March 1, 1960, was written by Phyllis A. Fox. Additional programs and suggestions were contributed by the following members of the Artificial Intelligence Group of the Research Laboratory of Electronics: Marvin L. Minsky, Bertram Raphael, Louis Hodes, David M. R. Park, David C. Luckham, Daniel G. Bobrow, James R. Slagle, and Nathaniel Rochester.
|
||||
The "LISP 1 Programmer's Manual" March 1, 1960, was written by [Phyllis A. Fox](https://en.wikipedia.org/wiki/Phyllis_Fox). Additional programs and suggestions were contributed by the following members of the Artificial Intelligence Group of the Research Laboratory of Electronics: Marvin L. Minsky, Bertram Raphael, Louis Hodes, David M. R. Park, David C. Luckham, Daniel G. Bobrow, James R. Slagle, and Nathaniel Rochester.
|
||||
|
||||
August 17, 1962
|
||||
|
||||
|
|
@ -3347,7 +3347,7 @@ eval[form; a]= [
|
|||
eq[car[form]; QUOTE] -> cadr[form];
|
||||
eq[car[form]; FUNCTION] -> list[FUNARG; cadr[form]; a];
|
||||
eq[car [form]; COND] -> evcon[cdr[form]; a];
|
||||
eq[car [form]; PROG] -> prog[cdr [form]; a];
|
||||
eq[car [form]; PROG] -> prog[cdr[form]; a];
|
||||
atom[car[form]] -> [get[car [form]; EXPR] ->
|
||||
apply[expr; evlis[cdr[form]; a]; a];
|
||||
get[car[form]; FEXPR] ->
|
||||
|
|
@ -3375,27 +3375,18 @@ The PROG feature is an FSUBR coded into the system. It can best be explained in
|
|||
English, although it is possible to define it by using M-expressions.
|
||||
|
||||
1. As soon as the PROG feature is entered, the list of program variables is used
|
||||
to make a new list in which each one is paired with NIL. This is then appended to the
|
||||
current a-list. Thus each program variable is set to NIL at the entrance to the program.
|
||||
to make a new list in which each one is paired with NIL. This is then appended to the current a-list. Thus each program variable is set to NIL at the entrance to the program.
|
||||
2. The remainder of the program is searched for atomic symbols that are under-
|
||||
stood to be location symbols. A go-list is formed in which each location symbol is
|
||||
paired with a pointer into the remainder of the program.
|
||||
3. When a set or a setq - is encountered, the name of the variable is located on the
|
||||
a-list. The value of the variable (or cs of the pair) is actually replaced with the new
|
||||
value.
|
||||
stood to be location symbols. A go-list is formed in which each location symbol is paired with a pointer into the remainder of the program.
|
||||
3. When a set or a setq - is encountered, the name of the variable is located on the a-list. The value of the variable (or cdr of the pair) is actually replaced with the new value.
|
||||
|
||||
-----
|
||||
1. The value of get is set aside. This is the meaning of the apparent free or unde-
|
||||
fined variable-
|
||||
2. In the actual system this is handled by an FSUBR rather than as the separate special
|
||||
case as shown here.
|
||||
1. The value of get is set aside. This is the meaning of the apparent free or undefined variable.
|
||||
2. In the actual system this is handled by an FSUBR rather than as the separate special case as shown here.
|
||||
|
||||
<a name="page72">page 72</a>
|
||||
|
||||
If the variable is bound several times on the a-list, only the first or most recent
|
||||
occurrence is changed. If the current binding of the variable is at a higher level than
|
||||
the entrance to the prog, then the change will remain in effect throughout the scope
|
||||
of that binding, and the old value will be lost.
|
||||
If the variable is bound several times on the a-list, only the first or most recent occurrence is changed. If the current binding of the variable is at a higher level than the entrance to the prog, then the change will remain in effect throughout the scope of that binding, and the old value will be lost.
|
||||
|
||||
If the variable does not occur on the a-list, then error diagnostic `A4` or `A5` will occur.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue