(File System): In stat:dev and stat:mode, clarify that both are numbers.
[bpt/guile.git] / doc / ref / guile.texi
index 58c9530..ce25a7f 100644 (file)
@@ -4,8 +4,39 @@
 @setfilename guile.info
 @settitle Guile Reference Manual
 @set guile
-@set MANUAL_EDITION 1.1
+@set MANUAL-EDITION 1.1
 @c %**end of header
+@include version.texi
+
+@copying
+This reference manual documents Guile, GNU's Ubiquitous Intelligent
+Language for Extensions, manual edition @value{MANUAL-EDITION}
+corresponding to Guile @value{VERSION}.
+
+Copyright 1996, 1997, 2000, 2001, 2002, 2003 Free Software Foundation.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by Free Software Foundation.
+@end copying
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+@end ignore
+
 
 @c Notes
 @c
 @c reference manual to group stuff according to whether it is R5RS or a
 @c Guile extension.
 @defcodeindex rn
-@defcodeindex ge
 
-@include version.texi
-
-@c Macros for describing version information.  I've initially defined
-@c all of these to expand to nothing, but they could perhaps be made to
-@c expand to something like "New in Guile 45!" in future.
-
-@c vnew - indicates the Guile version in which item first appeared.
+@c vnew - For (some) new items, indicates the Guile version in which
+@c item first appeared.  In future, this could be made to expand to
+@c something like a "New in Guile 45!" banner.
 @macro vnew{VERSION}
 @end macro
 
-@c vdeprecated - indicates that the item has been deprecated, and the
-@c Guile version in which the deprecation started.
-@macro vdeprecated{VERSION}
-@end macro
 
-@c vgone - a way of tracking items that are no longer here.  In this
-@c case, VERSION is the last Guile version in which the item was present.
-@macro vgone{WHAT, VERSION}
+@c  @m{T,N} is $T$ in tex or @math{N} otherwise.  This is an easy way to give
+@c  different forms for math in tex and info.
+@iftex
+@macro m {T,N}
+@tex$\T\$@end tex
 @end macro
-
-@c vchanged - indicates the Guile version in which item's behaviour
-@c significantly changed.
-@macro vchanged{VERSION}
+@end iftex
+@ifnottex
+@macro m {T,N}
+@math{\N\}
 @end macro
+@end ifnottex
 
-@c vnote - catchall for any additional notes.
-@macro vnote{NOTE}
+@c  @nicode{S} is plain S in info, or @code{S} elsewhere.  This can be
+@c  used when the quotes that @code{} gives in info aren't wanted, but
+@c  the fontification in tex or html is wanted.
+@ifinfo
+@macro nicode {S}
+\S\
 @end macro
+@end ifinfo
+@ifnotinfo
+@macro nicode {S}
+@code{\S\}
+@end macro
+@end ifnotinfo
+
 
 @c @iftex
 @c @cropmarks
 
 @dircategory The Algorithmic Language Scheme
 @direntry
-* Guile Reference: (guile).  The Guile reference manual.
+* Guile Reference: (guile).     The Guile reference manual.
 @end direntry
 
 @setchapternewpage off
 
-@ifinfo
-Guile Reference Manual
-Copyright (C) 1996 Free Software Foundation @*
-Copyright (C) 1997 Free Software Foundation @*
-Copyright (C) 2000 Free Software Foundation @*
-Copyright (C) 2001 Free Software Foundation
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-@end ifinfo
-
 @titlepage
 @sp 10
 @comment The title is printed in a large font.
 @title Guile Reference Manual
-@subtitle $Id: guile.texi,v 1.14 2002-03-15 14:03:53 ossau Exp $
-@subtitle For use with Guile @value{VERSION}
+@subtitle Edition @value{MANUAL-EDITION}, for use with Guile @value{VERSION}
+@subtitle $Id: guile.texi,v 1.24 2003-08-29 23:02:36 kryde Exp $
 
 @c AUTHORS
 
@@ -180,25 +187,7 @@ by the Free Software Foundation.
 @page
 @vskip 0pt plus 1filll
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1996 Free Software Foundation
-
-Copyright @copyright{} 1997 Free Software Foundation
-
-Copyright @copyright{} 2000 Free Software Foundation
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by Free Software Foundation.
+@insertcopying
 @end titlepage
 
 @c @smallbook
@@ -208,17 +197,13 @@ by Free Software Foundation.
 @c Where to find Guile examples.
 @set example-dir doc/examples
 
-@ifinfo
+@ifnottex
 @node Top, Guile License, (dir), (dir)
 @top The Guile Reference Manual
 
-This reference manual documents Guile, GNU's Ubiquitous Intelligent
-Language for Extensions.  It describes how to use Guile in many useful
-and interesting ways.
-
-This Info file contains edition @value{MANUAL_EDITION} of the reference
-manual, corresponding to Guile version @value{VERSION}.
-@end ifinfo
+@insertcopying
+@sp 1
+@end ifnottex
 
 @menu
 Preface
@@ -234,26 +219,30 @@ Part I: Introduction to Guile
 * Obtaining and Installing Guile::
 * Reporting Bugs::              Reporting bugs in Guile or this manual.
 
-Part II: Programming with Guile
+Part II: Writing and Running Guile Scheme
 
-* Programming Intro::           Introduction to this part.
-* Programming Overview::        An overview of Guile programming.
-* Scheme Intro::                Introduction to Guile Scheme.
-* Basic Ideas::                 Basic ideas in Scheme.
+* Running Intro::               Introduction to this part.
+* Guile Scheme::                Guile's implementation of Scheme.
 * Guile Scripting::             How to write Guile scripts.
 * Command Line Handling::       Command line options and arguments.
