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 d84164ca34b1e5ccd6e89c5076b65c06f5109cf5
parent 33e6a140f273413048ef2e28570aeb2d596ee0b3
Author: Wolfgang Corcoran-Mathe <wcm@sigwinch.xyz>
Date:   Fri,  2 Feb 2024 12:19:07 -0500

Delete duplicated material.

Diffstat:
Mdoc/r7rs-small/overview.texinfo | 160-------------------------------------------------------------------------------
1 file changed, 0 insertions(+), 160 deletions(-)

diff --git a/doc/r7rs-small/overview.texinfo b/doc/r7rs-small/overview.texinfo @@ -1,163 +1,3 @@ -@node top, Introduction, (dir), (dir) -@top Revised(7) Report on the Algorithmic Language Scheme - -@majorheading Summary - -The report gives a defining description of the programming language Scheme. Scheme is -a statically scoped and properly tail recursive dialect of the Lisp programming language -[23] invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have -exceptionally clear and simple semantics and few different ways to form expressions. A -wide variety of programming paradigms, including imperative, functional, and -object-oriented styles, find convenient expression in Scheme. - -The introduction offers a brief history of the language and of the report. - -The first three chapters present the fundamental ideas of the language and describe the -notational conventions used for describing the language and for writing programs in the -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 -manipulation and input/output primitives. - -Chapter 7 provides a formal syntax for Scheme written in extended BNF, along with a -formal denotational semantics. An example of the use of the language follows the formal -syntax and semantics. - -Appendix A provides a list of the standard libraries and the identifiers that they export. - -Appendix B provides a list of optional but standardized implementation feature names. - -The report concludes with a list of references and an alphabetic index. - -Note: The editors of the R5RS and R6RS reports are listed as authors of this report in -recognition of the substantial portions of this report that are copied directly from -R5RS and R6RS. There is no intended implication that those editors, individually or -collectively, support or do not support this report. - -@menu -* Introduction:: -* Overview of Scheme:: -* Lexical conventions:: -* Basic concepts:: -* Expressions:: -* Program structure:: -* Standard procedures:: -* Formal syntax and semantics:: -* Appendices:: -* Language changes:: -* Additional material:: -* Example:: -* References:: -@end menu - -@node Introduction -@chapter Introduction - -Programming languages should be designed not by piling feature on top of feature, but -by removing the weaknesses and restrictions that make additional features appear -necessary. Scheme demonstrates that a very small number of rules for forming -expressions, with no restrictions on how they are composed, suffice to form a practical -and efficient programming language that is flexible enough to support most of the major -programming paradigms in use today. - -Scheme was one of the first programming languages to incorporate first-class -procedures as in the lambda calculus, thereby proving the usefulness of static scope rules -and block structure in a dynamically typed language. Scheme was the first major dialect -of Lisp to distinguish procedures from lambda expressions and symbols, to use a single -lexical environment for all variables, and to evaluate the operator position of a procedure -call in the same way as an operand position. By relying entirely on procedure calls to -express iteration, Scheme emphasized the fact that tail-recursive procedure calls are -essentially GOTOs that pass arguments, thus allowing a programming style that is both -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 -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. - -@heading Background - -The first description of Scheme was written in 1975 [35]. A revised report [31] appeared in -1978, which described the evolution of the language as its MIT implementation was -upgraded to support an innovative compiler [32]. Three distinct projects began in 1981 -and 1982 to use variants of Scheme for courses at MIT, Yale, and Indiana University [27, -24, 14]. An introductory computer science textbook using Scheme was published in 1984 -[1]. - -As Scheme became more widespread, local dialects began to diverge until students and -researchers occasionally found it difficult to understand code written at other sites. -Fifteen representatives of the major implementations of Scheme therefore met in -October 1984 to work toward a better and more widely accepted standard for Scheme. -Their report, the RRRS [8], was published at MIT and Indiana University in the summer of -1985. Further revision took place in the spring of 1986, resulting in the R3RS [29]. Work in -the spring of 1988 resulted in R4RS [10], which became the basis for the IEEE Standard for -the Scheme Programming Language in 1991 [18]. In 1998, several additions to the IEEE -standard, including high-level hygienic macros, multiple return values, and eval, were -finalized as the R5RS [20]. - -In the fall of 2006, work began on a more ambitious standard, including many new -improvements and stricter requirements made in the interest of improved portability. The -resulting standard, the R6RS, was completed in August 2007 [33], and was organized as a -core language and set of mandatory standard libraries. Several new implementations of -Scheme conforming to it were created. However, most existing R5RS implementations -(even excluding those which are essentially unmaintained) did not adopt R6RS, or adopted -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 -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 -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 -permission to copy it in whole or in part without fee. In particular, we encourage -implementers of Scheme to use this report as a starting point for manuals and other -documentation, modifying it as necessary. - -@heading Acknowledgments - -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 -provided comments and feedback, including the following people: David Adler, Eli -Barzilay, Taylan Ulrich Bay@dotless{i}rl@dotless{i}/Kammer, Marco Benelli, Pierpaolo Bernardi, Peter Bex, Per -Bothner, John Boyle, Taylor Campbell, Raffael Cavallaro, Ray Dillinger, Biep Durieux, -Sztefan Edwards, Helmut Eller, Justin Ethier, Jay Reynolds Freeman, Tony Garnock-Jones, -Alan Manuel Gloria, Steve Hafner, Sven Hartrumpf, Brian Harvey, Moritz Heidkamp, -Jean-Michel Hufflen, Aubrey Jaffer, Takashi Kato, Shiro Kawai, Richard Kelsey, Oleg -Kiselyov, Pjotr Kourzanov, Jonathan Kraut, Daniel Krueger, Christian Stigen Larsen, Noah -Lavine, Stephen Leach, Larry D. Lee, Kun Liang, Thomas Lord, Vincent Stewart Manis, Perry -Metzger, Michael Montague, Mikael More, Vitaly Magerya, Vincent Manis, Vassil Nikolov, -Joseph Wayne Norton, Yuki Okumura, Daichi Oohashi, Jeronimo Pellegrini, Jussi -Piitulainen, Alex Queiroz, Jim Rees, Grant Rettke, Andrew Robbins, Devon Schudy, Bakul -Shah, Robert Smith, Arthur Smyles, Michael Sperber, John David Stone, Jay Sulzberger, -Malcolm Tredinnick, Sam Tobin-Hochstadt, Andre van Tonder, Daniel Villeneuve, Denis -Washington, Alan Watson, Mark H. Weaver, G@"oran Weinholt, David A. Wheeler, Andy -Wingo, James Wise, J@"org F. Wittenberger, Kevin A. Wortman, Sascha Ziemann. - -In addition we would like to thank all the past editors, and the people who helped them in -turn: Hal Abelson, Norman Adams, David Bartley, Alan Bawden, Michael Blair, Gary -Brooks, George Carrette, Andy Cromarty, Pavel Curtis, Jeff Dalton, Olivier Danvy, Ken -Dickey, Bruce Duba, Robert Findler, Andy Freeman, Richard Gabriel, Yekta G@"ursel, Ken -Haase, Robert Halstead, Robert Hieb, Paul Hudak, Morry Katz, Eugene Kohlbecker, Chris -Lindblad, Jacob Matthews, Mark Meyer, Jim Miller, Don Oxley, Jim Philbin, Kent Pitman, -John Ramsdell, Guillermo Rozas, Mike Shaff, Jonathan Shapiro, Guy Steele, Julie Sussman, -Perry Wagle, Mitchel Wand, Daniel Weise, Henry Wu, and Ozan Yigit. We thank Carol -Fessenden, Daniel Friedman, and Christopher Haynes for permission to use text from the -Scheme 311 version 4 reference manual. We thank Texas Instruments, Inc. for permission -to use text from the TI Scheme Language Reference Manual [37]. We gladly acknowledge the -influence of manuals for MIT Scheme [24], T [28], Scheme 84 [15], Common Lisp [34], and -Algol 60 [25], as well as the following SRFIs: 0, 1, 4, 6, 9, 11, 13, 16, 30, 34, 39, 43, 46, 62, and -87, all of which are available at http://srfi.schemers.org. - - @node Overview of Scheme @chapter Overview of Scheme