preface.texi 6.7 KB

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