r7rs-small-texinfo

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

commit 10602734eac6a205812eae2dfa208cb01e0cd160
parent e5508c9752b729512a2839b3fe141df2acb11a83
Author: Wolfgang Corcoran-Mathe <wcm@sigwinch.xyz>
Date:   Mon, 29 Jan 2024 13:50:29 -0500

Use Texinfo dashes.

Diffstat:
Mdoc/r7rs-small/r7rs-small.texinfo | 108++++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 54 insertions(+), 54 deletions(-)

diff --git a/doc/r7rs-small/r7rs-small.texinfo b/doc/r7rs-small/r7rs-small.texinfo @@ -62,7 +62,7 @@ language. Chapters 4 and 5 describe the syntax and semantics of expressions, definitions, programs, and libraries. -Chapter 6 describes Scheme’s built-in procedures, which include all of the language’s data +Chapter 6 describes Scheme's built-in procedures, which include all of the language's data manipulation and input/output primitives. Chapter 7 provides a formal syntax for Scheme written in extended BNF, along with a @@ -117,7 +117,7 @@ essentially GOTOs that pass arguments, thus allowing a programming style that is coherent and efficient. Scheme was the first widely used programming language to embrace first-class escape procedures, from which all previously known sequential control structures can be synthesized. A subsequent version of Scheme introduced the -concept of exact and inexact numbers, an extension of Common Lisp’s generic +concept of exact and inexact numbers, an extension of Common Lisp's generic arithmetic. More recently, Scheme became the first programming language to support hygienic macros, which permit the syntax of a block-structured language to be extended in a consistent and reliable manner. @@ -151,7 +151,7 @@ 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 software development, intended to become a replacement for R6RS. The present report @@ -168,7 +168,7 @@ documentation, modifying it as necessary. We would like to thank the members of the Steering Committee, William Clinger, Marc Feeley, Chris Hanson, Jonathan Rees, and Olin Shivers, for their support and guidance. -This report is very much a community effort, and we’d like to thank everyone who +This report is very much a community effort, and we'd like to thank everyone who provided comments and feedback, including the following people: David Adler, Eli Barzilay, Taylan Ulrich Bayırlı/Kammer, Marco Benelli, Pierpaolo Bernardi, Peter Bex, Per Bothner, John Boyle, Taylor Campbell, Raffael Cavallaro, Ray Dillinger, Biep Durieux, @@ -213,7 +213,7 @@ Algol 60 [25], as well as the following SRFIs: 0, 1, 4, 6, 9, 11, 13, 16, 30, 34 @node Semantics @section Semantics -This section gives an overview of Scheme’s semantics. A detailed informal semantics is the +This section gives an overview of Scheme's semantics. A detailed informal semantics is the subject of chapters 3 through 6. For reference purposes, section 7.2 provides a formal semantics of Scheme. @@ -244,7 +244,7 @@ backtracking, and coroutines. See section 6.10. Arguments to Scheme procedures are always passed by value, which means that the actual argument expressions are evaluated before the procedure gains control, -regardless of whether the procedure needs the result of the evaluation. Scheme’s model +regardless of whether the procedure needs the result of the evaluation. Scheme's model of arithmetic is designed to remain as independent as possible of the particular ways in which numbers are represented within a computer. In Scheme, every integer is a rational number, every rational is a real, and every real is a complex number. Thus the distinction @@ -337,7 +337,7 @@ read-error?. Alternatively, implementations may provide non-portable extensions. For example, it is an error for a procedure to be passed an argument of a type that the procedure is not explicitly specified to handle, even though such domain errors are seldom -mentioned in this report. Implementations may signal an error, extend a procedure’s +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 @@ -816,7 +816,7 @@ identifier that names a type of syntax is called a syntactic keywordand is said a transformer for that syntax. An identifier that names a location is called a variableand is said to be bound to that location. The set of all visible bindingsin effect at some point in a program is known as the environment in effect at that point. The value stored in the -location to which a variable is bound is called the variable’s value. By abuse of +location to which a variable is bound 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. @@ -891,7 +891,7 @@ generates them. Together, they provide an elegant and powerful input/output faci 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 +and the integers 2 and 6. Scheme's syntax has the property that any sequence of characters that is an expression is also the external representation of some object. This can lead to confusion, since it is not always obvious out of context whether a given sequence of characters is intended to denote data or program, but it is also a source of @@ -960,7 +960,7 @@ not yet returned. A formal definition of proper tail recursion can be found in [ followed immediately by a return to the continuation passed to the procedure. A properly tail-recursive implementation returns to that continuation directly. - Proper tail recursion was one of the central ideas in Steele and Sussman’s original + Proper tail recursion was one of the central ideas in Steele and Sussman's original version of Scheme. Their first Scheme interpreter implemented both functions and actors. Control flow was expressed using actors, which differed from functions in that they passed their results on to another actor instead of returning to a caller. In @@ -1222,7 +1222,7 @@ lambda expression was evaluated will be extended by binding the variables in the argument list to fresh locations, and the corresponding actual argument values will be stored in those locations. (A fresh location is one that is distinct from every previously existing location.) Next, the expressions in the body of the lambda expression (which, if it -contains definitions, represents a letrec* form — see section 4.2.2) will be evaluated +contains definitions, represents a letrec* form---see section 4.2.2) will be evaluated sequentially in the extended environment. The results of the last expression in the body will be returned as the results of the procedure call. @@ -1540,7 +1540,7 @@ A <feature requirement> takes one of the following forms: Semantics: Each implementation maintains a list of feature identifiers which are present, as well as a list of libraries which can be imported. The value of a <feature requirement> is determined by replacing each <feature identifier> and (library <library name>) on the -implementation’s lists with #t, and all other feature identifiers and library names with #f, +implementation's lists with #t, and all other feature identifiers and library names with #f, then evaluating the resulting expression as a Scheme boolean expression under the normal interpretation of and, or, and not. @@ -1752,7 +1752,7 @@ and so on. @node Sequencing @subsection Sequencing -Both of Scheme’s sequencing constructs are named begin, but the two have slightly +Both of Scheme's sequencing constructs are named begin, but the two have slightly different forms and uses: syntax: (begin <expression or definition> …) @@ -2108,7 +2108,7 @@ Semantics: The <body> is evaluated with an exception handler that binds the rais (see raise in section 6.11) to <variable> and, within the scope of that binding, evaluates the clauses as if they were the clauses of a cond expression. That implicit cond expression is evaluated with the continuation and dynamic environment of the guard expression. If -every <cond clause>’s <test> evaluates to #f and there is no else clause, then +every <cond clause>'s <test> evaluates to #f and there is no else clause, then raise-continuable is invoked on the raised object within the dynamic environment of the original call to raise or raise-continuable, except that the current exception handler is that of the guard expression. @@ -2301,7 +2301,7 @@ unintended conflicts: 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] +``referentially transparent'' and thus preserve Scheme's lexical scoping. [21, 22, 2, 9, 12] Implementations may provide macro facilities of other types. @@ -2647,7 +2647,7 @@ the imported bindings. It takes one of the following forms: * (rename <import set> (<identifier1> <identifier2>) …) -In the first form, all of the identifiers in the named library’s export clauses are imported +In the first form, all of the identifiers in the named library's export clauses are imported with the same names (or the exported names if exported with rename). The additional <import set> forms modify this set as follows: @@ -2879,8 +2879,8 @@ error for the same identifier to occur more than once as a field name. It is als for the same identifier to occur more than once as an accessor or mutator name. The define-record-type construct is generative: each use creates a new record type that is -distinct from all existing types, including Scheme’s predefined types and other record -types — even record types of the same name or structure. +distinct from all existing types, including Scheme's predefined types and other record +types---even record types of the same name or structure. An instance of define-record-type is equivalent to the following definitions: @@ -3017,7 +3017,7 @@ library. Alternatively, cond-expand and import declarations may be processed in right order interspersed with the processing of other declarations, with the environment growing as imported bindings are added to it by each import declaration. -When a library is loaded, its expressions are executed in textual order. If a library’s +When a library is loaded, its expressions are executed in textual order. If a library's definitions are referenced in the expanded form of a program or library body, then that library must be loaded before the expanded program or library body is evaluated. This rule applies transitively. If a library is imported by more than one program or library, it @@ -3156,7 +3156,7 @@ import declarations in places other than the beginning. @node Standard procedures @chapter Standard procedures -This chapter describes Scheme’s built-in procedures. The procedures force, promise?, and +This chapter describes Scheme's built-in procedures. The procedures force, promise?, and make-promise are intimately associated with the expression types delay and delay-force, and are described with them in section 4.2.5. In the same way, the procedure make-parameter is intimately associated with the expression type parameterize, and is @@ -3225,7 +3225,7 @@ The eqv? procedure returns #t if: obj2 are both inexact numbers such that they are numerically equal (in the sense of =) and they yield the same results (in the sense of eqv?) when passed as arguments to any - other procedure that can be defined as a finite composition of Scheme’s standard + other procedure that can be defined as a finite composition of Scheme's standard arithmetic procedures, provided it does not result in a NaN value. * obj1 and @@ -3278,7 +3278,7 @@ The eqv? procedure returns #f if: obj2 are both inexact numbers such that either they are numerically unequal (in the sense of =), or they do not yield the same results (in the sense of eqv?) when passed as arguments to any other procedure that can be defined as a finite composition of - Scheme’s standard arithmetic procedures, provided it does not result in a NaN value. As + Scheme's standard arithmetic procedures, provided it does not result in a NaN value. As an exception, the behavior of eqv? is unspecified when both obj1 and @@ -3414,8 +3414,8 @@ would, but may return #f in some cases where eqv? would return #t. On symbols, booleans, the empty list, pairs, and records, and also on non-empty strings, vectors, and bytevectors, eq? and eqv? are guaranteed to have the same behavior. On -procedures, eq? must return true if the arguments’ location tags are equal. On numbers -and characters, eq?’s behavior is implementation-dependent, but it will always return +procedures, eq? must return true if the arguments' location tags are equal. On numbers +and characters, eq?'s behavior is implementation-dependent, but it will always return either true or false. On empty strings, empty vectors, and empty bytevectors, eq? may also behave differently from eqv?. @@ -3511,11 +3511,11 @@ For example, 3 is an integer. Therefore 3 is also a rational, a real, and a comp The same is true of the Scheme numbers that model 3. For Scheme numbers, these types are defined by the predicates number?, complex?, real?, rational?, and integer?. -There is no simple relationship between a number’s type and its representation inside a +There is no simple relationship between a number's type and its representation inside a computer. Although most implementations of Scheme will offer at least two different representations of 3, these different representations denote the same integer. -Scheme’s numerical operations treat numbers as abstract data, as independent of their +Scheme's numerical operations treat numbers as abstract data, as independent of their representation as possible. Although an implementation of Scheme may use multiple internal representations of numbers, this ought not to be apparent to a casual programmer writing simple programs. @@ -3644,7 +3644,7 @@ representation available must be used. For example, the value of (sqrt 4) should in an implementation that provides both single and double precision floating point numbers it may be the latter but must not be the former. -It is the programmer’s responsibility to avoid using inexact number objects with +It is the programmer's responsibility to avoid using inexact number objects with magnitude or significand too large to be represented in the implementation. In addition, implementations may distinguish special numbers called positive infinity, @@ -4319,7 +4319,7 @@ of atan computes (angle (make-rectangular x -y)) (see below), even in implementations that don’t support complex numbers. +y)) (see below), even in implementations that don't support complex numbers. In general, the mathematical functions log, arcsine, arc-cosine, and arctangent are multiply defined. The value of log z is defined to be the one whose imaginary part lies in @@ -4769,7 +4769,7 @@ read procedure, the forms '<datum>, `<datum>, ,<datum>, and ,@@<datum> denote two-element lists whose first elements are the symbols quote, quasiquote, unquote, and unquote-splicing, respectively. The second element in each case is <datum>. This convention is supported so that arbitrary Scheme programs can be represented as lists. -That is, according to Scheme’s grammar, every <expression> is also a <datum> (see +That is, according to Scheme's grammar, every <expression> is also a <datum> (see section 7.1.2). Among other things, this permits the use of the read procedure to parse Scheme programs. See section 3.3. @@ -5635,7 +5635,7 @@ characters. In that case, string<? would be the lexicographic ordering on string by the ordering char<? on characters, and if the two strings differ in length but are the same up to the length of the shorter string, the shorter string would be considered to be lexicographically less than the longer string. However, it is also permitted to use the -natural ordering imposed by the implementation’s internal representation of strings, or +natural ordering imposed by the implementation's internal representation of strings, or a more complex locale-specific ordering. In all cases, a pair of strings must satisfy exactly one of string<?, string=?, and string>?, @@ -6628,7 +6628,7 @@ Rationale: A common use of call-with-current-continuation is for structured, continuation might take the result, print it on the screen, prompt for the next input, evaluate it, and so on forever. Most of the time the continuation includes actions specified by user code, as in a continuation that will take the result, multiply it by the - value stored in a local variable, add seven, and give the answer to the REPL’s + value stored in a local variable, add seven, and give the answer to the REPL's continuation to be printed. Normally these ubiquitous continuations are hidden behind the scenes and programmers do not think much about them. On rare occasions, however, a programmer needs to deal with continuations explicitly. The @@ -6763,7 +6763,7 @@ after is unspecified. @node Exceptions @section Exceptions -This section describes Scheme’s exception-handling and exception-raising procedures. +This section describes Scheme's exception-handling and exception-raising procedures. For the concept of Scheme exceptions, see section 1.3.2. See also 4.2.7 for the guard syntax. @@ -7051,7 +7051,7 @@ proc are returned. If proc does not return, then the port must not be closed automatically unless it is possible to prove that the port will never again be used for a read or write operation. - Rationale: Because Scheme’s escape procedures have unlimited extent, it is possible + Rationale: Because Scheme's escape procedures have unlimited extent, it is possible to escape from the current continuation but later to resume it. If implementations were permitted to close the port on any escape from the current continuation, then it would be impossible to write portable code using both @@ -7230,7 +7230,7 @@ that do not have datum representations. If an end of file is encountered in the input before any characters are found that can begin an object, then an end-of-file object is returned. The port remains open, and further attempts to read will also return an end-of-file object. If an end of file is -encountered after the beginning of an object’s external representation, but the external +encountered after the beginning of an object's external representation, but the external representation is incomplete and therefore not parsable, an error that satisfies read-error? is signaled. @@ -7590,7 +7590,7 @@ obj into an appropriate exit value for the operating system, if possible. The exit procedure must not signal an exception or return to its continuation. Note: Because of the requirement to run handlers, this procedure is not just the - operating system’s exit procedure. + operating system's exit procedure. process-context library procedure: (emergency-exit) process-context library procedure: (emergency-exit obj) @@ -7613,7 +7613,7 @@ the value of the environment variable name, or #f if the named environment variable is not found. It may use locale information to encode the name and decode the value of the environment variable. It is an error if -get-environment-variable can’t decode the value. It is also an error to mutate the +get-environment-variable can't decode the value. It is also an error to mutate the resulting string. @example @@ -8097,7 +8097,7 @@ If P is a program in which all variables are defined before being referenced or then the meaning of P is calE [ [ ((lambda (I*) ] ] - P’) + P') <undefined> …) @@ -9034,7 +9034,7 @@ The (scheme load) library exports procedures for loading Scheme expressions from @subsection Process-Context Library The (scheme process-context) library exports procedures for accessing with the -program’s calling context. +program's calling context. command-line emergency-exit exit @@ -9665,15 +9665,15 @@ which models a damped oscillator. Interpretation of Computer Programs, second edition. MIT Press, Cambridge, 1996. [2] Alan Bawden and Jonathan Rees. Syntactic closures. In Proceedings of the 1988 - ACM Symposium on Lisp and Functional Programming, pages 86–95. + ACM Symposium on Lisp and Functional Programming, pages 86--95. [3] S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. http://www.ietf.org/rfc/rfc2119.txt, 1997. [4] Robert G. Burger and R. Kent Dybvig. Printing floating-point numbers quickly - and accurately. In Proceedings of the ACM SIGPLAN ’96 Conference on - Programming Language Design and Implementation, pages 108–116. + and accurately. In Proceedings of the ACM SIGPLAN '96 Conference on + Programming Language Design and Implementation, pages 108--116. [5] William Clinger. How to read floating point numbers accurately. In Proceedings - of the ACM SIGPLAN ’90 Conference on Programming Language Design and - Implementation, pages 92–101. Proceedings published as SIGPLAN Notices 25 + of the ACM SIGPLAN '90 Conference on Programming Language Design and + Implementation, pages 92--101. Proceedings published as SIGPLAN Notices 25 (6), June 1990. [6] William Clinger. Proper Tail Recursion and Space Efficiency. In Proceedings of the 1998 ACM Conference on Programming Language Design and Implementation, @@ -9685,13 +9685,13 @@ which models a damped oscillator. published as Computer Science Department Technical Report 174, Indiana University, June 1985. [9] William Clinger and Jonathan Rees. Macros that work. In Proceedings of the - 1991 ACM Conference on Principles of Programming Languages, pages 155–162. + 1991 ACM Conference on Principles of Programming Languages, pages 155--162. [10] William Clinger and Jonathan Rees, editors. The revised4 report on the - algorithmic language Scheme. In ACM Lisp Pointers 4(3), pages 1–55, 1991. + algorithmic language Scheme. In ACM Lisp Pointers 4(3), pages 1--55, 1991. [11] Mark Davis. Unicode Standard Annex #44, Unicode Character Database. http://unicode.org/reports/tr44/, 2010. [12] R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic abstraction in - Scheme. Lisp and Symbolic Computation 5(4):295–326, 1993. + Scheme. Lisp and Symbolic Computation 5(4):295--326, 1993. [13] Marc Feeley. SRFI 4: Homogeneous Numeric Vector Datatypes. http://srfi.schemers.org/srfi-4/, 1999. [14] Carol Fessenden, William Clinger, Daniel P. Friedman, and Christopher @@ -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. @@ -9716,24 +9716,24 @@ which models a damped oscillator. PhD thesis, Indiana University, August 1986. [22] Eugene E. Kohlbecker Jr., Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic macro expansion. In Proceedings of the 1986 ACM Conference on - Lisp and Functional Programming, pages 151–161. + Lisp and Functional Programming, pages 151--161. [23] John McCarthy. Recursive Functions of Symbolic Expressions and Their - Computation by Machine, Part I. Communications of the ACM 3(4):184–195, April + Computation by Machine, Part I. Communications of the ACM 3(4):184--195, April 1960. [24] MIT Department of Electrical Engineering and Computer Science. Scheme manual, seventh edition. September 1984. [25] Peter Naur et al. Revised report on the algorithmic language Algol 60. - Communications of the ACM 6(1):1–17, January 1963. - [26] Paul Penfield, Jr. Principal values and branch cuts in complex APL. In APL ’81 - Conference Proceedings, pages 248–256. ACM SIGAPL, San Francisco, September + Communications of the ACM 6(1):1--17, January 1963. + [26] Paul Penfield, Jr. Principal values and branch cuts in complex APL. In APL '81 + Conference Proceedings, pages 248--256. ACM SIGAPL, San Francisco, September 1981. Proceedings published as APL Quote Quad 12(1), ACM, September 1981. [27] Jonathan A. Rees and Norman I. Adams IV. T: A dialect of Lisp or, lambda: The ultimate software tool. In Conference Record of the 1982 ACM Symposium on Lisp - and Functional Programming, pages 114–122. + and Functional Programming, pages 114--122. [28] Jonathan A. Rees, Norman I. Adams IV, and James R. Meehan. The T manual, fourth edition. Yale University Computer Science Department, January 1984. [29] Jonathan Rees and William Clinger, editors. The revised3 report on the - algorithmic language Scheme. In ACM SIGPLAN Notices 21(12), pages 37–79, + algorithmic language Scheme. In ACM SIGPLAN Notices 21(12), pages 37--79, December 1986. [30] Olin Shivers. SRFI 1: List Library. http://srfi.schemers.org/srfi-1/, 1999. [31] Guy Lewis Steele Jr. and Gerald Jay Sussman. The revised report on Scheme, a