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

commit 8244d2b45c2b5cc45e1efb7a2a59bc0451be9ff7
parent 2f1568ca38beb41f0eae3ae285e5f7db65a666a2
Author: Wolfgang Corcoran-Mathe <wcm@sigwinch.xyz>
Date:   Tue,  6 Feb 2024 14:53:26 -0500

Formal semantics: Replace chapter with a note and a PDF URL.

Diffstat:
Mdoc/r7rs-small/formal-semantics.texinfo | 69++++-----------------------------------------------------------------
1 file changed, 4 insertions(+), 65 deletions(-)

diff --git a/doc/r7rs-small/formal-semantics.texinfo b/doc/r7rs-small/formal-semantics.texinfo @@ -1,68 +1,7 @@ @node Formal semantics @section Formal semantics -This section provides a formal denotational semantics for the primitive expressions of -Scheme and selected built-in procedures. The concepts and notation used here are -described in [36]; the definition of dynamic-wind is taken from [39]. The notation is -summarized below: - -[r7rs-Z-G-1.png] - -The reason that expression continuations take sequences of values instead of single -values is to simplify the formal treatment of procedure calls and multiple return values. - -The boolean flag associated with pairs, vectors, and strings will be true for mutable -objects and false for immutable objects. - -The order of evaluation within a call is unspecified. We mimic that here by applying -arbitrary permutations permute and unpermute, which must be inverses, to the arguments -in a call before and after they are evaluated. This is not quite right since it suggests, -incorrectly, that the order of evaluation is constant throughout a program (for any given -number of arguments), but it is a closer approximation to the intended semantics than a -left-to-right evaluation would be. - -The storage allocator new is implementation-dependent, but it must obey the following -axiom: if new σ ∈ L, then σ (new σ ∣ L)↓2 = false. - -The definition of calK is omitted because an accurate definition of calK would complicate -the semantics without being very interesting. - -If P is a program in which all variables are defined before being referenced or assigned, -then the meaning of P is - - calE [ [ ((lambda (I*) ] ] - P') - @svar{undefined} - @dots{}) - -where I* is the sequence of variables defined in P, P′ is the sequence of expressions -obtained by replacing every definition in P by an assignment, @svar{undefined} is an -expression that evaluates to undefined, and calE is the semantic function that assigns -meaning to expressions. - -@menu -* Abstract syntax:: -* Domain equations:: -* Semantic functions:: -* Auxiliary functions:: -@end menu - -@node Abstract syntax -@subsection Abstract syntax - -XXX: TeX! - -@node Domain equations -@subsection Domain equations - -XXX: TeX! - -@node Semantic functions -@subsection Semantic functions - -XXX: TeX! - -@node Auxiliary functions -@subsection Auxiliary functions - -XXX: TeX! +[The formal semantics chapter uses complex LaTeX that is very +difficult to translate to Texinfo. At some point, an attempt may +be made to do this. Meanwhile, see +@url{https://small.r7rs.org/attachment/r7rs.pdf, the PDF}.]