[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Date: Wed, 11 May 88 12:36:21 EDT
From: Jonathan A Rees <JAR@ai.ai.mit.edu>
Date: 10 May 88 02:16:56 GMT
From: firstname.lastname@example.org (Gerald Ostheimer)
*** Why didn't the designers of Scheme include locations (~anonymous
variables) as first-class values in the language? ***
A variable would then be an identifier bound to a location, and we
would have true constants as well, by binding identifiers to values
that are not locations. All identifier bindings would then be
irreversible, only locations could be updated (thus indirectly
updating identifiers bound to them).
I think Steele considers this possibility in one of the notes in the
Rabbit tech report.
If so, I must yield credit to intellectual influence from Hewitt's PLASMA
system and Wegbreit's EL1 (ECL) language and system at Harvard. In EL1
everything was consistently an lvalue. In effect, you were always one
level of pointer indirection removed from the way you would do it in Lisp.
To pass a cons cell to a subroutine, the argument register would contain
the address of a location containing the pointer to the two-word cell.
Taking the car of this cons cell resulted in the address of the cell (i.e.,
the address of the memory word containing the CAR pointer), and taking the
cdr resulted in the address of the cell plus 1. PDP-10 byte pointers
made all this fairly convenient for objects smaller than one word.
- From: Jonathan A Rees <JAR@AI.AI.MIT.EDU>