commit 9322c3efa204d190ce82225a3d85d9a22929783a
parent 1ebe73ade64ee194205bd6ed81b8bffdcda0e0ed
Author: Wolfgang Corcoran-Mathe <wcm@sigwinch.xyz>
Date: Wed, 7 Feb 2024 21:40:59 -0500
Expressions: Indexing, part 2.
Diffstat:
3 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/doc/r7rs-small/derived/delayed-evaluation.texinfo b/doc/r7rs-small/derived/delayed-evaluation.texinfo
@@ -1,6 +1,8 @@
@node Delayed evaluation
@subsection Delayed evaluation
+@cindex promise
+
@deffn {lazy library syntax} delay @svar{expression}
The @code{delay} construct is used together with the procedure @code{force} to
diff --git a/doc/r7rs-small/derived/quasiquotation.texinfo b/doc/r7rs-small/derived/quasiquotation.texinfo
@@ -1,6 +1,9 @@
@node Quasiquotation
@subsection Quasiquotation
+@cindex backquote
+@cindex comma
+
@c FIXME: deffn doesn't handle the ` line correctly.
@deffn syntax quasiquote @svar{qq template}
@deffnx syntax `@svar{qq template}
diff --git a/doc/r7rs-small/macros.texinfo b/doc/r7rs-small/macros.texinfo
@@ -8,11 +8,18 @@ Scheme programs can define and use new derived expression types, called
@code{(}@svar{keyword} @svar{datum} @dots{}@code{)}
@end display
+@cindex syntactic keyword
+@cindex keyword
+@cindex macro keyword
+
where @svar{keyword} is an identifier that uniquely determines the
expression type. This identifier is called the @dfn{syntactic keyword}, or
simply @dfn{keyword}, of the macro. The number of the @svar{datum}s, and
their syntax, depends on the expression type.
+@cindex macro use
+@cindex macro transformer
+
Each instance of a macro is called a @dfn{use} of the macro. The set of
rules that specifies how a use of a macro is transcribed into a more
primitive expression is called the @dfn{transformer} of the macro.
@@ -31,6 +38,9 @@ a pattern language for specifying macro transformers.
@end itemize
+@cindex syntactic keyword
+@cindex keyword
+
The syntactic keyword of a macro can shadow variable bindings, and local
variable bindings can shadow syntactic bindings. Two mechanisms are
provided to prevent unintended conflicts:
@@ -52,6 +62,9 @@ macro.
@end itemize
+@cindex hygienic
+@cindex referentially transparent
+
In consequence, all macros defined using the pattern language are
``hygienic'' and ``referentially transparent'' and thus preserve Scheme's
lexical scoping. [@ref{Kohlbecker86}, @ref{hygienic}, @ref{Bawden88},