[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
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. 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.).
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