diff options
author | Andy Wingo <wingo@pobox.com> | 2019-11-17 15:26:23 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-11-17 15:30:59 +0100 |
commit | b634071dd4c2401616c78d2a20471698123a23ca (patch) | |
tree | 2c1987cad64e7477ed5f6ab686dffce0e07f32b7 /doc/ref/intro.texi | |
parent | 72a2c742f6675e870421c61e66c5aec134398a5a (diff) | |
download | guile-wip-r7rs.tar.gz |
Add R7RS documentation and --r7rs command-line optionwip-r7rs
* doc/ref/Makefile.am: Add r7rs.texi.
* doc/ref/guile-invoke.texi (Command-line Options): Document --r7rs.
* doc/ref/guile.texi (Guile Modules): Link to R7RS.
* doc/ref/intro.texi (Guile and Scheme): Update for R7RS support.
* doc/ref/r7rs.texi: New file.
* doc/ref/scheme-intro.texi (Guile Scheme): Update for R7RS.
* module/ice-9/command-line.scm (*usage*, compile-shell-switches): Add
--r7rs option.
Diffstat (limited to 'doc/ref/intro.texi')
-rw-r--r-- | doc/ref/intro.texi | 58 |
1 files changed, 40 insertions, 18 deletions
diff --git a/doc/ref/intro.texi b/doc/ref/intro.texi index 28da4ac3c..aec07ba93 100644 --- a/doc/ref/intro.texi +++ b/doc/ref/intro.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Guile Reference Manual. -@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2010, 2011, 2013 +@c Copyright (C) 1996-1997,2000-2004,2006,2008-2011,2013,2019 @c Free Software Foundation, Inc. @c See the file guile.texi for copying conditions. @@ -71,23 +71,45 @@ dynamic linking, a foreign function call interface, powerful string processing, and many other features needed for programming in the real world. -The Scheme community has recently agreed and published R6RS, the -latest installment in the RnRS series. R6RS significantly expands the -core Scheme language, and standardises many non-core functions that -implementations---including Guile---have previously done in -different ways. Guile has been updated to incorporate some of the -features of R6RS, and to adjust some existing features to conform to -the R6RS specification, but it is by no means a complete R6RS -implementation. @xref{R6RS Support}. - -Between R5RS and R6RS, the SRFI process (@url{http://srfi.schemers.org/}) -standardised interfaces for many practical needs, such as multithreaded -programming and multidimensional arrays. Guile supports many SRFIs, as -documented in detail in @ref{SRFI Support}. - -In summary, so far as relationship to the Scheme standards is -concerned, Guile is an R5RS implementation with many extensions, some -of which conform to SRFIs or to the relevant parts of R6RS. +In 2010, the Scheme community agreed upon and published R6RS, a +significant installment in the RnRS series. R6RS expands the core +Scheme language, and standardises many non-core functions that +implementations---including Guile---have previously done in different +ways. Over time, Guile has been updated to incorporate almost all of +the features of R6RS, and to adjust some existing features to conform to +the R6RS specification. @xref{R6RS Support}, for full details. + +In parallel to official standardization efforts, the SRFI process +(@url{http://srfi.schemers.org/}) standardises interfaces for many +practical needs, such as multithreaded programming and multidimensional +arrays. Guile supports many SRFIs, as documented in detail in @ref{SRFI +Support}. + +The process that led to the R6RS standard brought a split in the Scheme +community to the surface. The implementors that wrote R6RS considered +that it was impossible to write useful, portable programs in R5RS, and +that only an ambitious standard could solve this problem. However, part +of the Scheme world saw the R6RS effort as too broad, and as having +included some components that would never be adopted by more +minimalistic Scheme implementations. This second group succeeded in +taking control of the official Scheme standardization track and in 2013 +released a more limited R7RS, essentially consisting of R5RS, plus a +module system. Guile supports R7RS also. @xref{R7RS Support}. + +With R6RS and R7RS, the unified Scheme standardization process appears +to have more or less run its course. There will continue to be more +code written in terms of both systems, and modules defined using the +SRFI process, and Guile will support both. However for future +directions, Guile takes inspiration from other related language +communities: Racket, Clojure, Concurrent ML, and so on. + +In summary, Guile supports writing and running code written to the R5RS, +R6RS, and R7RS Scheme standards, and also supports a number of SRFI +modules. However for most users, until a need for cross-implementation +portability has been identified, we recommend using the parts of Guile +that are useful in solving the problem at hand, regardless of whether +they proceed from a standard or whether they are Guile-specific. + @node Combining with C @section Combining with C Code |