Commit | Line | Data |
---|---|---|
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 |
10 | This manual documents version @value{VERSION} of Guile, GNU's |
11 | Ubiquitous Intelligent Language for Extensions. It describes how to | |
12 | use 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 | 25 | The manual is divided into the following chapters. |
a0e07ba4 | 26 | |
96e05382 | 27 | @table @strong |
3229f68b MV |
28 | @item Chapter 1: Introduction to Guile |
29 | This part provides an overview of what Guile is and how you can use | |
30 | it. A whirlwind tour shows how Guile can be used interactively and as | |
31 | a script interpreter, how to link Guile into your own applications, | |
32 | and how to write modules of interpreted and compiled code for use with | |
96e05382 MV |
33 | Guile. Everything introduced here is documented again and in full by |
34 | the later parts of the manual. This part also explains how to obtain | |
35 | and install new versions of Guile, and how to report bugs effectively. | |
36 | ||
3229f68b | 37 | @item Chapter 2: Programming in Scheme |
31c73458 | 38 | This part provides an overview of programming in Scheme with Guile. |
3229f68b MV |
39 | It covers how to invoke the @code{guile} program from the command-line |
40 | and how to write scripts in Scheme. It also gives an introduction | |
41 | into the basic ideas of Scheme itself and to the various extensions | |
42 | that Guile offers beyond standard Scheme. | |
43 | ||
44 | @item Chapter 3: Programming in C | |
45 | This part provides an overview of how to use Guile in a C program. It | |
46 | discusses the fundamental concepts that you need to understand to | |
47 | access the features of Guile, such as dynamic types and the garbage | |
48 | collector. It explains in a tutorial like manner how to define new | |
49 | data types and functions for the use by Scheme programs. | |
50 | ||
51 | @item Chapter 4: Guile API Reference | |
52 | This part of the manual documents the Guile @acronym{API} in | |
9401323e | 53 | functionality-based groups with the Scheme and C interfaces presented |
3229f68b MV |
54 | side by side. |
55 | ||
56 | @item Chapter 5: Guile Modules | |
96e05382 MV |
57 | Describes some important modules, distributed as part of the Guile |
58 | distribution, that extend the functionality provided by the Guile | |
3229f68b | 59 | Scheme core. |
a0e07ba4 | 60 | |
eb12b401 NJ |
61 | @item Chapter 6: GOOPS |
62 | Describes GOOPS, an object oriented extension to Guile that provides | |
63 | classes, 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 | |
71 | We use some conventions in this manual. | |
72 | ||
73 | @itemize @bullet | |
74 | ||
75 | @item | |
31c73458 | 76 | For 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 | |
81 | returned otherwise. To clarify: @var{val} will @strong{only} be | |
82 | returned when @var{condition} is true. | |
a0e07ba4 NJ |
83 | @cindex iff |
84 | ||
85 | @item | |
86 | In examples and procedure descriptions and all other places where the | |
87 | evaluation of Scheme expression is shown, we use some notation for | |
88 | denoting the output and evaluation results of expressions. | |
89 | ||
cef6deaf | 90 | The symbol @samp{@result{}} is used to tell which value is returned by |
a0e07ba4 NJ |
91 | an evaluation: |
92 | ||
93 | @lisp | |
94 | (+ 1 2) | |
cef6deaf | 95 | @result{} 3 |
a0e07ba4 NJ |
96 | @end lisp |
97 | ||
98 | Some procedures produce some output besides returning a value. This | |
cef6deaf | 99 | is 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 |
107 | As 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 | ||
118 | The Guile reference and tutorial manuals were written and edited | |
119 | largely by Mark Galassi and Jim Blandy. In particular, Jim wrote the | |
120 | original tutorial on Guile's data representation and the C API for | |
121 | accessing Guile objects. | |
122 | ||
123 | Significant portions were contributed by Gary Houston (contributions | |
124 | to POSIX system calls and networking, expect, I/O internals and | |
125 | extensions, slib installation, error handling) and Tim Pierce | |
126 | (sections on script interpreter triggers, alists, function tracing). | |
127 | ||
128 | Tom Lord contributed a great deal of material with early Guile | |
129 | snapshots; although most of this text has been rewritten, all of it | |
130 | was important, and some of the structure remains. | |
131 | ||
132 | Aubrey Jaffer wrote the SCM Scheme implementation and manual upon | |
133 | which the Guile program and manual are based. Some portions of the | |
134 | SCM and SLIB manuals have been included here verbatim. | |
135 | ||
136 | Since Guile 1.4, Neil Jerram has been maintaining and improving the | |
137 | reference manual. Among other contributions, he wrote the Basic | |
138 | Ideas chapter, developed the tools for keeping the manual in sync | |
139 | with snarfed libguile docstrings, and reorganized the structure so as | |
140 | to accommodate docstrings for all Guile's primitives. | |
141 | ||
142 | Martin Grabmueller has made substantial contributions throughout the | |
143 | reference manual in preparation for the Guile 1.6 release, including | |
144 | filling out a lot of the documentation of Scheme data types, control | |
145 | mechanisms and procedures. In addition, he wrote the documentation | |
146 | for Guile's SRFI modules and modules associated with the Guile REPL. | |
147 | ||
eb12b401 NJ |
148 | The chapter on GOOPS was written by Christian Lynbech, Mikael |
149 | Djurfeldt 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 | |
158 | Guile is Free Software. Guile is copyrighted, not public domain, and | |
159 | there are restrictions on its distribution or redistribution, but | |
160 | these restrictions are designed to permit everything a cooperating | |
161 | person would want to do. | |
162 | ||
163 | @itemize @bullet | |
164 | @item | |
165 | The Guile library (libguile) and supporting files are published under | |
53befeb7 NJ |
166 | the terms of the GNU Lesser General Public License version 3 or later. |
167 | See the files @file{COPYING.LESSER} and @file{COPYING}. | |
916542f1 MV |
168 | |
169 | @item | |
170 | The Guile readline module is published under the terms of the GNU | |
53befeb7 | 171 | General Public License version 3 or later. See the file @file{COPYING}. |
916542f1 MV |
172 | |
173 | @item | |
174 | The manual you're now reading is published under the terms of the GNU | |
175 | Free Documentation License (@pxref{GNU Free Documentation License}). | |
176 | @end itemize | |
177 | ||
178 | C code linking to the Guile library is subject to terms of that | |
179 | library. Basically such code may be published on any terms, provided | |
180 | users can re-link against a new or modified version of Guile. | |
181 | ||
182 | C code linking to the Guile readline module is subject to the terms of | |
183 | that module. Basically such code must be published on Free terms. | |
184 | ||
185 | Scheme level code written to be run by Guile (but not derived from | |
31c73458 | 186 | Guile itself) is not restricted in any way, and may be published on any |
916542f1 MV |
187 | terms. We encourage authors to publish on Free terms. |
188 | ||
189 | You must be aware there is no warranty whatsoever for Guile. This is | |
190 | described in full in the licenses. | |
191 | ||
a0e07ba4 NJ |
192 | |
193 | @c Local Variables: | |
194 | @c TeX-master: "guile.texi" | |
195 | @c End: |