commit e5508c9752b729512a2839b3fe141df2acb11a83
parent 1fcde46798b133eadc621476e5428079e79f612c
Author: Wolfgang Corcoran-Mathe <wcm@sigwinch.xyz>
Date: Mon, 29 Jan 2024 13:49:20 -0500
Use Texinfo quote characters.
Diffstat:
1 file changed, 61 insertions(+), 61 deletions(-)
diff --git a/doc/r7rs-small/r7rs-small.texinfo b/doc/r7rs-small/r7rs-small.texinfo
@@ -151,11 +151,11 @@ Scheme conforming to it were created. However, most existing R5RS implementation
only selected parts of it.
In consequence, the Scheme Steering Committee decided in August 2009 to divide the
-standard into two separate but compatible languages — a “small” language, suitable for
+standard into two separate but compatible languages — a ``small'' language, suitable for
educators, researchers, and users of embedded languages, focused on R5RS
-compatibility, and a “large” language focused on the practical needs of mainstream
+compatibility, and a ``large'' language focused on the practical needs of mainstream
software development, intended to become a replacement for R6RS. The present report
-describes the “small” language of that effort: therefore it cannot be considered in
+describes the ``small'' language of that effort: therefore it cannot be considered in
isolation as the successor to R6RS.
We intend this report to belong to the entire Scheme community, and so we grant
@@ -238,7 +238,7 @@ iteration constructs are useful only as syntactic sugar. See section 3.5.
Scheme procedures are objects in their own right. Procedures can be created
dynamically, stored in data structures, returned as results of procedures, and so on. One
distinguishing feature of Scheme is that continuations, which in most other languages
-only operate behind the scenes, also have “first-class” status. Continuations are useful for
+only operate behind the scenes, also have ``first-class'' status. Continuations are useful for
implementing a wide variety of advanced control constructs, including non-local exits,
backtracking, and coroutines. See section 6.10.
@@ -316,7 +316,7 @@ Must support portable code by providing a mode of operation in which the lexical
@node Error situations and unspecified behavior
@subsection Error situations and unspecified behavior
-When speaking of an error situation, this report uses the phrase “an error is signaled” to
+When speaking of an error situation, this report uses the phrase ``an error is signaled'' to
indicate that implementations must detect and report the error. An error is signaled by
raising a non-continuable exception, as if by the procedure raise as described in section
6.11. The object raised is implementation-dependent and need not be distinct from
@@ -324,13 +324,13 @@ objects previously used for the same purpose. In addition to errors signaled in
described in this report, programmers can signal their own errors and handle signaled
errors.
-The phrase “an error that satisfies predicate is signaled” means that an error is signaled as
+The phrase ``an error that satisfies predicate is signaled'' means that an error is signaled as
above. Furthermore, if the object that is signaled is passed to the specified predicate (such
as file-error? or read-error?), the predicate returns #t.
If such wording does not appear in the discussion of an error, then implementations are
not required to detect or report the error, though they are encouraged to do so. Such a
-situation is sometimes, but not always, referred to with the phrase “an error.” In such a
+situation is sometimes, but not always, referred to with the phrase ``an error.'' In such a
situation, an implementation may or may not signal an error; if it does signal an error, the
object that is signaled may or may not satisfy the predicates error-object?, file-error?, or
read-error?. Alternatively, implementations may provide non-portable extensions.
@@ -340,7 +340,7 @@ procedure is not explicitly specified to handle, even though such domain errors
mentioned in this report. Implementations may signal an error, extend a procedure’s
domain of definition to include such arguments, or fail catastrophically.
-This report uses the phrase “may report a violation of an implementation restriction” to
+This report uses the phrase ``may report a violation of an implementation restriction'' to
indicate circumstances under which an implementation is permitted to report that it is
unable to continue execution of a correct program because of some restriction imposed
by the implementation. Implementation restrictions are discouraged, but
@@ -350,12 +350,12 @@ For example, an implementation may report a violation of an implementation restr
it does not have enough storage to run a program, or if an arithmetic operation would
produce an exact number that is too large for the implementation to represent.
-If the value of an expression is said to be “unspecified,” then the expression must evaluate
+If the value of an expression is said to be ``unspecified,'' then the expression must evaluate
to some object without signaling an error, but the value depends on the implementation;
this report explicitly does not say what value is returned.
-Finally, the words and phrases “must,” “must not,” “shall,” “shall not,” “should,” “should
-not,” “may,” “required,” “recommended,” and “optional,” although not capitalized in this
+Finally, the words and phrases ``must,'' ``must not,'' ``shall,'' ``shall not,'' ``should,'' ``should
+not,'' ``may,'' ``required,'' ``recommended,'' and ``optional,'' although not capitalized in this
report, are to be interpreted as described in RFC 2119 [3]. They are used only with
reference to implementer or implementation behavior, not with reference to
programmer or program behavior.
@@ -388,7 +388,7 @@ name is the short name of a library as defined in Appendix A.
If
-category is “syntax,” the entry describes an expression type, and the template gives the
+category is ``syntax,'' the entry describes an expression type, and the template gives the
syntax of the expression type. Components of expressions are designated by syntactic
variables, which are written using angle brackets, for example <expression> and
<variable>. Syntactic variables are intended to denote segments of program text; for
@@ -405,13 +405,13 @@ indicates one or more occurrences of a <thing>.
If
-category is “auxiliary syntax,” then the entry describes a syntax binding that occurs only as
+category is ``auxiliary syntax,'' then the entry describes a syntax binding that occurs only as
part of specific surrounding expressions. Any use as an independent syntactic construct
or variable is an error.
If
-category is “procedure,” then the entry describes a procedure, and the header line gives a
+category is ``procedure,'' then the entry describes a procedure, and the header line gives a
template for a call to the procedure. Argument names in the template are
italicized. Thus the header line
@@ -539,12 +539,12 @@ string, then the entire string is referred to.
@node Evaluation examples
@subsection Evaluation examples
-The symbol “⟹” used in program examples is read “evaluates to.” For example,
+The symbol ``⟹'' used in program examples is read ``evaluates to.'' For example,
@code{(* 5 8) ⟹ 40} means that the expression @code{(* 5 8)} evaluates to the object @code{40}. Or, more
-precisely: the expression given by the sequence of characters “@code{(* 5 8)}” evaluates, in an
+precisely: the expression given by the sequence of characters ``@code{(* 5 8)}'' evaluates, in an
environment containing the base library, to an object that can be represented externally
-by the sequence of characters “ 40.” See section 3.3 for a discussion of external
+by the sequence of characters `` 40.'' See section 3.3 for a discussion of external
representations of objects.
@node Naming conventions
@@ -559,7 +559,7 @@ Similarly, ! is the final character of the names of procedures that store values
previously allocated locations (see section 3.4). Such procedures are called mutation
procedures. The value returned by a mutation procedure is unspecified.
-By convention, “->” appears within the names of procedures that take an object of one
+By convention, ``->'' appears within the names of procedures that take an object of one
type and return an analogous object of another type. For example, list->vector takes a list
and returns a vector whose elements are the same as those of the list.
@@ -583,7 +583,7 @@ Scheme programs. For a formal syntax of Scheme, see section 7.1.
@node Identifiers
@section Identifiers
-An identifieris any sequence of letters, digits, and “extended identifier characters”
+An identifieris any sequence of letters, digits, and ``extended identifier characters''
provided that it does not have a prefix which is a valid number. However, the . token (a
single period) used in the list syntax is not an identifier.
@@ -675,7 +675,7 @@ A semicolon (;) indicates the start of a line comment.The comment continues to t
of the line on which the semicolon appears. Another way to indicate a comment is to
prefix a <datum> (cf. section 7.1.2) with #;and optional <whitespace>. The comment
consists of the comment prefix #;, the space, and the <datum> together. This notation is
-useful for “commenting out” sections of code.
+useful for ``commenting out'' sections of code.
Block comments are indicated with properly nested #|and |# pairs.
@@ -862,20 +862,20 @@ eof-object, number, pair, port, procedure, string, symbol, vector, and all recor
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 section 6.3, all values count as
-true in such a test except for #f. This report uses the word “true” to refer to any Scheme
-value except #f, and the word “false” to refer to #f.
+true in such a test except for #f. This report uses the word ``true'' to refer to any Scheme
+value except #f, and the word ``false'' to refer to #f.
@node External representations (basic)
@section External representations (basic)
An important concept in Scheme (and Lisp) is that of the external representation of an
object as a sequence of characters. For example, an external representation of the
-integer 28 is the sequence of characters “28”, and an external representation of a list
-consisting of the integers 8 and 13 is the sequence of characters “(8 13)”.
+integer 28 is the sequence of characters ``28'', and an external representation of a list
+consisting of the integers 8 and 13 is the sequence of characters ``(8 13)''.
The external representation of an object is not necessarily unique. The integer 28 also has
-representations “#e28.000” and “#x1c”, and the list in the previous paragraph also has the
-representations “( 08 13 )” and “(8 . (13 . ()))” (see section 6.4).
+representations ``#e28.000'' and ``#x1c'', and the list in the previous paragraph also has the
+representations ``( 08 13 )'' and ``(8 . (13 . ()))'' (see section 6.4).
Many objects have standard external representations, but some, such as procedures, do
not have standard representations (although particular implementations may define
@@ -888,7 +888,7 @@ External representations can also be used for input and output. The procedure re
(section 6.13.2) parses external representations, and the procedure write (section 6.13.3)
generates them. Together, they provide an elegant and powerful input/output facility.
-Note that the sequence of characters “(+ 2 6)” is not an external representation of the
+Note that the sequence of characters ``(+ 2 6)'' is not an external representation of the
integer 8, even though it is an expression evaluating to the integer 8; rather, it is an
external representation of a three-element list, the elements of which are the symbol +
and the integers 2 and 6. Scheme’s syntax has the property that any sequence of
@@ -1367,7 +1367,7 @@ auxiliary syntax: =>
Syntax: <Clauses> take one of two forms, either
(<test> <expression1> …)where <test> is any expression, or (<test> => <expression>)The
-last <clause> can be an “else clause,” which has the form (else <expression1>
+last <clause> can be an ``else clause,'' which has the form (else <expression1>
<expression2> …).
Semantics: A cond expression is evaluated by evaluating the <test> expressions of
@@ -1407,7 +1407,7 @@ Syntax: <Key> can be any expression. Each <clause> has the form
((<datum1> …) <expression1> <expression2> …),where each <datum> is an external
representation of some object. It is an error if any of the <datum>s are the same
anywhere in the expression. Alternatively, a <clause> can be of the form ((<datum1> …) =>
-<expression>)The last <clause> can be an “else clause,” which has one of the forms (else
+<expression>)The last <clause> can be an ``else clause,'' which has one of the forms (else
<expression1> <expression2> …)
or (else => <expression>).
@@ -1513,7 +1513,7 @@ expressions depending on the implementation. A <ce-clause> takes the following f
(<feature requirement> <expression> …)
-The last clause can be an “else clause,” which has the form
+The last clause can be an ``else clause,'' which has the form
(else <expression> …)
@@ -1589,7 +1589,7 @@ are returned. Each binding of a <variable> has <body> as its region.
(let ((x 2) (y 3))
(let ((x 7)
(z (+ x y)))
- (* z x))) ⟹ 35 See also “named let,” section 4.2.4.
+ (* z x))) ⟹ 35 See also ``named let,'' section 4.2.4.
@end example
@@ -1841,7 +1841,7 @@ A <step> can be omitted, in which case the effect is the same as if (<variable>
syntax: (let <variable> <bindings> <body>)
-Semantics: “Named let” is a variant on the syntax of let which provides a more general
+Semantics: ``Named let'' is a variant on the syntax of let which provides a more general
looping construct than do and can also be used to express recursion. It has the same
syntax and semantics as ordinary let except that <variable> is bound within <body> to a
procedure whose formal arguments are the bound variables and whose body is <body>.
@@ -1898,7 +1898,7 @@ The force procedure forces the value of a
promise created by delay, delay-force, or make-promise.If no value has been computed for
the promise, then a value is computed and returned. The value of the promise must be
-cached (or “memoized”) so that if it is forced a second time, the previously computed
+cached (or ``memoized'') so that if it is forced a second time, the previously computed
value is returned. Consequently, a delayed expression is evaluated using the parameter
values and exception handler of the call to force which first requested its value. If
@@ -1983,7 +1983,7 @@ are supported in some implementations:
(eqv? (delay 1) 1) ⟹ unspecified
(pair? (delay (cons 1 2))) ⟹ unspecified
-* Implementations may implement “implicit forcing,” where the value of a promise is
+* Implementations may implement ``implicit forcing,'' where the value of a promise is
forced by procedures that operate only on arguments of a certain type, like cdr and *.
However, procedures that operate uniformly on their arguments, like list, must not
force them.
@@ -2141,15 +2141,15 @@ auxiliary syntax: ,
auxiliary syntax: unquote-splicing
auxiliary syntax: ,﹫
-“Quasiquote”expressions are useful for constructing a list or vector structure when some
+``Quasiquote''expressions are useful for constructing a list or vector structure when some
but not all of the desired structure is known in advance. If no commasappear within the
<qq template>, the result of evaluating `<qq template> is equivalent to the result of
evaluating '<qq template>. If a commaappears within the <qq template>, however, the
-expression following the comma is evaluated (“unquoted”) and its result is inserted into
+expression following the comma is evaluated (``unquoted'') and its result is inserted into
the structure instead of the comma and the expression. If a comma appears followed
without intervening whitespace by a commercial at-sign (﹫),then it is an error if the
following expression does not evaluate to a list; the opening and closing parentheses of
-the list are then “stripped away” and the elements of the list are inserted in place of the
+the list are then ``stripped away'' and the elements of the list are inserted in place of the
comma at-sign expression sequence. A comma at-sign normally appears only within a list
or vector <qq template>.
@@ -2300,8 +2300,8 @@ unintended conflicts:
the binding that was visible where the transformer was specified, regardless of any
local bindings that surround the use of the macro.
-In consequence, all macros defined using the pattern language are “hygienic” and
-“referentially transparent” and thus preserve Scheme’s lexical scoping. [21, 22, 2, 9, 12]
+In consequence, all macros defined using the pattern language are ``hygienic'' and
+``referentially transparent'' and thus preserve Scheme’s lexical scoping. [21, 22, 2, 9, 12]
Implementations may provide macro facilities of other types.
@@ -4624,9 +4624,9 @@ Note: The domain of string->number may be restricted by implementations in the
The standard boolean objects for true and false are written as #t and #f.Alternatively,
they can be written #true and #false, respectively. What really matters, though, are the
objects that the Scheme conditional expressions (if, cond, and, or, when, unless, do)
-treat as trueor false. The phrase “a true value”(or sometimes just “true”) means any
-object treated as true by the conditional expressions, and the phrase “a false value”(or
-“false”) means any object treated as false by the conditional expressions.
+treat as trueor false. The phrase ``a true value''(or sometimes just ``true'') means any
+object treated as true by the conditional expressions, and the phrase ``a false value''(or
+``false'') means any object treated as false by the conditional expressions.
Of all the Scheme values, only #f counts as false in conditional expressions. All other
Scheme values, including #t, count as true.
@@ -4721,7 +4721,7 @@ length is zero.
Note: The above definitions imply that all lists have finite length and are terminated
by the empty list.
-The most general notation (external representation) for Scheme pairs is the “dotted”
+The most general notation (external representation) for Scheme pairs is the ``dotted''
notation (
c1 .
@@ -5111,7 +5111,7 @@ procedure: (assoc obj alist compare)
It is an error if
-alist (for “association list”) is not a list of pairs.
+alist (for ``association list'') is not a list of pairs.
These procedures find the first pair in
@@ -5193,7 +5193,7 @@ It is guaranteed that any symbol that has been returned as part of a literal exp
or read using the read procedure, and subsequently written out using the write
procedure, will read back in as the identical symbol (in the sense of eqv?).
- Note: Some implementations have values known as “uninterned symbols,” which
+ Note: Some implementations have values known as ``uninterned symbols,'' which
defeat write/read invariance, and also violate the rule that two symbols are the
same if and only if their names are spelled the same. This report does not specify
the behavior of implementation-dependent extensions.
@@ -5328,14 +5328,14 @@ Here are some additional examples:
Case is significant in #\<character>, and in #\⟨character name⟩, but not in #\x<hex scalar
value>. If <character> in #\<character> is alphabetic, then any character immediately
following <character> cannot be one that can appear in an identifier. This rule resolves
-the ambiguous case where, for example, the sequence of characters “#\space” could be
+the ambiguous case where, for example, the sequence of characters ``#\space'' could be
taken to be either a representation of the space character or a representation of the
-character “#\s” followed by a representation of the symbol “pace.”
+character ``#\s'' followed by a representation of the symbol ``pace.''
Characters written in the #\ notation are self-evaluating. That is, they do not have to be
quoted in programs. Some of the procedures that operate on characters ignore the
difference between upper case and lower case. The procedures that ignore case have
-“-ci” (for “case insensitive”) embedded in their names.
+``-ci'' (for ``case insensitive'') embedded in their names.
procedure: (char? obj)
@@ -5496,8 +5496,8 @@ integers less than the length of the string. The first character of a string has
second has index 1, and so on.
Some of the procedures that operate on strings ignore the difference between upper
-and lower case. The names of the versions that ignore case end with “-ci” (for “case
-insensitive”).
+and lower case. The names of the versions that ignore case end with ``-ci'' (for ``case
+insensitive'').
Implementations may forbid certain characters from appearing in strings. However, with
the exception of #\null, ASCII characters must not be forbidden. For example, an
@@ -5642,8 +5642,8 @@ In all cases, a pair of strings must satisfy exactly one of string<?, string=?,
and must satisfy string<=? if and only if they do not satisfy string>? and string>=? if and
only if they do not satisfy string<?.
-The “-ci” procedures behave as if they applied string-foldcase to their arguments before
-invoking the corresponding procedures without “-ci”.
+The ``-ci'' procedures behave as if they applied string-foldcase to their arguments before
+invoking the corresponding procedures without ``-ci''.
char library procedure: (string-upcase string)
char library procedure: (string-downcase string)
@@ -6554,8 +6554,8 @@ It is an error if
proc does not accept one argument.
The procedure call-with-current-continuation (or its equivalent abbreviation call/cc)
-packages the current continuation (see the rationale below) as an “escape
-procedure”and passes it as an argument to
+packages the current continuation (see the rationale below) as an ``escape
+procedure''and passes it as an argument to
proc. The escape procedure is a Scheme procedure that, if it is later called, will abandon
whatever continuation is in effect at that later time and will instead use the continuation
@@ -9244,8 +9244,8 @@ big-endian, little-endianByte order flags.
@node Incompatibilities with R5RS
@section Incompatibilities with R5RS
-This section enumerates the incompatibilities between this report and the “Revised5
-report” [20].
+This section enumerates the incompatibilities between this report and the ``Revised5
+report'' [20].
This list is not authoritative, but is believed to be correct and complete.
@@ -9279,8 +9279,8 @@ This list is not authoritative, but is believed to be correct and complete.
@node Other language changes since R5RS
@section Other language changes since R5RS
-This section enumerates the additional differences between this report and the “Revised5
-report” [20].
+This section enumerates the additional differences between this report and the ``Revised5
+report'' [20].
This list is not authoritative, but is believed to be correct and complete.
@@ -9448,7 +9448,7 @@ This list is not authoritative, but is believed to be correct and complete.
@node Incompatibilities with R6RS
@section Incompatibilities with R6RS
-This section enumerates the incompatibilities between R7RS and the “Revised6 report”
+This section enumerates the incompatibilities between R7RS and the ``Revised6 report''
[33] and its accompanying Standard Libraries document.
This list is not authoritative, and is possibly incomplete.
@@ -9476,7 +9476,7 @@ This list is not authoritative, and is possibly incomplete.
* The R6RS exception system was incorporated as-is, but the condition types have been
left unspecified. In particular, where R6RS requires a condition of a specified type to be
- signaled, R7RS says only “it is an error”, leaving the question of signaling open.
+ signaled, R7RS says only ``it is an error'', leaving the question of signaling open.
* Full Unicode support is not required. Normalization is not provided. Character
comparisons are defined by Unicode, but string comparisons are
@@ -9701,7 +9701,7 @@ which models a damped oscillator.
reference manual. Indiana University Computer Science Technical Report 153,
January 1985.
[16] Martin Gardner. Mathematical Games: The fantastic combinations of John
- Conway’s new solitaire game “Life.” In Scientific American, 223:120–123, October
+ Conway’s new solitaire game ``Life.'' In Scientific American, 223:120–123, October
1970.
[17] IEEE Standard 754-2008. IEEE Standard for Floating-Point Arithmetic. IEEE, New
York, 2008.