[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


    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.  Probably it had to do with fitting in with existing
Lisp implementations gracefully and efficiently; there are some sticky
performance problems with locations (if pairs always consist of two
locations, how do you represent those locations?  Do you allocate three
objects when you create the pair?  That makes pairs too expensive.  Do
you allocate stored objects representing the locations on demand (like
locatives in T)?  That makes locations too expensive to be useful.  Are
locations immediate objects (like locatives on the MIT-derived Lisp
Machine systems)?  This complicates data representations and the gc.
Are pairs immutable?  What about arrays?  Etc. etc.).

    Any takers?

Plenty, including the designers of Algol 68, PLASMA, and ML.  If you did
this to Scheme I think you'd have quite a different language, different
enough that it would require significant changes to implementation