1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-13 07:10:20 +02:00

* scheme-data.texi (Alphabetic Case Mapping),

(String Comparison): Rearranged function order.
	(Vectors): Reorganized, new introductory text, docs about read
	syntax.
This commit is contained in:
Martin Grabmüller 2001-04-04 15:20:03 +00:00
parent a082616648
commit 2954ad93a0
2 changed files with 168 additions and 116 deletions

View file

@ -1,3 +1,10 @@
2001-04-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
* scheme-data.texi (Alphabetic Case Mapping),
(String Comparison): Rearranged function order.
(Vectors): Reorganized, new introductory text, docs about read
syntax.
2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de> 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
* scheme-options.texi, scheme-procedures.texi, * scheme-options.texi, scheme-procedures.texi,

View file

@ -1641,60 +1641,6 @@ predicates (REFFIXME), but are defined on character sequences. They all
return @code{#t} on success and @code{#f} on failure. The predicates return @code{#t} on success and @code{#f} on failure. The predicates
ending in @code{-ci} ignore the character case when comparing strings. ending in @code{-ci} ignore the character case when comparing strings.
@r5index string<=?
@c docstring begin (texi-doc-string "guile" "string-ci<=?")
@deffn primitive string-ci<=? s1 s2
Case insensitive lexicographic ordering predicate; return
@code{#t} if @var{s1} is lexicographically less than or equal
to @var{s2} regardless of case.
@end deffn
@r5index string-ci<
@c docstring begin (texi-doc-string "guile" "string-ci<?")
@deffn primitive string-ci<? s1 s2
Case insensitive lexicographic ordering predicate; return
@code{#t} if @var{s1} is lexicographically less than @var{s2}
regardless of case.
@end deffn
@r5index string-ci=?
@c docstring begin (texi-doc-string "guile" "string-ci=?")
@deffn primitive string-ci=? s1 s2
Case-insensitive string equality predicate; return @code{#t} if
the two strings are the same length and their component
characters match (ignoring case) at each position; otherwise
return @code{#f}.
@end deffn
@r5index string-ci>=?
@c docstring begin (texi-doc-string "guile" "string-ci>=?")
@deffn primitive string-ci>=? s1 s2
Case insensitive lexicographic ordering predicate; return
@code{#t} if @var{s1} is lexicographically greater than or
equal to @var{s2} regardless of case.
@end deffn
@r5index string-ci>?
@c docstring begin (texi-doc-string "guile" "string-ci>?")
@deffn primitive string-ci>? s1 s2
Case insensitive lexicographic ordering predicate; return
@code{#t} if @var{s1} is lexicographically greater than
@var{s2} regardless of case.
@end deffn
@r5index string<=?
@c docstring begin (texi-doc-string "guile" "string<=?")
@deffn primitive string<=? s1 s2
Lexicographic ordering predicate; return @code{#t} if @var{s1}
is lexicographically less than or equal to @var{s2}.
@end deffn
@r5index string<?
@c docstring begin (texi-doc-string "guile" "string<?")
@deffn primitive string<? s1 s2
Lexicographic ordering predicate; return @code{#t} if @var{s1}
is lexicographically less than @var{s2}.
@end deffn
@r5index string=? @r5index string=?
@c docstring begin (texi-doc-string "guile" "string=?") @c docstring begin (texi-doc-string "guile" "string=?")
@ -1708,11 +1654,18 @@ letters as though they were the same character, but
characters. characters.
@end deffn @end deffn
@r5index string>=? @r5index string<?
@c docstring begin (texi-doc-string "guile" "string>=?") @c docstring begin (texi-doc-string "guile" "string<?")
@deffn primitive string>=? s1 s2 @deffn primitive string<? s1 s2
Lexicographic ordering predicate; return @code{#t} if @var{s1} Lexicographic ordering predicate; return @code{#t} if @var{s1}
is lexicographically greater than or equal to @var{s2}. is lexicographically less than @var{s2}.
@end deffn
@r5index string<=?
@c docstring begin (texi-doc-string "guile" "string<=?")
@deffn primitive string<=? s1 s2
Lexicographic ordering predicate; return @code{#t} if @var{s1}
is lexicographically less than or equal to @var{s2}.
@end deffn @end deffn
@r5index string>? @r5index string>?
@ -1722,6 +1675,55 @@ Lexicographic ordering predicate; return @code{#t} if @var{s1}
is lexicographically greater than @var{s2}. is lexicographically greater than @var{s2}.
@end deffn @end deffn
@r5index string>=?
@c docstring begin (texi-doc-string "guile" "string>=?")
@deffn primitive string>=? s1 s2
Lexicographic ordering predicate; return @code{#t} if @var{s1}
is lexicographically greater than or equal to @var{s2}.
@end deffn
@r5index string-ci=?
@c docstring begin (texi-doc-string "guile" "string-ci=?")
@deffn primitive string-ci=? s1 s2
Case-insensitive string equality predicate; return @code{#t} if
the two strings are the same length and their component
characters match (ignoring case) at each position; otherwise
return @code{#f}.
@end deffn
@r5index string-ci<
@c docstring begin (texi-doc-string "guile" "string-ci<?")
@deffn primitive string-ci<? s1 s2
Case insensitive lexicographic ordering predicate; return
@code{#t} if @var{s1} is lexicographically less than @var{s2}
regardless of case.
@end deffn
@r5index string<=?
@c docstring begin (texi-doc-string "guile" "string-ci<=?")
@deffn primitive string-ci<=? s1 s2
Case insensitive lexicographic ordering predicate; return
@code{#t} if @var{s1} is lexicographically less than or equal
to @var{s2} regardless of case.
@end deffn
@r5index string-ci>?
@c docstring begin (texi-doc-string "guile" "string-ci>?")
@deffn primitive string-ci>? s1 s2
Case insensitive lexicographic ordering predicate; return
@code{#t} if @var{s1} is lexicographically greater than
@var{s2} regardless of case.
@end deffn
@r5index string-ci>=?
@c docstring begin (texi-doc-string "guile" "string-ci>=?")
@deffn primitive string-ci>=? s1 s2
Case insensitive lexicographic ordering predicate; return
@code{#t} if @var{s1} is lexicographically greater than or
equal to @var{s2} regardless of case.
@end deffn
@node String Searching @node String Searching
@subsection String Searching @subsection String Searching
@ -1771,6 +1773,12 @@ the C library.
These are procedures for mapping strings to their upper-- or lower--case These are procedures for mapping strings to their upper-- or lower--case
equivalents, respectively, or for capitalizing strings. equivalents, respectively, or for capitalizing strings.
@c docstring begin (texi-doc-string "guile" "string-upcase")
@deffn primitive string-upcase str
Return a freshly allocated string containing the characters of
@var{str} in upper case.
@end deffn
@c docstring begin (texi-doc-string "guile" "string-upcase!") @c docstring begin (texi-doc-string "guile" "string-upcase!")
@deffn primitive string-upcase! str @deffn primitive string-upcase! str
Destructively upcase every character in @var{str} and return Destructively upcase every character in @var{str} and return
@ -1782,10 +1790,10 @@ y @result{} "ARRDEFG"
@end lisp @end lisp
@end deffn @end deffn
@c docstring begin (texi-doc-string "guile" "string-upcase") @c docstring begin (texi-doc-string "guile" "string-downcase")
@deffn primitive string-upcase str @deffn primitive string-downcase str
Return a freshly allocated string containing the characters of Return a freshly allocation string containing the characters in
@var{str} in upper case. @var{str} in lower case.
@end deffn @end deffn
@c docstring begin (texi-doc-string "guile" "string-downcase!") @c docstring begin (texi-doc-string "guile" "string-downcase!")
@ -1799,10 +1807,11 @@ y @result{} "arrdefg"
@end lisp @end lisp
@end deffn @end deffn
@c docstring begin (texi-doc-string "guile" "string-downcase") @c docstring begin (texi-doc-string "guile" "string-capitalize")
@deffn primitive string-downcase str @deffn primitive string-capitalize str
Return a freshly allocation string containing the characters in Return a freshly allocated string with the characters in
@var{str} in lower case. @var{str}, where the first character of every word is
capitalized.
@end deffn @end deffn
@c docstring begin (texi-doc-string "guile" "string-capitalize!") @c docstring begin (texi-doc-string "guile" "string-capitalize!")
@ -1816,12 +1825,6 @@ y @result{} "Hello World"
@end lisp @end lisp
@end deffn @end deffn
@c docstring begin (texi-doc-string "guile" "string-capitalize")
@deffn primitive string-capitalize str
Return a freshly allocated string with the characters in
@var{str}, where the first character of every word is
capitalized.
@end deffn
@node Appending Strings @node Appending Strings
@subsection Appending Strings @subsection Appending Strings
@ -1842,20 +1845,6 @@ concatenation of the given strings, @var{args}.
This section contains several remaining string procedures. This section contains several remaining string procedures.
@c FIXME::martin: Should go into vector section.
@c docstring begin (texi-doc-string "guile" "vector-move-left!")
@deffn primitive vector-move-left! vec1 start1 end1 vec2 start2
Vector version of @code{substring-move-left!}.
@end deffn
@c FIXME::martin: Should go into vector section.
@c docstring begin (texi-doc-string "guile" "vector-move-right!")
@deffn primitive vector-move-right! vec1 start1 end1 vec2 start2
Vector version of @code{substring-move-right!}.
@end deffn
@c docstring begin (texi-doc-string "guile" "string-ci->symbol") @c docstring begin (texi-doc-string "guile" "string-ci->symbol")
@deffn primitive string-ci->symbol str @deffn primitive string-ci->symbol str
Return the symbol whose name is @var{str}. @var{str} is Return the symbol whose name is @var{str}. @var{str} is
@ -2946,19 +2935,9 @@ by @code{set-cdr!} is unspecified.
@node Lists @node Lists
@section Lists @section Lists
@r5index null?
@r5index list?
@r5index list @r5index list
@r5index length
@r5index append
@r5index reverse
@r5index list-tail
@r5index list-ref
@r5index memq
@r5index memv
@r5index member
@c docstring begin (texi-doc-string "guile" "list") @c docstring begin (texi-doc-string "guile" "list")
@deffn primitive list . objs @deffn primitive list . objs
Return a list containing @var{objs}, the arguments to Return a list containing @var{objs}, the arguments to
@ -2975,21 +2954,25 @@ result. This function is called @code{list*} in some other
Schemes and in Common LISP. Schemes and in Common LISP.
@end deffn @end deffn
@r5index list?
@c docstring begin (texi-doc-string "guile" "list?") @c docstring begin (texi-doc-string "guile" "list?")
@deffn primitive list? x @deffn primitive list? x
Return @code{#t} iff @var{x} is a proper list, else @code{#f}. Return @code{#t} iff @var{x} is a proper list, else @code{#f}.
@end deffn @end deffn
@r5index null?
@c docstring begin (texi-doc-string "guile" "null?") @c docstring begin (texi-doc-string "guile" "null?")
@deffn primitive null? x @deffn primitive null? x
Return @code{#t} iff @var{x} is the empty list, else @code{#f}. Return @code{#t} iff @var{x} is the empty list, else @code{#f}.
@end deffn @end deffn
@r5index length
@c docstring begin (texi-doc-string "guile" "length") @c docstring begin (texi-doc-string "guile" "length")
@deffn primitive length lst @deffn primitive length lst
Return the number of elements in list @var{lst}. Return the number of elements in list @var{lst}.
@end deffn @end deffn
@r5index append
@c docstring begin (texi-doc-string "guile" "append") @c docstring begin (texi-doc-string "guile" "append")
@deffn primitive append . args @deffn primitive append . args
Return a list consisting of the elements the lists passed as Return a list consisting of the elements the lists passed as
@ -3024,6 +3007,7 @@ Return a pointer to the last pair in @var{lst}, signalling an error if
@var{lst} is circular. @var{lst} is circular.
@end deffn @end deffn
@r5index reverse
@c docstring begin (texi-doc-string "guile" "reverse") @c docstring begin (texi-doc-string "guile" "reverse")
@deffn primitive reverse lst @deffn primitive reverse lst
Return a new list that contains the elements of @var{lst} but Return a new list that contains the elements of @var{lst} but
@ -3046,6 +3030,7 @@ of the modified list is not lost, it is wise to save the return value of
@code{reverse!} @code{reverse!}
@end deffn @end deffn
@r5index list-ref
@c docstring begin (texi-doc-string "guile" "list-ref") @c docstring begin (texi-doc-string "guile" "list-ref")
@deffn primitive list-ref list k @deffn primitive list-ref list k
Return the @var{k}th element from @var{list}. Return the @var{k}th element from @var{list}.
@ -3056,6 +3041,7 @@ Return the @var{k}th element from @var{list}.
Set the @var{k}th element of @var{list} to @var{val}. Set the @var{k}th element of @var{list} to @var{val}.
@end deffn @end deffn
@r5index list-tail
@c docstring begin (texi-doc-string "guile" "list-tail") @c docstring begin (texi-doc-string "guile" "list-tail")
@c docstring begin (texi-doc-string "guile" "list-cdr-ref") @c docstring begin (texi-doc-string "guile" "list-cdr-ref")
@deffn primitive list-tail lst k @deffn primitive list-tail lst k
@ -3084,6 +3070,7 @@ return it.
Return a (newly-created) copy of @var{lst}. Return a (newly-created) copy of @var{lst}.
@end deffn @end deffn
@r5index memq
@c docstring begin (texi-doc-string "guile" "memq") @c docstring begin (texi-doc-string "guile" "memq")
@deffn primitive memq x lst @deffn primitive memq x lst
Return the first sublist of @var{lst} whose car is @code{eq?} Return the first sublist of @var{lst} whose car is @code{eq?}
@ -3094,6 +3081,7 @@ occur in @var{lst}, then @code{#f} (not the empty list) is
returned. returned.
@end deffn @end deffn
@r5index memv
@c docstring begin (texi-doc-string "guile" "memv") @c docstring begin (texi-doc-string "guile" "memv")
@deffn primitive memv x lst @deffn primitive memv x lst
Return the first sublist of @var{lst} whose car is @code{eqv?} Return the first sublist of @var{lst} whose car is @code{eqv?}
@ -3104,6 +3092,7 @@ occur in @var{lst}, then @code{#f} (not the empty list) is
returned. returned.
@end deffn @end deffn
@r5index member
@c docstring begin (texi-doc-string "guile" "member") @c docstring begin (texi-doc-string "guile" "member")
@deffn primitive member x lst @deffn primitive member x lst
Return the first sublist of @var{lst} whose car is Return the first sublist of @var{lst} whose car is
@ -4818,6 +4807,45 @@ table into an a-list of key-value pairs.
@node Vectors @node Vectors
@section Vectors @section Vectors
@c FIXME::martin: This node should come before the non-standard data types.
Vectors are sequences of Scheme objects. Unlike lists, the length of a
vector, once the vector is created, cannot be changed. The advantage of
vectors over lists is that the time required to access one element of a
vector is constant, whereas lists have an access time linear to the
index of the accessed element in the list.
Note that the vectors documented in this section can contain any kind of
Scheme object, it is even possible to have different types of objects in
the same vector.
@subsection Vector Read Syntax
Vectors can literally be entered in source code, just like strings,
characters or some of the other data types. The read syntax for vectors
is as follows: A sharp sign (@code{#}), followed by an opening
parentheses, all elements of the vector in their respective read syntax,
and finally a closing parentheses. The following are examples of the
read syntax for vectors; where the first vector only contains numbers
and the second three different object types: a string, a symbol and a
number in hexidecimal notation.
@lisp
#(1 2 3)
#("Hello" foo #xdeadbeef)
@end lisp
@subsection Vector Predicates
@r5index vector?
@c docstring begin (texi-doc-string "guile" "vector?")
@deffn primitive vector? obj
Return @code{#t} if @var{obj} is a vector, otherwise return
@code{#f}.
@end deffn
@subsection Vector Constructors
@r5index make-vector @r5index make-vector
@c docstring begin (texi-doc-string "guile" "make-vector") @c docstring begin (texi-doc-string "guile" "make-vector")
@deffn primitive make-vector k [fill] @deffn primitive make-vector k [fill]
@ -4851,6 +4879,28 @@ elements of @var{vector}.
@end lisp @end lisp
@end deffn @end deffn
@subsection Vector Modification
A vector created by any of the vector constructor procedures (REFFIXME)
documented above can be modified using the following procedures.
According to R5RS, using any of these procedures on literally entered
vectors is an error, because these vectors are considered to be
constant, although Guile currently does not detect this error.
@r5index vector-set!
@deffn primitive vector-set! vector k obj
@var{k} must be a valid index of @var{vector}.
@code{Vector-set!} stores @var{obj} in element @var{k} of @var{vector}.
The value returned by @samp{vector-set!} is unspecified.
@lisp
(let ((vec (vector 0 '(2 2 2 2) "Anna")))
(vector-set! vec 1 '("Sue" "Sue"))
vec) @result{} #(0 ("Sue" "Sue") "Anna")
(vector-set! '#(0 1 2) 1 "doe") @result{} @emph{error} ; constant vector
@end lisp
@end deffn
@r5index vector-fill! @r5index vector-fill!
@c docstring begin (texi-doc-string "guile" "vector-fill!") @c docstring begin (texi-doc-string "guile" "vector-fill!")
@deffn primitive vector-fill! v fill @deffn primitive vector-fill! v fill
@ -4858,13 +4908,21 @@ Store @var{fill} in every element of @var{vector}. The value
returned by @code{vector-fill!} is unspecified. returned by @code{vector-fill!} is unspecified.
@end deffn @end deffn
@r5index vector? @c docstring begin (texi-doc-string "guile" "vector-move-left!")
@c docstring begin (texi-doc-string "guile" "vector?") @deffn primitive vector-move-left! vec1 start1 end1 vec2 start2
@deffn primitive vector? obj Vector version of @code{substring-move-left!}.
Return @code{#t} if @var{obj} is a vector, otherwise return
@code{#f}.
@end deffn @end deffn
@c docstring begin (texi-doc-string "guile" "vector-move-right!")
@deffn primitive vector-move-right! vec1 start1 end1 vec2 start2
Vector version of @code{substring-move-right!}.
@end deffn
@subsection Vector Selection
These procedures return information about a given vector, such as the
size or what elements are contained in the vector.
@r5index vector-length @r5index vector-length
@deffn primitive vector-length vector @deffn primitive vector-length vector
Returns the number of elements in @var{vector} as an exact integer. Returns the number of elements in @var{vector} as an exact integer.
@ -4885,19 +4943,6 @@ Returns the number of elements in @var{vector} as an exact integer.
@end lisp @end lisp
@end deffn @end deffn
@r5index vector-set!
@deffn primitive vector-set! vector k obj
@var{k} must be a valid index of @var{vector}.
@code{Vector-set!} stores @var{obj} in element @var{k} of @var{vector}.
The value returned by @samp{vector-set!} is unspecified.
@lisp
(let ((vec (vector 0 '(2 2 2 2) "Anna")))
(vector-set! vec 1 '("Sue" "Sue"))
vec) @result{} #(0 ("Sue" "Sue") "Anna")
(vector-set! '#(0 1 2) 1 "doe") @result{} @emph{error} ; constant vector
@end lisp
@end deffn
@node Hooks @node Hooks
@section Hooks @section Hooks