[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: umb!gerald@husc6.harvard.edu  (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.