Use proper types for hash/assoc functions in `hashtab.h'.
[bpt/guile.git] / doc / ref / guile.texi
index 5202278..332be36 100644 (file)
@@ -4,25 +4,25 @@
 @setfilename guile.info
 @settitle Guile Reference Manual
 @set guile
-@set MANUAL-EDITION 1.1
+@set MANUAL-REVISION 1
 @c %**end of header
 @include version.texi
+@include lib-version.texi
+@include effective-version.texi
 
 @copying
-This reference manual documents Guile, GNU's Ubiquitous Intelligent
-Language for Extensions.  This is edition @value{MANUAL-EDITION}
-corresponding to Guile @value{VERSION}.
+This manual documents Guile version @value{VERSION}.
 
-Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004 Free Software
-Foundation.
+Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2009 Free
+Software Foundation.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with the
+any later version published by the Free Software Foundation; with
 no Invariant Sections, with the Front-Cover Texts being ``A GNU
 Manual,'' and with the Back-Cover Text ``You are free to copy and
 modify this GNU Manual.''.  A copy of the license is included in the
-section entitled "GNU Free Documentation License".
+section entitled ``GNU Free Documentation License''.
 @end copying
 
 
@@ -136,8 +136,8 @@ x
 @sp 10
 @comment The title is printed in a large font.
 @title Guile Reference Manual
-@subtitle Edition @value{MANUAL-EDITION}, for use with Guile @value{VERSION}
-@c @subtitle $Id: guile.texi,v 1.38 2004-09-25 22:35:59 kryde Exp $
+@subtitle Edition @value{EDITION}, revision @value{MANUAL-REVISION}, for use with Guile @value{VERSION}
+@c @subtitle $Id: guile.texi,v 1.49 2008-03-19 22:51:23 ossau Exp $
 
 @c See preface.texi for the list of authors
 @author The Guile Developers
@@ -176,9 +176,14 @@ x
 
 * Guile Modules::
 
+* GOOPS::
+
+* Guile Implementation::
+
+* Autoconf Support::
+
 Appendices
 
-* Data Representation::             All the details.
 * GNU Free Documentation License::  The license of this manual.
 
 Indices
@@ -219,14 +224,15 @@ etc. that make up Guile's application programming interface (API),
 * Basic Ideas::                 Basic ideas in Scheme.
 * Guile Scheme::                Guile's implementation of Scheme.
 * Guile Scripting::             How to write Guile scripts.
-* Debugging Features::          Features for finding errors.
+* Using Guile Interactively::   Guile's REPL features.
+* Using Guile in Emacs::        Guile and Emacs.
 * Further Reading::             Where to find out more about Scheme.
 @end menu
 
 @include scheme-ideas.texi
 @include scheme-intro.texi
 @include scheme-scripts.texi
-@include scheme-debugging.texi
+@include scheme-using.texi
 @include scheme-reading.texi
 
 @node Programming in C
@@ -244,11 +250,13 @@ possible and is done by defining @dfn{smobs}.
 
 The @ref{Programming Overview} section of this part contains general
 musings and guidelines about programming with Guile.  It explores
-different ways to design aprogram around Guile, or how to embed Guile
+different ways to design a program around Guile, or how to embed Guile
 into existing programs.
 
 There is also a pedagogical yet detailed explanation of how the data
-representation of Guile is implemented, @xref{Data Representation}.
+representation of Guile is implemented, see @ref{Data Representation in
+Scheme} and @ref{The Libguile Runtime Environment}.
+
 You don't need to know the details given there to use Guile from C,
 but they are useful when you want to modify Guile itself or when you
 are just curious about how it is all done.
@@ -294,7 +302,7 @@ available through both Scheme and C interfaces.
 * Binding Constructs::          Definitions and variable bindings.
 * Control Mechanisms::          Controlling the flow of program execution.
 * Input and Output::            Ports, reading and writing.
-* Read/Load/Eval::              Reading and evaluating Scheme code.
+* Read/Load/Eval/Compile::      Reading and evaluating Scheme code.
 * Memory Management::           Memory management and garbage collection.
 * Objects::                     Low level object orientation support.
 * Modules::                     Designing reusable code libraries.
@@ -302,8 +310,7 @@ available through both Scheme and C interfaces.
 * Options and Config::          Configuration, features and runtime options.
 * Translation::                 Support for translating other languages.
 * Internationalization::        Support for gettext, etc.
-* Debugging::                   Internal debugging interface.
-* GH::                          The deprecated GH interface.
+* Debugging::                   Debugging infrastructure and Scheme interface.
 @end menu
 
 @include api-overview.texi
@@ -327,7 +334,6 @@ available through both Scheme and C interfaces.
 @include api-translation.texi
 @include api-i18n.texi
 @include api-debug.texi
-@include gh.texi
 
 @node Guile Modules
 @chapter Guile Modules
@@ -341,12 +347,13 @@ available through both Scheme and C interfaces.
 * Value History::               Maintaining a value history in the REPL.
 * Pretty Printing::             Nicely formatting Scheme objects for output.
 * Formatted Output::            The @code{format} procedure.
-* Rx Regexps::                  The Rx regular expression library.
 * File Tree Walk::              Traversing the file system.
 * Queues::                      First-in first-out queuing.
 * Streams::                     Sequences of values.
+* Buffered Input::              Ports made from a reader function.
 * Expect::                     Controlling interactive programs with Guile.
 * The Scheme shell (scsh)::     Using scsh interfaces in Guile.
+* Tracing::                     Tracing program execution.
 @end menu
 
 @include slib.texi
@@ -357,8 +364,49 @@ available through both Scheme and C interfaces.
 @include misc-modules.texi
 @include expect.texi
 @include scsh.texi
+@include scheme-debugging.texi
+
+@include goops.texi
+
+@node Guile Implementation
+@chapter Guile Implementation
 
+At some point, after one has been programming in Scheme for some time,
+another level of Scheme comes into view: its implementation. Knowledge
+of how Scheme can be implemented turns out to be necessary to become
+an expert hacker. As Peter Norvig notes in his retrospective on
+PAIP@footnote{PAIP is the common abbreviation for @cite{Paradigms of
+Artificial Intelligence Programming}, an old but still useful text on
+Lisp. Norvig's retrospective sums up the lessons of PAIP, and can be
+found at @uref{http://norvig.com/Lisp-retro.html}.}, ``The expert Lisp
+programmer eventually develops a good `efficiency model'.''
+
+By this Norvig means that over time, the Lisp hacker eventually
+develops an understanding of how much her code ``costs'' in terms of
+space and time.
+
+This chapter describes Guile as an implementation of Scheme: its
+history, how it represents and evaluates its data, and its compiler.
+This knowledge can help you to make that step from being one who is
+merely familiar with Scheme to being a real hacker.
+
+@menu
+* History::                             A brief history of Guile.
+* Data Representation in Scheme::       Why things aren't just totally
+                                        straightforward, in general terms.
+* The Libguile Runtime Environment::    Low-level details on Guile's C
+                                        runtime library.
+* A Virtual Machine for Guile::         How compiled procedures work.
+* Compiling to the Virtual Machine::    Not as hard as you might think.
+@end menu
+
+@include history.texi
 @include data-rep.texi
+@include vm.texi
+@include compiler.texi
+
+@include autoconf.texi
+
 @include fdl.texi
 
 @iftex