( Storage model

Info Catalog ( External representations ( Basic concepts ( Proper tail recursion
 3.4 Storage model
 Variables and objects such as pairs, vectors, and strings implicitly
 denote locations or sequences of locations.  A string, for example,
 denotes as many locations as there are characters in the string.
 (These locations need not correspond to a full machine word.) A new
 value may be stored into one of these locations using the string-set!
 procedure, but the string continues to denote the same locations as
 An object fetched from a location, by a variable reference or by a
 procedure such as `car', `vector-ref', or `string-ref', is equivalent
 in the sense of `eqv?' (section  Equivalence predicates) to the
 object last stored in the location before the fetch.
 Every location is marked to show whether it is in use.  No variable or
 object ever refers to a location that is not in use.  Whenever this
 report speaks of storage being allocated for a variable or object, what
 is meant is that an appropriate number of locations are chosen from the
 set of locations that are not in use, and the chosen locations are
 marked to indicate that they are now in use before the variable or
 object is made to denote them.
 In many systems it is desirable for constants (i.e. the values of literal
 expressions) to reside in read-only-memory.  To express this, it is
 convenient to imagine that every object that denotes locations is
 associated with a flag telling whether that object is mutable or immutable.
 In such systems literal constants and the strings returned by
 `symbol->string' are immutable objects, while all objects created by
 the other procedures listed in this report are mutable.  It is an error
 to attempt to store a new value into a location that is denoted by an
 immutable object.
Info Catalog ( External representations ( Basic concepts ( Proper tail recursion
automatically generated byinfo2html