* misc-modules.texi: New file.
[bpt/guile.git] / doc / guile.texi
1 \input texinfo
2 @c -*-texinfo-*-
3 @c %**start of header
4 @setfilename guile.info
5 @settitle Guile Reference Manual
6 @set guile
7 @c %**end of header
8
9 @c Notes: (distilled from Jim's and Tim's notes, and kept up to date)
10 @c
11 @c Remember to use "primitive" whereever appropriate.
12 @c FIXME: gotta change existing "subr" uses to "Primitive".
13 @c [JimB:] In my text for the Guile snarfer, I've used the term "subr"
14 @c to denote a C function made available to the Scheme world as a
15 @c function. This terminology is weird, but consistent with the
16 @c function names and also with Emacs Lisp, which I assume takes
17 @c Maclisp's lead.
18 @c
19 @c When adding a new function to the Guile manual, please document
20 @c it with @deffn as one of `primitive', `procedure', or `syntax'.
21 @c
22 @c For a list of Guile primitives that are not yet incorporated into the
23 @c reference manual, see the file `new-docstrings.texi', which holds all
24 @c the docstrings snarfed from the libguile C sources for primitives
25 @c that are not in the reference manual. If you have worked with some
26 @c of these concepts, implemented them, or just happen to know what they
27 @c do, please write up a little explanation -- it would be a big help.
28 @c Alternatively, if you know of a great reason why some of these should
29 @c *not* go in the manual, please let me know.
30
31 @c Define indices that are used in the Guile Scheme part of the
32 @c reference manual to group stuff according to whether it is R5RS or a
33 @c Guile extension.
34 @defcodeindex rn
35 @defcodeindex ge
36
37 @include version.texi
38
39 @c @iftex
40 @c @cropmarks
41 @c @end iftex
42
43 @dircategory The Algorithmic Language Scheme
44 @direntry
45 * Guile Reference: (guile). The Guile reference manual.
46 @end direntry
47
48 @setchapternewpage off
49
50 @ifinfo
51 Guile Reference Manual
52 Copyright (C) 1996 Free Software Foundation @*
53 Copyright (C) 1997 Free Software Foundation @*
54 Copyright (C) 2000 Free Software Foundation @*
55 Copyright (C) 2001 Free Software Foundation
56
57 Permission is granted to make and distribute verbatim copies of
58 this manual provided the copyright notice and this permission notice
59 are preserved on all copies.
60
61 @ignore
62 Permission is granted to process this file through TeX and print the
63 results, provided the printed document carries copying permission
64 notice identical to this one except for the removal of this paragraph
65 (this paragraph not being relevant to the printed manual).
66 @end ignore
67
68 Permission is granted to copy and distribute modified versions of this
69 manual under the conditions for verbatim copying, provided that the entire
70 resulting derived work is distributed under the terms of a permission
71 notice identical to this one.
72
73 Permission is granted to copy and distribute translations of this manual
74 into another language, under the above conditions for modified versions,
75 except that this permission notice may be stated in a translation approved
76 by the Free Software Foundation.
77 @end ifinfo
78
79 @titlepage
80 @sp 10
81 @comment The title is printed in a large font.
82 @title Guile Reference Manual
83 @subtitle $Id: guile.texi,v 1.12 2001-06-29 21:43:17 mgrabmue Exp $
84 @subtitle For use with Guile @value{VERSION}
85 @include AUTHORS
86
87 @c The following two commands start the copyright page.
88 @page
89 @vskip 0pt plus 1filll
90 @vskip 0pt plus 1filll
91 Copyright @copyright{} 1996 Free Software Foundation
92
93 Copyright @copyright{} 1997 Free Software Foundation
94
95 Copyright @copyright{} 2000 Free Software Foundation
96
97 Permission is granted to make and distribute verbatim copies of
98 this manual provided the copyright notice and this permission notice
99 are preserved on all copies.
100
101 Permission is granted to copy and distribute modified versions of this
102 manual under the conditions for verbatim copying, provided that the entire
103 resulting derived work is distributed under the terms of a permission
104 notice identical to this one.
105
106 Permission is granted to copy and distribute translations of this manual
107 into another language, under the above conditions for modified versions,
108 except that this permission notice may be stated in a translation approved
109 by Free Software Foundation.
110 @end titlepage
111
112 @c @smallbook
113 @finalout
114 @headings double
115
116 @c Where to find Guile examples.
117 @set example-dir doc/examples
118
119 @ifinfo
120 @node Top, Guile License, (dir), (dir)
121 @top The Guile Reference Manual
122
123 This reference manual documents Guile, GNU's Ubiquitous Intelligent
124 Language for Extensions. It describes how to use Guile in many useful
125 and interesting ways.
126
127 This Info file contains edition 1.0 of the reference manual,
128 corresponding to Guile version @value{VERSION}.
129 @end ifinfo
130
131 @menu
132 Preface
133
134 * Guile License:: Conditions for copying and using Guile.
135 * Manual Layout:: How to read the rest of this manual.
136 * Manual Conventions:: Conventional terminology.
137
138 Part I: Introduction to Guile
139
140 * What is Guile?:: And what does it do?
141 * Whirlwind Tour:: An introductory whirlwind tour.
142 * Reporting Bugs:: Reporting bugs in Guile or this manual.
143
144 Part II: Guile Scheme
145
146 * Scheme Intro:: Introduction to Guile Scheme.
147 * Basic Ideas:: Basic ideas in Scheme.
148 * Data Types:: Data types for generic use.
149 * Procedures and Macros:: Procedures and macros.
150 * Utility Functions:: General utility functions.
151 * Binding Constructs:: Definitions and variable bindings.
152 * Control Mechanisms:: Controlling the flow of program execution.
153 * Input and Output:: Ports, reading and writing.
154 * Read/Load/Eval:: Reading and evaluating Scheme code.
155 * Memory Management:: Memory management and garbage collection.
156 * Objects:: Low level object orientation support.
157 * Modules:: Designing reusable code libraries.
158 * Scheduling:: Threads, mutexes, asyncs and dynamic roots.
159 * Options and Config:: Runtime options and configuration.
160 * Translation:: Support for translating other languages.
161 * Debugging:: Internal debugging interface.
162 * Deprecated:: Features that are planned to disappear.
163 * Further Reading:: Where to find out more about Scheme programming.
164 * R5RS Index::
165 * Guile Extensions Index::
166
167 Part III: Guile Modules
168
169 * SLIB:: Using the SLIB Scheme library.
170 * POSIX:: POSIX system calls and networking.
171 * SRFI Support:: Support for various SRFIs.
172 * Readline Support:: Module for using the readline library.
173 * Value History:: Maintaining a value history in the REPL.
174 * Pretty Printing:: Nicely formatting Scheme objects for output.
175 * Formatted Output:: The @code{format} procedure.
176 * Expect:: Controlling interactive programs with Guile.
177 * The Scheme shell (scsh)::
178 The SCSH compatibility module has been made an
179 add-on, so maybe it shouldn't be documented here
180 (though it is nice to have a link from here to the
181 Guile-scsh manual, if one exists).
182 @c * Tcl/Tk Interface::
183
184 Part IV: Guile Scripting
185
186 * Guile Scripting:: How to write Guile scripts.
187 * Command Line Handling:: Command line options and arguments.
188
189 Part V: Extending Applications Using Guile
190
191 * Libguile Intro:: Using Guile as an extension language.
192 * Data Representation:: Data representation in Guile.
193 * Scheme Primitives:: Writing Scheme primitives in C.
194 * I/O Extensions:: Using and extending ports in C.
195 * Handling Errors:: How to handle errors in C code.
196 * GH:: The deprecated GH interface.
197
198 Appendices
199
200 * Obtaining and Installing Guile::
201 * Debugger User Interface::
202
203 Indices
204
205 * Concept Index::
206 * Procedure Index::
207 * Variable Index::
208 * Type Index::
209
210 @end menu
211
212 @include preface.texi
213
214 @c preliminary
215 @iftex
216 @page
217 @unnumbered{Part I: Introduction to Guile}
218 @end iftex
219
220 @include intro.texi
221
222 @c programming in Scheme
223 @iftex
224 @page
225 @unnumbered{Part II: Guile Scheme}
226 @end iftex
227
228 @include scheme-intro.texi
229 @include scheme-ideas.texi
230 @include scheme-data.texi
231 @include scheme-procedures.texi
232 @include scheme-utility.texi
233 @include scheme-binding.texi
234 @include scheme-control.texi
235 @include scheme-io.texi
236 @include scheme-evaluation.texi
237 @include scheme-memory.texi
238 @include scheme-modules.texi
239 @include scheme-scheduling.texi
240 @c object orientation support here
241 @include scheme-options.texi
242 @include scheme-translation.texi
243 @include scheme-debug.texi
244 @include deprecated.texi
245 @include scheme-reading.texi
246 @include scheme-indices.texi
247
248 @c Unix system interface
249 @iftex
250 @page
251 @unnumbered{Part III: Guile Modules}
252 @end iftex
253
254 @include slib.texi
255 @include posix.texi
256 @include srfi-modules.texi
257 @include repl-modules.texi
258 @include misc-modules.texi
259 @include expect.texi
260 @include scsh.texi
261 @c @include tcltk.texi
262
263 @c Guile as an scripting language
264 @iftex
265 @page
266 @unnumbered{Part IV: Guile Scripting}
267 @end iftex
268
269 @include scripts.texi
270 @include script-getopt.texi
271
272 @c Guile as an extension language
273 @iftex
274 @page
275 @unnumbered{Part V: Extending Applications Using Guile}
276 @end iftex
277
278 @include extend.texi
279 @include data-rep.texi
280 @include scm.texi
281 @include gh.texi
282
283 @c Appendices
284 @iftex
285 @page
286 @unnumbered{Appendices}
287 @end iftex
288
289 @include appendices.texi
290
291 @c Indices
292 @iftex
293 @page
294 @unnumbered{Indices}
295 @end iftex
296
297 @include indices.texi
298
299 @contents
300
301 @bye