/usr/share/doc/r5rs-doc/r5rs/Storage-model.html is in r5rs-doc 20010328-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | <html lang="en">
<head>
<title>Storage model - Revised(5) Scheme</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Revised(5) Scheme">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Basic-concepts.html#Basic-concepts" title="Basic concepts">
<link rel="prev" href="External-representations.html#External-representations" title="External representations">
<link rel="next" href="Proper-tail-recursion.html#Proper-tail-recursion" title="Proper tail recursion">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<a name="Storage-model"></a>
<p>
Next: <a rel="next" accesskey="n" href="Proper-tail-recursion.html#Proper-tail-recursion">Proper tail recursion</a>,
Previous: <a rel="previous" accesskey="p" href="External-representations.html#External-representations">External representations</a>,
Up: <a rel="up" accesskey="u" href="Basic-concepts.html#Basic-concepts">Basic concepts</a>
<hr>
</div>
<h3 class="section">3.4 Storage model</h3>
<p><a name="index-g_t_0040w_007bstorage-model_007d-67"></a>
<p>Variables and objects such as pairs, vectors, and strings implicitly
denote locations or sequences of locations. A string, for
<a name="index-g_t_0040w_007blocation_007d-68"></a>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 <tt>string-set!</tt> procedure, but
the string continues to denote the same locations as before.
<p>An object fetched from a location, by a variable reference or by
a procedure such as ‘<samp><span class="samp">car</span></samp>’, ‘<samp><span class="samp">vector-ref</span></samp>’, or ‘<samp><span class="samp">string-ref</span></samp>’, is
equivalent in the sense of <code>eqv?</code>
<!-- and \ide{eq?} ?? -->
(section see <a href="Equivalence-predicates.html#Equivalence-predicates">Equivalence predicates</a>)
<a name="index-g_t_0040w_007beqv_003f_007d-69"></a>to the object last stored in the location before the fetch.
<p>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.
<p>In many systems it is desirable for constants (i.e. the values of
<a name="index-g_t_0040w_007bconstant_007d-70"></a>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
<a name="index-g_t_0040w_007bmutable_007d-71"></a>immutable. In such systems literal constants and the strings
<a name="index-g_t_0040w_007bimmutable_007d-72"></a>returned by <code>symbol->string</code> are immutable objects, while all objects
<a name="index-g_t_0040w_007bsymbol_002d_003estring_007d-73"></a>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.
</body></html>
|