@c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual.
-@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2010
+@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2010, 2011, 2013
@c Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions.
@chapter Introduction
Guile is an implementation of the Scheme programming language. Scheme
-(@url{schemers.org}) is an elegant and conceptually simple dialect of
-Lisp, originated by Guy Steele and Gerald Sussman, and since evolved
-by the series of reports known as RnRS (the
+(@url{http://schemers.org/}) is an elegant and conceptually simple
+dialect of Lisp, originated by Guy Steele and Gerald Sussman, and since
+evolved by the series of reports known as RnRS (the
@tex
Revised$^n$
@end tex
@end ifnottex
Reports on Scheme).
-Unlike -- for example -- Python or Perl, Scheme has no benevolent
+Unlike, for example, Python or Perl, Scheme has no benevolent
dictator. There are many Scheme implementations, with different
characteristics and with communities and academic activities around
them, and the language develops as a result of the interplay between
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
+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.
+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
@node Combining with C
@section Combining with C Code
-Like a shell, Guile can run interactively --- reading expressions from the user,
-evaluating them, and displaying the results --- or as a script interpreter,
+Like a shell, Guile can run interactively---reading expressions from the user,
+evaluating them, and displaying the results---or as a script interpreter,
reading and executing Scheme code from a file. Guile also provides an object
library, @dfn{libguile}, that allows other applications to easily incorporate a
complete Scheme interpreter. An application can then use Guile as an extension
and history. First is that Guile has always been targeted as an
extension language. Hence its C API has always been of great
importance, and has been developed accordingly. Second and third are
-rather technical points -- that Guile uses conservative garbage
+rather technical points---that Guile uses conservative garbage
collection, and that it implements the Scheme concept of continuations
-by copying and reinstating the C stack -- but whose practical
+by copying and reinstating the C stack---but whose practical
consequence is that most existing C code can be glued into Guile as
is, without needing modifications to cope with strange Scheme
execution flows. Last is the module system, which helps extensions to
Guile is designed for this kind of interactive programming, and this
distinguishes it from many Scheme implementations that instead prioritise
-running a fixed Scheme program as fast as possible --- because there are
+running a fixed Scheme program as fast as possible---because there are
tradeoffs between performance and the ability to modify parts of an already
running program. There are faster Schemes than Guile, but Guile is a GNU
project and so prioritises the GNU vision of programming freedom and
guile-@var{version}.tar.gz. The current version is @value{VERSION}, so the
file you should grab is:
-@url{ftp://ftp.gnu.org/pub/gnu/guile/guile-@value{VERSION}.tar.gz}
+@url{ftp://ftp.gnu.org/gnu/guile/guile-@value{VERSION}.tar.gz}
To unbundle Guile use the instruction
The rest of this manual is organised into the following chapters.
@table @strong
-@item Chapter 1: Introduction
-This part provides an overview of what Guile is and how you can use
-it. A whirlwind tour shows how Guile can be used interactively and as
+@item Chapter 2: Hello Guile!
+A whirlwind tour shows how Guile can be used interactively and as
a script interpreter, how to link Guile into your own applications,
and how to write modules of interpreted and compiled code for use with
Guile. Everything introduced here is documented again and in full by
-the later parts of the manual. This part also explains how to obtain
-and install new versions of Guile, and how to report bugs effectively.
-
-@item Chapter 2: Programming in Scheme
-This part provides an overview of programming in Scheme with Guile.
-It covers how to invoke the @code{guile} program from the command-line
-and how to write scripts in Scheme. It also gives an introduction
-into the basic ideas of Scheme itself and to the various extensions
-that Guile offers beyond standard Scheme.
-
-@item Chapter 3: Programming in C
-This part provides an overview of how to use Guile in a C program. It
+the later parts of the manual.
+
+@item Chapter 3: Hello Scheme!
+For readers new to Scheme, this chapter provides an introduction to the basic
+ideas of the Scheme language. This material would apply to any Scheme
+implementation and so does not make reference to anything Guile-specific.
+
+@item Chapter 4: Programming in Scheme
+Provides an overview of programming in Scheme with Guile. It covers how to
+invoke the @code{guile} program from the command-line and how to write scripts
+in Scheme. It also introduces the extensions that Guile offers beyond standard
+Scheme.
+
+@item Chapter 5: Programming in C
+Provides an overview of how to use Guile in a C program. It
discusses the fundamental concepts that you need to understand to
access the features of Guile, such as dynamic types and the garbage
collector. It explains in a tutorial like manner how to define new
data types and functions for the use by Scheme programs.
-@item Chapter 4: Guile API Reference
+@item Chapter 6: Guile API Reference
This part of the manual documents the Guile @acronym{API} in
functionality-based groups with the Scheme and C interfaces presented
side by side.
-@item Chapter 5: Guile Modules
+@item Chapter 7: Guile Modules
Describes some important modules, distributed as part of the Guile
distribution, that extend the functionality provided by the Guile
Scheme core.
-@item Chapter 6: GOOPS
+@item Chapter 8: GOOPS
Describes GOOPS, an object oriented extension to Guile that provides
classes, multiple inheritance and generic functions.
@node Typographical Conventions
@section Typographical Conventions
-We use some conventions in this manual.
-
-@itemize @bullet
-
-@item
-For some procedures, notably type predicates, we use ``iff'' to mean
-``if and only if''. The construct is usually something like: `Return
-@var{val} iff @var{condition}', where @var{val} is usually
-``@nicode{#t}'' or ``non-@nicode{#f}''. This typically means that
-@var{val} is returned if @var{condition} holds, and that @samp{#f} is
-returned otherwise. To clarify: @var{val} will @strong{only} be
-returned when @var{condition} is true.
-@cindex iff
-
-@item
In examples and procedure descriptions and all other places where the
evaluation of Scheme expression is shown, we use some notation for
denoting the output and evaluation results of expressions.
@samp{@print{}}), and returns @code{hooray} (denoted by
@samp{@result{}}).
-@c Add other conventions here.
-
-@end itemize
-
@c Local Variables:
@c TeX-master: "guile.texi"