Use proper types for hash/assoc functions in `hashtab.h'.
[bpt/guile.git] / doc / ref / preface.texi
CommitLineData
c6ae9c77
MV
1@c -*-texinfo-*-
2@c This is part of the GNU Guile Reference Manual.
3@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004
4@c Free Software Foundation, Inc.
5@c See the file guile.texi for copying conditions.
6
3229f68b
MV
7@node Preface
8@chapter Preface
a0e07ba4 9
a7c5a2e5
NJ
10This manual documents version @value{VERSION} of Guile, GNU's
11Ubiquitous Intelligent Language for Extensions. It describes how to
12use Guile in many useful and interesting ways.
a0e07ba4 13
3229f68b 14@menu
3229f68b
MV
15* Manual Layout::
16* Manual Conventions::
916542f1
MV
17* Contributors::
18* Guile License::
3229f68b 19@end menu
a0e07ba4 20
e9b91f8e 21
a0e07ba4 22@node Manual Layout
3229f68b 23@section Layout of this Manual
a0e07ba4 24
eb12b401 25The manual is divided into the following chapters.
a0e07ba4 26
96e05382 27@table @strong
3229f68b
MV
28@item Chapter 1: Introduction to Guile
29This part provides an overview of what Guile is and how you can use
30it. A whirlwind tour shows how Guile can be used interactively and as
31a script interpreter, how to link Guile into your own applications,
32and how to write modules of interpreted and compiled code for use with
96e05382
MV
33Guile. Everything introduced here is documented again and in full by
34the later parts of the manual. This part also explains how to obtain
35and install new versions of Guile, and how to report bugs effectively.
36
3229f68b 37@item Chapter 2: Programming in Scheme
31c73458 38This part provides an overview of programming in Scheme with Guile.
3229f68b
MV
39It covers how to invoke the @code{guile} program from the command-line
40and how to write scripts in Scheme. It also gives an introduction
41into the basic ideas of Scheme itself and to the various extensions
42that Guile offers beyond standard Scheme.
43
44@item Chapter 3: Programming in C
45This part provides an overview of how to use Guile in a C program. It
46discusses the fundamental concepts that you need to understand to
47access the features of Guile, such as dynamic types and the garbage
48collector. It explains in a tutorial like manner how to define new
49data types and functions for the use by Scheme programs.
50
51@item Chapter 4: Guile API Reference
52This part of the manual documents the Guile @acronym{API} in
9401323e 53functionality-based groups with the Scheme and C interfaces presented
3229f68b
MV
54side by side.
55
56@item Chapter 5: Guile Modules
96e05382
MV
57Describes some important modules, distributed as part of the Guile
58distribution, that extend the functionality provided by the Guile
3229f68b 59Scheme core.
a0e07ba4 60
eb12b401
NJ
61@item Chapter 6: GOOPS
62Describes GOOPS, an object oriented extension to Guile that provides
63classes, multiple inheritance and generic functions.
64
96e05382 65@end table
a0e07ba4 66
a0e07ba4 67
a0e07ba4 68@node Manual Conventions
3229f68b 69@section Conventions used in this Manual
a0e07ba4
NJ
70
71We use some conventions in this manual.
72
73@itemize @bullet
74
75@item
31c73458 76For some procedures, notably type predicates, we use ``iff'' to mean
cef6deaf
MV
77``if and only if''. The construct is usually something like: `Return
78@var{val} iff @var{condition}', where @var{val} is usually
79``@nicode{#t}'' or ``non-@nicode{#f}''. This typically means that
80@var{val} is returned if @var{condition} holds, and that @samp{#f} is
81returned otherwise. To clarify: @var{val} will @strong{only} be
82returned when @var{condition} is true.
a0e07ba4
NJ
83@cindex iff
84
85@item
86In examples and procedure descriptions and all other places where the
87evaluation of Scheme expression is shown, we use some notation for
88denoting the output and evaluation results of expressions.
89
cef6deaf 90The symbol @samp{@result{}} is used to tell which value is returned by
a0e07ba4
NJ
91an evaluation:
92
93@lisp
94(+ 1 2)
cef6deaf 95@result{} 3
a0e07ba4
NJ
96@end lisp
97
98Some procedures produce some output besides returning a value. This
cef6deaf 99is denoted by the symbol @samp{@print{}}.
a0e07ba4
NJ
100
101@lisp
102(begin (display 1) (newline) 'hooray)
103@print{} 1
cef6deaf 104@result{} hooray
a0e07ba4
NJ
105@end lisp
106
cef6deaf
MV
107As you can see, this code prints @samp{1} (denoted by
108@samp{@print{}}), and returns @code{hooray} (denoted by
109@samp{@result{}}). Do not confuse the two.
110
a0e07ba4
NJ
111@c Add other conventions here.
112
113@end itemize
114
916542f1
MV
115@node Contributors
116@section Contributors to this Manual
117
118The Guile reference and tutorial manuals were written and edited
119largely by Mark Galassi and Jim Blandy. In particular, Jim wrote the
120original tutorial on Guile's data representation and the C API for
121accessing Guile objects.
122
123Significant portions were contributed by Gary Houston (contributions
124to POSIX system calls and networking, expect, I/O internals and
125extensions, slib installation, error handling) and Tim Pierce
126(sections on script interpreter triggers, alists, function tracing).
127
128Tom Lord contributed a great deal of material with early Guile
129snapshots; although most of this text has been rewritten, all of it
130was important, and some of the structure remains.
131
132Aubrey Jaffer wrote the SCM Scheme implementation and manual upon
133which the Guile program and manual are based. Some portions of the
134SCM and SLIB manuals have been included here verbatim.
135
136Since Guile 1.4, Neil Jerram has been maintaining and improving the
137reference manual. Among other contributions, he wrote the Basic
138Ideas chapter, developed the tools for keeping the manual in sync
139with snarfed libguile docstrings, and reorganized the structure so as
140to accommodate docstrings for all Guile's primitives.
141
142Martin Grabmueller has made substantial contributions throughout the
143reference manual in preparation for the Guile 1.6 release, including
144filling out a lot of the documentation of Scheme data types, control
145mechanisms and procedures. In addition, he wrote the documentation
146for Guile's SRFI modules and modules associated with the Guile REPL.
147
eb12b401
NJ
148The chapter on GOOPS was written by Christian Lynbech, Mikael
149Djurfeldt and Neil Jerram.
150
916542f1
MV
151@node Guile License
152@section The Guile License
d10196fc 153@cindex copying
ed435f86
KR
154@cindex GPL
155@cindex LGPL
d10196fc 156@cindex license
916542f1
MV
157
158Guile is Free Software. Guile is copyrighted, not public domain, and
159there are restrictions on its distribution or redistribution, but
160these restrictions are designed to permit everything a cooperating
161person would want to do.
162
163@itemize @bullet
164@item
165The Guile library (libguile) and supporting files are published under
53befeb7
NJ
166the terms of the GNU Lesser General Public License version 3 or later.
167See the files @file{COPYING.LESSER} and @file{COPYING}.
916542f1
MV
168
169@item
170The Guile readline module is published under the terms of the GNU
53befeb7 171General Public License version 3 or later. See the file @file{COPYING}.
916542f1
MV
172
173@item
174The manual you're now reading is published under the terms of the GNU
175Free Documentation License (@pxref{GNU Free Documentation License}).
176@end itemize
177
178C code linking to the Guile library is subject to terms of that
179library. Basically such code may be published on any terms, provided
180users can re-link against a new or modified version of Guile.
181
182C code linking to the Guile readline module is subject to the terms of
183that module. Basically such code must be published on Free terms.
184
185Scheme level code written to be run by Guile (but not derived from
31c73458 186Guile itself) is not restricted in any way, and may be published on any
916542f1
MV
187terms. We encourage authors to publish on Free terms.
188
189You must be aware there is no warranty whatsoever for Guile. This is
190described in full in the licenses.
191
a0e07ba4
NJ
192
193@c Local Variables:
194@c TeX-master: "guile.texi"
195@c End: