1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 14:21:10 +02:00

Various manual updates, including syncing with stable branch.

This commit is contained in:
Neil Jerram 2002-03-27 21:55:31 +00:00
parent bc76d62865
commit 801892e788
5 changed files with 86 additions and 72 deletions

View file

@ -1,3 +1,14 @@
2002-03-27 Neil Jerram <neil@ossau.uklinux.net>
* scheme-compound.texi (List Searching): Remove docs for
`scm_sloppy_mem*', which no longer exist.
2002-03-24 Neil Jerram <neil@ossau.uklinux.net>
* guile.texi (Top), intro.texi (What is Guile?, The Basic Guile
Package): Use @ifnottex instead of @ifinfo, so that HTML
generation works correctly.
2002-03-24 Marius Vollmer <mvo@zagadka.ping.de> 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
* tools.texi: Updated to reflect changes to the guile-snarf tool. * tools.texi: Updated to reflect changes to the guile-snarf tool.

View file

@ -121,7 +121,7 @@ by the Free Software Foundation.
@sp 10 @sp 10
@comment The title is printed in a large font. @comment The title is printed in a large font.
@title Guile Reference Manual @title Guile Reference Manual
@subtitle $Id: guile.texi,v 1.15 2002-03-16 13:51:03 ossau Exp $ @subtitle $Id: guile.texi,v 1.16 2002-03-27 21:55:31 ossau Exp $
@subtitle For use with Guile @value{VERSION} @subtitle For use with Guile @value{VERSION}
@c AUTHORS @c AUTHORS
@ -208,7 +208,7 @@ by Free Software Foundation.
@c Where to find Guile examples. @c Where to find Guile examples.
@set example-dir doc/examples @set example-dir doc/examples
@ifinfo @ifnottex
@node Top, Guile License, (dir), (dir) @node Top, Guile License, (dir), (dir)
@top The Guile Reference Manual @top The Guile Reference Manual
@ -218,7 +218,7 @@ and interesting ways.
This Info file contains edition @value{MANUAL_EDITION} of the reference This Info file contains edition @value{MANUAL_EDITION} of the reference
manual, corresponding to Guile version @value{VERSION}. manual, corresponding to Guile version @value{VERSION}.
@end ifinfo @end ifnottex
@menu @menu
Preface Preface

View file

@ -8,9 +8,9 @@ described in the
@tex @tex
Revised$^5$ Revised$^5$
@end tex @end tex
@ifinfo @ifnottex
Revised^5 Revised^5
@end ifinfo @end ifnottex
Report on the Algorithmic Language Scheme (usually known as R5RS), Report on the Algorithmic Language Scheme (usually known as R5RS),
providing clean and general data and control structures. Guile goes providing clean and general data and control structures. Guile goes
beyond the rather austere language presented in R5RS, extending it with beyond the rather austere language presented in R5RS, extending it with
@ -899,9 +899,9 @@ known as R5RS, or the
@iftex @iftex
``Revised$^5$ Report on the Algorithmic Language Scheme'', ``Revised$^5$ Report on the Algorithmic Language Scheme'',
@end iftex @end iftex
@ifinfo @ifnottex
``Revised^5 Report on the Algorithmic Language Scheme'', ``Revised^5 Report on the Algorithmic Language Scheme'',
@end ifinfo @end ifnottex
we have included the report in the Guile distribution; we have included the report in the Guile distribution;
@xref{Top, , Introduction, r5rs, Revised(5) Report on the Algorithmic @xref{Top, , Introduction, r5rs, Revised(5) Report on the Algorithmic
Language Scheme}. Language Scheme}.

View file

@ -27,8 +27,6 @@ values can be looked up within them.
@section Pairs @section Pairs
@tpindex Pairs @tpindex Pairs
@c FIXME::martin: Review me!
Pairs are used to combine two Scheme objects into one compound object. Pairs are used to combine two Scheme objects into one compound object.
Hence the name: A pair stores a pair of objects. Hence the name: A pair stores a pair of objects.
@ -133,8 +131,6 @@ by @code{set-cdr!} is unspecified.
@section Lists @section Lists
@tpindex Lists @tpindex Lists
@c FIXME::martin: Review me!
A very important data type in Scheme---as well as in all other Lisp A very important data type in Scheme---as well as in all other Lisp
dialects---is the data type @dfn{list}.@footnote{Strictly speaking, dialects---is the data type @dfn{list}.@footnote{Strictly speaking,
Scheme does not have a real datatype @dfn{list}. Lists are made up of Scheme does not have a real datatype @dfn{list}. Lists are made up of
@ -173,8 +169,6 @@ or a pair which has a list in its cdr.
@node List Syntax @node List Syntax
@subsection List Read Syntax @subsection List Read Syntax
@c FIXME::martin: Review me!
The syntax for lists is an opening parentheses, then all the elements of The syntax for lists is an opening parentheses, then all the elements of
the list (separated by whitespace) and finally a closing the list (separated by whitespace) and finally a closing
parentheses.@footnote{Note that there is no separation character between parentheses.@footnote{Note that there is no separation character between
@ -208,8 +202,6 @@ applications (@pxref{Simple Invocation}).
@node List Predicates @node List Predicates
@subsection List Predicates @subsection List Predicates
@c FIXME::martin: Review me!
Often it is useful to test whether a given Scheme object is a list or Often it is useful to test whether a given Scheme object is a list or
not. List-processing procedures could use this information to test not. List-processing procedures could use this information to test
whether their input is valid, or they could do different things whether their input is valid, or they could do different things
@ -279,8 +271,6 @@ use the procedure @code{copy-tree} (@pxref{Copying}).
@node List Selection @node List Selection
@subsection List Selection @subsection List Selection
@c FIXME::martin: Review me!
These procedures are used to get some information about a list, or to These procedures are used to get some information about a list, or to
retrieve one or more elements of a list. retrieve one or more elements of a list.
@ -323,8 +313,6 @@ return it.
@node Append/Reverse @node Append/Reverse
@subsection Append and Reverse @subsection Append and Reverse
@c FIXME::martin: Review me!
@code{append} and @code{append!} are used to concatenate two or more @code{append} and @code{append!} are used to concatenate two or more
lists in order to form a new list. @code{reverse} and @code{reverse!} lists in order to form a new list. @code{reverse} and @code{reverse!}
return lists with the same elements as their arguments, but in reverse return lists with the same elements as their arguments, but in reverse
@ -463,8 +451,6 @@ Like @code{delete!}, but only deletes the first occurrence of
@node List Searching @node List Searching
@subsection List Searching @subsection List Searching
@c FIXME::martin: Review me!
The following procedures search lists for particular elements. They use The following procedures search lists for particular elements. They use
different comparison predicates for comparing list elements with the different comparison predicates for comparing list elements with the
object to be searched. When they fail, they return @code{#f}, otherwise object to be searched. When they fail, they return @code{#f}, otherwise
@ -504,33 +490,10 @@ the non-empty lists returned by @code{(list-tail @var{lst}
empty list) is returned. empty list) is returned.
@end deffn @end deffn
[FIXME: Is there any reason to have the `sloppy' functions available at
high level at all? Maybe these docs should be relegated to a "Guile
Internals" node or something. -twp]
@deffn {Scheme Procedure} sloppy-memq x lst
This procedure behaves like @code{memq}, but does no type or error checking.
Its use is recommended only in writing Guile internals,
not for high-level Scheme programs.
@end deffn
@deffn {Scheme Procedure} sloppy-memv x lst
This procedure behaves like @code{memv}, but does no type or error checking.
Its use is recommended only in writing Guile internals,
not for high-level Scheme programs.
@end deffn
@deffn {Scheme Procedure} sloppy-member x lst
This procedure behaves like @code{member}, but does no type or error checking.
Its use is recommended only in writing Guile internals,
not for high-level Scheme programs.
@end deffn
@node List Mapping @node List Mapping
@subsection List Mapping @subsection List Mapping
@c FIXME::martin: Review me!
List processing is very convenient in Scheme because the process of List processing is very convenient in Scheme because the process of
iterating over the elements of a list can be highly abstracted. The iterating over the elements of a list can be highly abstracted. The
procedures in this section are the most basic iterating procedures for procedures in this section are the most basic iterating procedures for
@ -893,7 +856,7 @@ The field holds a Scheme value and is GC protected. When a structure is
created with this type of field, the field is initialized to refer to created with this type of field, the field is initialized to refer to
the structure's own handle. This kind of field is mainly useful when the structure's own handle. This kind of field is mainly useful when
mixing Scheme and C code in which the C code may need to compute a mixing Scheme and C code in which the C code may need to compute a
structure's handle given only the address of its malloc-ed data. structure's handle given only the address of its malloc'd data.
@end itemize @end itemize
@ -1713,19 +1676,19 @@ because association lists are so useful, Guile also provides specific
procedures for manipulating them. procedures for manipulating them.
@menu @menu
* Alist Key Equality:: * Alist Key Equality::
* Adding or Setting Alist Entries:: * Adding or Setting Alist Entries::
* Retrieving Alist Entries:: * Retrieving Alist Entries::
* Removing Alist Entries:: * Removing Alist Entries::
* Sloppy Alist Functions:: * Sloppy Alist Functions::
* Alist Example:: * Alist Example::
@end menu @end menu
@node Alist Key Equality @node Alist Key Equality
@subsubsection Alist Key Equality @subsubsection Alist Key Equality
All of Guile's dedicated association list procedures, apart from All of Guile's dedicated association list procedures, apart from
@code{acons}, come in three flavors, depending on the level of equality @code{acons}, come in three flavours, depending on the level of equality
that is required to decide whether an existing key in the association that is required to decide whether an existing key in the association
list is the same as the key that the procedure call uses to identify the list is the same as the key that the procedure call uses to identify the
required entry. required entry.
@ -1864,7 +1827,7 @@ function is @emph{not} destructive; @var{alist} is not modified.
@deffnx {C Function} scm_assq_set_x (alist, key, val) @deffnx {C Function} scm_assq_set_x (alist, key, val)
@deffnx {C Function} scm_assv_set_x (alist, key, val) @deffnx {C Function} scm_assv_set_x (alist, key, val)
@deffnx {C Function} scm_assoc_set_x (alist, key, val) @deffnx {C Function} scm_assoc_set_x (alist, key, val)
Re-associate @var{key} in @var{alist} with @var{value}: find any existing Reassociate @var{key} in @var{alist} with @var{value}: find any existing
@var{alist} entry for @var{key} and associate it with the new @var{alist} entry for @var{key} and associate it with the new
@var{value}. If @var{alist} does not contain an entry for @var{key}, @var{value}. If @var{alist} does not contain an entry for @var{key},
add a new one. Return the (possibly new) alist. add a new one. Return the (possibly new) alist.

