* misc-modules.texi: New file.
[bpt/guile.git] / doc / guile.texi
CommitLineData
38a93523
NJ
1\input texinfo
2@c -*-texinfo-*-
3@c %**start of header
4@setfilename guile.info
5@settitle Guile Reference Manual
370babab 6@set guile
38a93523
NJ
7@c %**end of header
8
370babab
NJ
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.
38a93523 12@c FIXME: gotta change existing "subr" uses to "Primitive".
370babab
NJ
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
38a93523
NJ
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
370babab
NJ
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.
38a93523
NJ
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.
5c4b24e1 34@defcodeindex rn
38a93523
NJ
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
51Guile Reference Manual
52Copyright (C) 1996 Free Software Foundation @*
53Copyright (C) 1997 Free Software Foundation @*
54Copyright (C) 2000 Free Software Foundation @*
55Copyright (C) 2001 Free Software Foundation
56
57Permission is granted to make and distribute verbatim copies of
58this manual provided the copyright notice and this permission notice
59are preserved on all copies.
60
61@ignore
62Permission is granted to process this file through TeX and print the
63results, provided the printed document carries copying permission
64notice 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
68Permission is granted to copy and distribute modified versions of this
69manual under the conditions for verbatim copying, provided that the entire
70resulting derived work is distributed under the terms of a permission
71notice identical to this one.
72
73Permission is granted to copy and distribute translations of this manual
74into another language, under the above conditions for modified versions,
75except that this permission notice may be stated in a translation approved
76by 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
c2537425 83@subtitle $Id: guile.texi,v 1.12 2001-06-29 21:43:17 mgrabmue Exp $
38a93523 84@subtitle For use with Guile @value{VERSION}
370babab
NJ
85@include AUTHORS
86
38a93523
NJ
87@c The following two commands start the copyright page.
88@page
89@vskip 0pt plus 1filll
90@vskip 0pt plus 1filll
91Copyright @copyright{} 1996 Free Software Foundation
92
93Copyright @copyright{} 1997 Free Software Foundation
94
95Copyright @copyright{} 2000 Free Software Foundation
96
97Permission is granted to make and distribute verbatim copies of
98this manual provided the copyright notice and this permission notice
99are preserved on all copies.
100
101Permission is granted to copy and distribute modified versions of this
102manual under the conditions for verbatim copying, provided that the entire
103resulting derived work is distributed under the terms of a permission
104notice identical to this one.
105
106Permission is granted to copy and distribute translations of this manual
107into another language, under the above conditions for modified versions,
108except that this permission notice may be stated in a translation approved
109by 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
123This reference manual documents Guile, GNU's Ubiquitous Intelligent
124Language for Extensions. It describes how to use Guile in many useful
125and interesting ways.
126
127This Info file contains edition 1.0 of the reference manual,
128corresponding to Guile version @value{VERSION}.
129@end ifinfo
130
131@menu
132Preface
133
134* Guile License:: Conditions for copying and using Guile.
135* Manual Layout:: How to read the rest of this manual.
370babab 136* Manual Conventions:: Conventional terminology.
38a93523
NJ
137
138Part 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
144Part 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
167Part III: Guile Modules
168
169* SLIB:: Using the SLIB Scheme library.
170* POSIX:: POSIX system calls and networking.
fc8529c7 171* SRFI Support:: Support for various SRFIs.
fc8529c7
MG
172* Readline Support:: Module for using the readline library.
173* Value History:: Maintaining a value history in the REPL.
c2537425
MG
174* Pretty Printing:: Nicely formatting Scheme objects for output.
175* Formatted Output:: The @code{format} procedure.
38a93523
NJ
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).
92905faf 182@c * Tcl/Tk Interface::
38a93523
NJ
183
184Part IV: Guile Scripting
185
186* Guile Scripting:: How to write Guile scripts.
b0839672
NJ
187* Command Line Handling:: Command line options and arguments.
188
38a93523
NJ
189Part V: Extending Applications Using Guile
190
191* Libguile Intro:: Using Guile as an extension language.
38a93523
NJ
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.
a0143ebc 196* GH:: The deprecated GH interface.
38a93523
NJ
197
198Appendices
199
200* Obtaining and Installing Guile::
201* Debugger User Interface::
202
203Indices
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
fc8529c7 256@include srfi-modules.texi
fc8529c7 257@include repl-modules.texi
c2537425 258@include misc-modules.texi
38a93523
NJ
259@include expect.texi
260@include scsh.texi
92905faf 261@c @include tcltk.texi
38a93523
NJ
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
b0839672 270@include script-getopt.texi
38a93523
NJ
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
38a93523
NJ
279@include data-rep.texi
280@include scm.texi
a0143ebc 281@include gh.texi
38a93523
NJ
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