summaryrefslogtreecommitdiff
path: root/doc/ref/intro.texi
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2019-11-17 15:26:23 +0100
committerAndy Wingo <wingo@pobox.com>2019-11-17 15:30:59 +0100
commitb634071dd4c2401616c78d2a20471698123a23ca (patch)
tree2c1987cad64e7477ed5f6ab686dffce0e07f32b7 /doc/ref/intro.texi
parent72a2c742f6675e870421c61e66c5aec134398a5a (diff)
downloadguile-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.texi58
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