r7rs-small-texinfo

Unnamed repository; edit this file 'description' to name the repository.
git clone https://kaka.farm/~git/r7rs-small-texinfo
Log | Files | Refs | README

commit 28a58cf7d705a3b9122ff0b222317d6b51894a13
parent 29b9a0af737069a88a225e822b9da04df3905360
Author: Wolfgang Corcoran-Mathe <wcm@sigwinch.xyz>
Date:   Wed,  7 Feb 2024 15:14:20 -0500

Be a bit more specific about @cindex placement.

Diffstat:
Mdoc/r7rs-small/basic-concepts.texinfo | 21+++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/doc/r7rs-small/basic-concepts.texinfo b/doc/r7rs-small/basic-concepts.texinfo @@ -17,8 +17,6 @@ @cindex syntactic keyword @cindex variable @cindex binding -@cindex binding construct -@cindex bound @cindex global environment An identifier can name either a type of syntax or a location where @@ -33,6 +31,8 @@ is called the variable's value. By abuse of terminology, the variable is sometimes said to name the value or to be bound to the value. This is not quite accurate, but confusion rarely results from this practice. +@cindex binding construct + Certain expression types are used to create new kinds of syntax and to bind syntactic keywords to those new syntaxes, while other expression types create new locations and bind variables to those locations. These @@ -46,6 +46,8 @@ expressions. The other variable binding constructs are @code{let}, @code{let*-values}, and @code{do} expressions (see @ref{Procedures}, @ref{Binding constructs}, and @ref{Iteration}). +@cindex bound + Scheme is a language with block structure. To each place where an identifier is bound in a program there corresponds a @dfn{region} of the program text within which the binding is visible. The region @@ -64,9 +66,6 @@ it is said to be @dfn{unbound}. @section Disjointness of types @cindex type -@cindex empty list -@cindex true -@cindex false No object satisfies more than one of the following predicates: @@ -113,11 +112,16 @@ No object satisfies more than one of the following predicates: and all predicates created by @code{define-record-type}. +@cindex empty list + These predicates define the types @dfn{boolean}, @dfn{bytevector}, @dfn{character}, the empty list object, @dfn{eof-object}, @dfn{number}, @dfn{pair}, @dfn{port}, @dfn{procedure}, @dfn{string}, @dfn{symbol}, @dfn{vector}, and all record types. +@cindex true +@cindex false + Although there is a separate boolean type, any Scheme value can be used as a boolean value for the purpose of a conditional test. As explained in @ref{Booleans}, all values count as true in such a test except for @@ -172,9 +176,6 @@ objects in the appropriate sections of @ref{Standard procedures}. @section Storage model @cindex location -@cindex mutable -@cindex immutable -@cindex constant Variables and objects such as pairs, strings, vectors, and bytevectors implicitly denote locations or sequences of locations. A string, @@ -202,6 +203,9 @@ cannot be newly allocated, because it is a unique object. It is also understood that empty strings, empty vectors, and empty bytevectors, which contain no locations, may or may not be newly allocated. +@cindex mutable +@cindex immutable + Every object that denotes locations is either mutable or immutable. Literal constants, the strings returned by @code{symbol->string}, and possibly the environment returned by @@ -216,6 +220,7 @@ addresses, and even if they do, the memory address might not be constant. @rationale{} +@cindex constant In many systems it is desirable for constants (i.e. the values of literal expressions) to reside in read-only memory. Making it