View file

@ -3,7 +3,7 @@
@chapter Simple Generic Data Types @chapter Simple Generic Data Types
This chapter describes those of Guile's simple data types which are This chapter describes those of Guile's simple data types which are
primarily are used for their role as items of generic data. By primarily used for their role as items of generic data. By
@dfn{simple} we mean data types that are not primarily used as @dfn{simple} we mean data types that are not primarily used as
containers to hold other data --- i.e. pairs, lists, vectors and so on. containers to hold other data --- i.e. pairs, lists, vectors and so on.
For the documentation of such @dfn{compound} data types, see For the documentation of such @dfn{compound} data types, see
@ -193,8 +193,7 @@ discover whether the value is any of the supported numerical types.
@deffn {Scheme Procedure} number? obj @deffn {Scheme Procedure} number? obj
@deffnx {C Function} scm_number_p (obj) @deffnx {C Function} scm_number_p (obj)
Return @code{#t} if @var{obj} is any kind of number, @code{#f} else. Return @code{#t} if @var{obj} is any kind of number, else @code{#f}.
@findex number?
@end deffn @end deffn
For example: For example:
@ -265,7 +264,7 @@ completely invisible to the Scheme level programmer.
@deffn {Scheme Procedure} integer? x @deffn {Scheme Procedure} integer? x
@deffnx {C Function} scm_integer_p (x) @deffnx {C Function} scm_integer_p (x)
Return @code{#t} if @var{x} is an integer number, @code{#f} else. Return @code{#t} if @var{x} is an integer number, else @code{#f}.
@lisp @lisp
(integer? 487) (integer? 487)
@ -329,11 +328,10 @@ with those that are already implemented.
@deffn {Scheme Procedure} real? obj @deffn {Scheme Procedure} real? obj
@deffnx {C Function} scm_real_p (obj) @deffnx {C Function} scm_real_p (obj)
Return @code{#t} if @var{obj} is a real number, @code{#f} else. Return @code{#t} if @var{obj} is a real number, else @code{#f}.
Note that the sets of integer and rational values form subsets Note that the sets of integer and rational values form subsets
of the set of real numbers, so the predicate will also be fulfilled of the set of real numbers, so the predicate will also be fulfilled
if @var{obj} is an integer number or a rational number. if @var{obj} is an integer number or a rational number.
@findex real?
@end deffn @end deffn
@deffn {Scheme Procedure} rational? x @deffn {Scheme Procedure} rational? x
@ -1464,6 +1462,7 @@ called with string containing unusual characters.
* String Searching:: Searching in strings. * String Searching:: Searching in strings.
* Alphabetic Case Mapping:: Convert the alphabetic case of strings. * Alphabetic Case Mapping:: Convert the alphabetic case of strings.
* Appending Strings:: Appending strings to form a new string. * Appending Strings:: Appending strings to form a new string.
* String Miscellanea:: Miscellaneous string procedures.
@end menu @end menu
@node String Syntax @node String Syntax
@ -1859,6 +1858,19 @@ concatenation of the given strings, @var{args}.
@end deffn @end deffn
@node String Miscellanea
@subsection String Miscellanea
This section contains all remaining string procedures.
@deffn {Scheme Procedure} string-ci->symbol str
@deffnx {C Function} scm_string_ci_to_symbol (str)
Return the symbol whose name is @var{str}. @var{str} is
converted to lowercase before the conversion is done, if Guile
is currently reading symbols case-insensitively.
@end deffn
@node Regular Expressions @node Regular Expressions
@section Regular Expressions @section Regular Expressions
@tpindex Regular expressions @tpindex Regular expressions
@ -2262,6 +2274,7 @@ objects @i{per se}.
@menu @menu
* Symbol Read Syntax:: Extended read syntax for symbols. * Symbol Read Syntax:: Extended read syntax for symbols.
* Symbol Primitives:: Operations related to symbols. * Symbol Primitives:: Operations related to symbols.
* Symbol Tables:: Collecting symbols into obarrays.
* Symbol Discrete:: Using symbols as discrete values. * Symbol Discrete:: Using symbols as discrete values.
* Symbol Props:: Function slots and property lists. * Symbol Props:: Function slots and property lists.
* Symbol Uninterned:: Uninterned symbols. * Symbol Uninterned:: Uninterned symbols.
@ -2271,7 +2284,7 @@ objects @i{per se}.
@node Symbol Read Syntax @node Symbol Read Syntax
@subsection Extended Read Syntax for Symbols @subsection Extended Read Syntax for Symbols
The read syntax for symbols is a sequence of letters, digits, and The read syntax for a symbol is a sequence of letters, digits, and
@dfn{extended alphabetic characters}, beginning with a character that @dfn{extended alphabetic characters}, beginning with a character that
cannot begin a number. In addition, the special cases of @code{+}, cannot begin a number. In addition, the special cases of @code{+},
@code{-}, and @code{...} are read as symbols even though numbers can @code{-}, and @code{...} are read as symbols even though numbers can
@ -2281,7 +2294,7 @@ Extended alphabetic characters may be used within identifiers as if
they were letters. The set of extended alphabetic characters is: they were letters. The set of extended alphabetic characters is:
@example @example
! $ % & * + - . / : < = > ? @@ ^ _ ~ ! $ % & * + - . / : < = > ? @@ ^ _ ~
@end example @end example
In addition to the standard read syntax defined above (which is taken In addition to the standard read syntax defined above (which is taken
@ -2348,8 +2361,8 @@ standard case is lower case:
(eq? 'mISSISSIppi 'mississippi) @result{} #t (eq? 'mISSISSIppi 'mississippi) @result{} #t
(string->symbol "mISSISSIppi") @result{} @r{the symbol with name "mISSISSIppi"} (string->symbol "mISSISSIppi") @result{} @r{the symbol with name "mISSISSIppi"}
(eq? 'bitBlt (string->symbol "bitBlt")) @result{} #f (eq? 'bitBlt (string->symbol "bitBlt")) @result{} #f
(eq? 'JollyWog (eq? 'LolliPop
(string->symbol (symbol->string 'JollyWog))) @result{} #t (string->symbol (symbol->string 'LolliPop))) @result{} #t
(string=? "K. Harper, M.D." (string=? "K. Harper, M.D."
(symbol->string (symbol->string
(string->symbol "K. Harper, M.D."))) @result{}#t (string->symbol "K. Harper, M.D."))) @result{}#t
@ -2391,10 +2404,17 @@ standard case is lower case:
@end lisp @end lisp
@end deffn @end deffn
@deffn {Scheme Procedure} symbol-hash symbol @node Symbol Tables
@deffnx {C Function} scm_symbol_hash (symbol) @subsection Symbol Tables
Return a hash value for @var{symbol}.
@end deffn @c FIXME::martin: Are all these procedures still relevant?
Guile symbol tables are hash tables. Each hash table, also called an
@dfn{obarray} (for `object array'), is a vector of association lists.
Each entry in the alists is a pair (@var{SYMBOL} . @var{VALUE}). To
@dfn{intern} a symbol in a symbol table means to return its
(@var{SYMBOL} . @var{VALUE}) pair, adding a new entry to the symbol
table (with an undefined value) if none is yet present.
@deffn {Scheme Procedure} gensym [prefix] @deffn {Scheme Procedure} gensym [prefix]
@deffnx {C Function} scm_gensym (prefix) @deffnx {C Function} scm_gensym (prefix)
@ -2405,6 +2425,12 @@ is increased by 1 at each call. There is no provision for
resetting the counter. resetting the counter.
@end deffn @end deffn
@vgone{gentemp,1.6}
@vgone{intern-symbol,1.6}
@vgone{string->obarray-symbol,1.6}
@vgone{symbol-binding,1.6}
@vgone{symbol-bound?,1.6}
@node Symbol Discrete @node Symbol Discrete
@subsection Using Symbols as Discrete Values @subsection Using Symbols as Discrete Values
@ -2434,6 +2460,17 @@ Return the contents of @var{symbol}'s @dfn{function slot}.
Change the binding of @var{symbol}'s function slot. Change the binding of @var{symbol}'s function slot.
@end deffn @end deffn
@deffn {Scheme Procedure} symbol-hash symbol
@deffnx {C Function} scm_symbol_hash (symbol)
Return a hash value for @var{symbol}.
@end deffn
@deffn {Scheme Procedure} symbol-interned? obarray string
@deffnx {C Function} scm_symbol_interned_p (obarray, string)
Return @code{#t} if @var{obarray} contains a symbol with name
@var{string}, and @code{#f} otherwise.
@end deffn
@deffn {Scheme Procedure} symbol-pref symbol @deffn {Scheme Procedure} symbol-pref symbol
@deffnx {C Function} scm_symbol_pref (symbol) @deffnx {C Function} scm_symbol_pref (symbol)
Return the @dfn{property list} currently associated with @var{symbol}. Return the @dfn{property list} currently associated with @var{symbol}.
@ -2444,6 +2481,10 @@ Return the @dfn{property list} currently associated with @var{symbol}.
Change the binding of @var{symbol}'s property slot. Change the binding of @var{symbol}'s property slot.
@end deffn @end deffn
@vgone{symbol-set!,1.6}
@vgone{unintern-symbol,1.6}
@node Symbol Uninterned @node Symbol Uninterned
@subsection Uninterned Symbols @subsection Uninterned Symbols
@ -2465,14 +2506,14 @@ just returns that symbol. When not, a new symbol with the name is
created and entered into the table so that it can be found later. created and entered into the table so that it can be found later.
Sometimes you might want to create a symbol that is guaranteed `fresh', Sometimes you might want to create a symbol that is guaranteed `fresh',
i.e., a symbol that did not exist previously. You might also want to i.e. a symbol that did not exist previously. You might also want to
somehow guarantee that no one else will ever unintentionally stumble somehow guarantee that no one else will ever unintentionally stumble
across your symbol in the future. These properties of a symbol are across your symbol in the future. These properties of a symbol are
often needed when generating code during macro expansion. When often needed when generating code during macro expansion. When
introducing new temporary variables, you want to guarantee that they introducing new temporary variables, you want to guarantee that they
don't conflict with variables in other peoples code. don't conflict with variables in other people's code.
The simplest way to arrange for this is to create a new symbol and to The simplest way to arrange for this is to create a new symbol but
not enter it into the global table of all symbols. That way, no one not enter it into the global table of all symbols. That way, no one
will ever get access to your symbol by chance. Symbols that are not in will ever get access to your symbol by chance. Symbols that are not in
the table are called @dfn{uninterned}. Of course, symbols that the table are called @dfn{uninterned}. Of course, symbols that
@ -2531,6 +2572,7 @@ foo-3
@end lisp @end lisp
@node Keywords @node Keywords
@section Keywords @section Keywords
@tpindex Keywords @tpindex Keywords
@ -2717,8 +2759,6 @@ ABORT: (unbound-variable)
@node Keyword Procedures @node Keyword Procedures
@subsection Keyword Procedures @subsection Keyword Procedures
@c FIXME::martin: Review me!
The following procedures can be used for converting symbols to keywords The following procedures can be used for converting symbols to keywords
and back. and back.