r7rs-small-texinfo

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
Mdoc/r7rs-small/r7rs-small.texinfo | 122++++++++++++++++++++++++++++++++++++++++----------------------------------------
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.