* Consolidate authorship information in AUTHORS 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.7 2001-04-28 23:38:52 ossau 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-13/14:: String library and character set library.
172 * Expect:: Controlling interactive programs with Guile.
173 * The Scheme shell (scsh)::
174 The SCSH compatibility module has been made an
175 add-on, so maybe it shouldn't be documented here
176 (though it is nice to have a link from here to the
177 Guile-scsh manual, if one exists).
178 * Tcl/Tk Interface::
179
180 Part IV: Guile Scripting
181
182 * Guile Scripting:: How to write Guile scripts.
183 * Command Line Handling:: Command line options and arguments.
184
185 Part V: Extending Applications Using Guile
186
187 * Libguile Intro:: Using Guile as an extension language.
188 * GH:: GH: a portable C to Scheme interface.
189 * Data Representation:: Data representation in Guile.
190 * Scheme Primitives:: Writing Scheme primitives in C.
191 * I/O Extensions:: Using and extending ports in C.
192 * Handling Errors:: How to handle errors in C code.
193
194 Appendices
195
196 * Obtaining and Installing Guile::
197 * Debugger User Interface::
198
199 Indices
200
201 * Concept Index::
202 * Procedure Index::
203 * Variable Index::
204 * Type Index::
205
206 @end menu
207
208 @include preface.texi
209
210 @c preliminary
211 @iftex
212 @page
213 @unnumbered{Part I: Introduction to Guile}
214 @end iftex
215
216 @include intro.texi
217
218 @c programming in Scheme
219 @iftex
220 @page
221 @unnumbered{Part II: Guile Scheme}
222 @end iftex
223
224 @include scheme-intro.texi
225 @include scheme-ideas.texi
226 @include scheme-data.texi
227 @include scheme-procedures.texi
228 @include scheme-utility.texi
229 @include scheme-binding.texi
230 @include scheme-control.texi
231 @include scheme-io.texi
232 @include scheme-evaluation.texi
233 @include scheme-memory.texi
234 @include scheme-modules.texi
235 @include scheme-scheduling.texi
236 @c object orientation support here
237 @include scheme-options.texi
238 @include scheme-translation.texi
239 @include scheme-debug.texi
240 @include deprecated.texi
241 @include scheme-reading.texi
242 @include scheme-indices.texi
243
244 @c Unix system interface
245 @iftex
246 @page
247 @unnumbered{Part III: Guile Modules}
248 @end iftex
249
250 @include slib.texi
251 @include posix.texi
252 @include srfi-13-14.texi
253 @include expect.texi
254 @include scsh.texi
255 @include tcltk.texi
256
257 @c Guile as an scripting language
258 @iftex
259 @page
260 @unnumbered{Part IV: Guile Scripting}
261 @end iftex
262
263 @include scripts.texi
264 @include script-getopt.texi
265
266 @c Guile as an extension language
267 @iftex
268 @page
269 @unnumbered{Part V: Extending Applications Using Guile}
270 @end iftex
271
272 @include extend.texi
273 @include gh.texi
274 @include data-rep.texi
275 @include scm.texi
276
277 @c Appendices
278 @iftex
279 @page
280 @unnumbered{Appendices}
281 @end iftex
282
283 @include appendices.texi
284
285 @c Indices
286 @iftex
287 @page
288 @unnumbered{Indices}
289 @end iftex
290
291 @include indices.texi
292
293 @contents
294
295 @bye