+* Debugging Features::          Features for debugging errors.
+* Autoconf Support::            Guile-specific configure.in macros.
+* Miscellaneous Tools::         Snarfing, linting, etc.
+* Basic Ideas::                 Basic ideas in Scheme.
+* Further Reading::             Where to find out more about Scheme.
+
+Part III: Guile as an Extension Language
+
+* Programming Intro::           Introduction to this part.
 * Libguile Intro::              Using Guile as an extension language.
-* Guile API::                   Overview of the Guile API.
+* Programming Overview::        An overview of Guile programming.
 * Data Representation::         Data representation in Guile.
 * GH::                          The deprecated GH interface.
-* Debugger User Interface::
-* Autoconf Support::            Guile-specific configure.in macros.
-* Miscellaneous Tools::         Snarfing, linting, etc.
-* Further Reading::             Where to find out more about Scheme programming.
 
-Part III: Guile API Reference
+Part IV: Guile API Reference
 
 * Reference Intro::             Introduction to the Guile API reference.
+* API Overview::                Overview of the Guile API.
 * Simple Data Types::           Numbers, strings, booleans and so on.
 * Compound Data Types::         Data types for holding other data.
 * Procedures and Macros::       Procedures and macros.
@@ -266,12 +255,12 @@ Part III: Guile API Reference
 * Objects::                     Low level object orientation support.
 * Modules::                     Designing reusable code libraries.
 * Scheduling::                  Threads, mutexes, asyncs and dynamic roots.
-* Options and Config::          Runtime options and configuration.
+* Options and Config::          Configuration, features and runtime options.
 * Translation::                 Support for translating other languages.
 * Debugging::                   Internal debugging interface.
 * Deprecated::                  Features that are planned to disappear.
 
-Part IV: Guile Modules
+Part V: Guile Modules
 
 * SLIB::                        Using the SLIB Scheme library.
 * POSIX::                       POSIX system calls and networking.
@@ -291,10 +280,11 @@ Indices
 * Variable Index::
 * Type Index::
 * R5RS Index::
-* Guile Extensions Index::
 
 @end menu
 
+@contents
+
 @include preface.texi
 
 @iftex
@@ -305,43 +295,61 @@ Indices
 @include intro.texi
 
 @page
-@node Programming Intro
-@unnumbered Part II: Programming with Guile
+@node Running Intro
+@unnumbered Part II: Writing and Running Guile Scheme
 
-In this part of the manual, we aim to present a wide ranging picture of
-what it means to program using Guile, to provide guidance, practical
-guidelines and tips for @emph{how} to program in Guile, and to document
-the tools that are available to help you with your programming.  For
-detailed reference information on the variables, functions etc. that
-make up Guile's application programming interface (API), please refer to
-Part III (@pxref{Reference Intro,,Part III --- Guile API Reference}).
+Guile's core language is Scheme, and an awful lot can be achieved simply
+by using Guile to write and run Scheme programs.  In this part of the
+manual, we explain how to use Guile in this mode, and describe the tools
+that Guile provides to help you with script writing, debugging and
+packaging your programs for distribution.
 
-We begin in the first chapter of this part by looking at the programming
-options available.
+For readers who are not yet familiar with the Scheme language, this part
+includes a chapter that presents the basic concepts of the language, and
+gives references to freely available Scheme tutorial material on the
+web.
+
+For detailed reference information on the variables, functions etc. that
+make up Guile's application programming interface (API), please refer to
+Part IV (@pxref{Reference Intro,,Part IV --- Guile API Reference}).
 
-@include program.texi
 @include scheme-intro.texi
-@include scheme-ideas.texi
 @include scripts.texi
 @include script-getopt.texi
-@include extend.texi
-@include scm.texi
-@include data-rep.texi
-@include gh.texi
 @include debugging.texi
 @include autoconf.texi
 @include tools.texi
+@include scheme-ideas.texi
 @include scheme-reading.texi
 
+@page
+@node Programming Intro
+@unnumbered Part III: Guile as an Extension Language
+
+In this part of the manual, we aim to present a wide ranging picture of
+what it means to use Guile as an application extension language, to
+provide guidance, practical guidelines and tips for @emph{how} to
+program in Guile, and to document the tools that are available to help
+you with your programming.  For detailed reference information on the
+variables, functions etc. that make up Guile's application programming
+interface (API), please refer to Part IV (@pxref{Reference Intro,,Part
+IV --- Guile API Reference}).
+
+@include extend.texi
+@include program.texi
+@include data-rep.texi
+@include gh.texi
+
 @page
 @node Reference Intro
-@unnumbered Part III: Guile API Reference
+@unnumbered Part IV: Guile API Reference
 
 Guile provides an application programming interface (@dfn{API}) to
 developers in two core languages: Scheme and C.  This part of the manual
 contains reference documentation for all of the functionality that is
 available through both Scheme and C interfaces.
 
+@include scm.texi
 @include scheme-data.texi
 @include scheme-compound.texi
 @include scheme-procedures.texi
@@ -361,7 +369,7 @@ available through both Scheme and C interfaces.
 
 @iftex
 @page
-@unnumbered{Part IV: Guile Modules}
+@unnumbered{Part V: Guile Modules}
 @end iftex
 
 @include slib.texi
@@ -380,6 +388,4 @@ available through both Scheme and C interfaces.
 @include indices.texi
 @include scheme-indices.texi
 
-@contents
-
 @bye