diff options
Diffstat (limited to 'slib.info')
-rw-r--r-- | slib.info | 3857 |
1 files changed, 2348 insertions, 1509 deletions
@@ -1,23 +1,18 @@ This is slib.info, produced by makeinfo version 4.8 from slib.texi. -This manual is for SLIB (version 3a4, October 2006), the portable | -Scheme library. | - | -Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, | -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. | - | - Permission is granted to copy, distribute and/or modify this | - document under the terms of the GNU Free Documentation License, | - Version 1.2 or any later version published by the Free Software | - Foundation; with no Invariant Sections, with the Front-Cover Texts | - being "A GNU Manual," and with the Back-Cover Texts as in (a) | - below. A copy of the license is included in the section entitled | - "GNU Free Documentation License." | - | - (a) The FSF's Back-Cover Text is: "You have freedom to copy and | - modify this GNU Manual, like GNU software. Copies published by | - the Free Software Foundation raise funds for GNU development." | - | +This manual is for SLIB (version 3a5, November 2007), the portable | +Scheme library. + +Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. | + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.2 or any later version published by the Free Software + Foundation; with no Invariant Sections, no Front-Cover Texts, and | + no Back-Cover Texts. A copy of the license is included in the | + section entitled "GNU Free Documentation License." | + INFO-DIR-SECTION The Algorithmic Language Scheme START-INFO-DIR-ENTRY * SLIB: (slib). Scheme Library @@ -25,27 +20,22 @@ END-INFO-DIR-ENTRY File: slib.info, Node: Top, Next: The Library System, Prev: (dir), Up: (dir) - | -SLIB | -**** | -This manual is for SLIB (version 3a4, October 2006), the portable | -Scheme library. | +SLIB +**** -Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, | -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. | +This manual is for SLIB (version 3a5, November 2007), the portable | +Scheme library. - Permission is granted to copy, distribute and/or modify this | - document under the terms of the GNU Free Documentation License, | - Version 1.2 or any later version published by the Free Software | - Foundation; with no Invariant Sections, with the Front-Cover Texts | - being "A GNU Manual," and with the Back-Cover Texts as in (a) | - below. A copy of the license is included in the section entitled | - "GNU Free Documentation License." | +Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. | - (a) The FSF's Back-Cover Text is: "You have freedom to copy and | - modify this GNU Manual, like GNU software. Copies published by | - the Free Software Foundation raise funds for GNU development." | + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.2 or any later version published by the Free Software + Foundation; with no Invariant Sections, no Front-Cover Texts, and | + no Back-Cover Texts. A copy of the license is included in the | + section entitled "GNU Free Documentation License." | * Menu: @@ -65,13 +55,13 @@ File: slib.info, Node: The Library System, Next: Universal SLIB Procedures, P 1 The Library System ******************** -"SLIB" is a portable library for the programming language "Scheme". It | -provides a platform independent framework for using "packages" of | -Scheme procedures and syntax. As distributed, SLIB contains useful | -packages for all Scheme implementations. Its catalog can be | -transparently extended to accomodate packages specific to a site, | -implementation, user, or directory. | - | +"SLIB" is a portable library for the programming language "Scheme". It +provides a platform independent framework for using "packages" of +Scheme procedures and syntax. As distributed, SLIB contains useful +packages for all Scheme implementations. Its catalog can be +transparently extended to accomodate packages specific to a site, +implementation, user, or directory. + * Menu: * Feature:: SLIB names. @@ -149,8 +139,8 @@ The generalization of `provided?' for arbitrary features and catalog is (1) scheme-implementation-type is the name symbol of the running Scheme implementation (RScheme, |STk|, Bigloo, chez, Elk, gambit, -guile, JScheme, MacScheme, MITScheme, Pocket-Scheme, Scheme48, -Scheme->C, Scheme48, Scsh, T, umb-scheme, or Vscm). Dependence on +guile, JScheme, kawa, MacScheme, MITScheme, Pocket-Scheme, Scheme48, | +Scheme->C, Scheme48, Scsh, SISC, T, umb-scheme, or Vscm). Dependence on | scheme-implementation-type is almost always the wrong way to do things. @@ -872,7 +862,7 @@ implementations. implementation and the name of the operating system. An unspecified value is returned. - (slib:report-version) => slib "3a4" on scm "5b1" on unix | + (slib:report-version) => slib "3a5" on scm "5b1" on unix | -- Function: slib:report Displays the information of `(slib:report-version)' followed by @@ -887,15 +877,15 @@ implementations. (slib:report) => - slib "3a4" on scm "5b1" on unix | + slib "3a5" on scm "5b1" on unix | (implementation-vicinity) is "/usr/local/lib/scm/" (library-vicinity) is "/usr/local/lib/slib/" (scheme-file-suffix) is ".scm" - loaded slib:features : | + loaded slib:features : trace alist qp sort common-list-functions macro values getopt compiled - implementation slib:features : | + implementation slib:features : bignum complex real rational inexact vicinity ed getenv tmpnam abort transcript with-file @@ -990,6 +980,19 @@ These procedures are provided by all implementations. omitted, in which case it defaults to the value returned by `(current-output-port)'. + -- Function: file-position port | + -- Function: file-position port #f | + PORT must be open to a file. `file-position' returns the current | + position of the character in PORT which will next be read or | + written. If the implementation does not support file-position, | + then `#f' is returned. | + | + -- Function: file-position port k | + PORT must be open to a file. `file-position' sets the current | + position in PORT which will next be read or written. If | + successful, `#f' is returned; otherwise `file-position' returns | + `#f'. | + | -- Function: output-port-width -- Function: output-port-width port Returns the width of PORT, which defaults to @@ -1058,21 +1061,21 @@ These procedures are provided by all implementations. If N is omitted or `#t', a success status is returned to the system (if possible). If N is `#f' a failure is returned to the system (if possible). If N is an integer, then N is returned to - the system (if possible). If the Scheme session cannot exit an - unspecified value is returned from `slib:exit'. + the system (if possible). If the Scheme session cannot exit, then | + an unspecified value is returned from `slib:exit'. | -- Function: browse-url url Web browsers have become so ubiquitous that programming languagues should support a uniform interface to them. - If a `netscape' browser is running, `browse-url' causes the - browser to display the page specified by string URL and returns #t. + If a browser is running, `browse-url' causes the browser to | + display the page specified by string URL and returns `#t'. | If the browser is not running, `browse-url' starts a browser displaying the argument URL. If the browser starts as a - background job, `browse-url' returns #t immediately; if the - browser starts as a foreground job, then `browse-url' returns #t - when the browser exits; otherwise it returns #f. + background job, `browse-url' returns `#t' immediately; if the | + browser starts as a foreground job, then `browse-url' returns `#t' | + when the browser exits; otherwise (if no browser) it returns `#f'. | File: slib.info, Node: Miscellany, Prev: System, Up: Universal SLIB Procedures @@ -1092,16 +1095,7 @@ These procedures are provided by all implementations. => (foo bar) (map identity LST) == (copy-list LST) - - -- Function: expt n k - Returns N raised to the non-negative integer exponent K. - - Example: - (expt 2 5) - => 32 - (expt -3 3) - => -27 - + | 2.5.1 Mutual Exclusion ---------------------- @@ -1141,7 +1135,7 @@ Language changes: (r4rs)Notes.). They are provided by all SLIB implementations. -- Constant: t - Defined as `#t'. | + Defined as `#t'. -- Constant: nil Defined as `#f'. @@ -2141,6 +2135,12 @@ File: slib.info, Node: Binding to multiple values, Next: Guarded LET* special -- Special Form: receive formals expression body ... `http://srfi.schemers.org/srfi-8/srfi-8.html' + `(require 'let-values)' or `(require 'srfi-11)' | + | + -- Special Form: let-values ((formals expression) ...) body ... | + -- Special Form: let-values* ((formals expression) ...) body ... | + `http://srfi.schemers.org/srfi-11/srfi-11.html' | + | File: slib.info, Node: Guarded LET* special form, Next: Guarded COND Clause, Prev: Binding to multiple values, Up: Scheme Syntax Extension Packages @@ -2479,6 +2479,7 @@ File: slib.info, Node: Textual Conversion Packages, Next: Mathematical Package * HTTP and CGI:: Serve WWW sites * Parsing HTML:: 'html-for-each * URI:: Uniform Resource Identifier +* Parsing XML:: 'parse-xml or 'ssax * Printing Scheme:: Nicely * Time and Date:: * NCBI-DNA:: DNA and protein sequences @@ -2548,9 +2549,9 @@ A syntax tree is not built unless the rules explicitly do so. The call graph of grammar rules effectively instantiate the sytnax tree. The JACAL symbolic math system -(`http://swiss.csail.mit.edu/~jaffer/JACAL') uses precedence-parse. | -Its grammar definitions in the file `jacal/English.scm' can serve as | -examples of use. | +(`http://swiss.csail.mit.edu/~jaffer/JACAL') uses precedence-parse. +Its grammar definitions in the file `jacal/English.scm' can serve as +examples of use. ---------- Footnotes ---------- @@ -2646,7 +2647,7 @@ variable (for use when calling `prec:parse'). The token DELIM may be a character, symbol, or string. A character DELIM argument will match only a character token; i.e. a - character for which no token-group is assigned. A symbol or | + character for which no token-group is assigned. A symbol or string will match only a token string; i.e. a token resulting from a token group. @@ -2965,7 +2966,7 @@ File: slib.info, Node: Format, Next: Standard Formatted I/O, Prev: Precedence 4.2 Format (version 3.1) ======================== -`(require 'format)' +`(require 'format)' or `(require 'srfi-28)' | * Menu: @@ -4384,9 +4385,9 @@ currently uses 2 of these: * *unknown* -`batch.scm' uses 2 enhanced relational tables (*note Using Databases::) -to store information linking the names of `operating-system's to -`batch-dialect'es. +The `batch' module uses 2 enhanced relational tables (*note Using | +Databases::) to store information linking the names of | +`operating-system's to `batch-dialect'es. | -- Function: batch:initialize! database Defines `operating-system' and `batch-dialect' tables and adds the @@ -5073,8 +5074,8 @@ File: slib.info, Node: Parsing HTML, Next: URI, Prev: HTTP and CGI, Up: Text markup. -File: slib.info, Node: URI, Next: Printing Scheme, Prev: Parsing HTML, Up: Textual Conversion Packages - +File: slib.info, Node: URI, Next: Parsing XML, Prev: Parsing HTML, Up: Textual Conversion Packages + | 4.10 URI ======== @@ -5203,9 +5204,820 @@ purpose. 3. remote-directory -File: slib.info, Node: Printing Scheme, Next: Time and Date, Prev: URI, Up: Textual Conversion Packages - -4.11 Printing Scheme +File: slib.info, Node: Parsing XML, Next: Printing Scheme, Prev: URI, Up: Textual Conversion Packages + | +4.11 Parsing XML | +================ | + | +`(require 'xml-parse)' or `(require 'ssax)' | + | +The XML standard document referred to in this module is | +`http://www.w3.org/TR/1998/REC-xml-19980210.html'. | + | +The present frameworks fully supports the XML Namespaces Recommendation | +`http://www.w3.org/TR/REC-xml-names'. | + | +4.11.1 String Glue | +------------------ | + | + -- Function: ssax:reverse-collect-str list-of-frags | + Given the list of fragments (some of which are text strings), | + reverse the list and concatenate adjacent text strings. If | + LIST-OF-FRAGS has zero or one element, the result of the procedure | + is `equal?' to its argument. | + | + -- Function: ssax:reverse-collect-str-drop-ws list-of-frags | + Given the list of fragments (some of which are text strings), | + reverse the list and concatenate adjacent text strings while | + dropping "unsignificant" whitespace, that is, whitespace in front, | + behind and between elements. The whitespace that is included in | + character data is not affected. | + | + Use this procedure to "intelligently" drop "insignificant" | + whitespace in the parsed SXML. If the strict compliance with the | + XML Recommendation regarding the whitespace is desired, use the | + `ssax:reverse-collect-str' procedure instead. | + | +4.11.2 Character and Token Functions | +------------------------------------ | + | +The following functions either skip, or build and return tokens, | +according to inclusion or delimiting semantics. The list of characters | +to expect, include, or to break at may vary from one invocation of a | +function to another. This allows the functions to easily parse even | +context-sensitive languages. | + | + Exceptions are mentioned specifically. The list of expected | +characters (characters to skip until, or break-characters) may include | +an EOF "character", which is coded as symbol *eof* | + | + The input stream to parse is specified as a PORT, which is the last | +argument. | + | + -- Function: ssax:assert-current-char char-list string port | + Reads a character from the PORT and looks it up in the CHAR-LIST | + of expected characters. If the read character was found among | + expected, it is returned. Otherwise, the procedure writes a | + message using STRING as a comment and quits. | + | + -- Function: ssax:skip-while char-list port | + Reads characters from the PORT and disregards them, as long as they | + are mentioned in the CHAR-LIST. The first character (which may be | + EOF) peeked from the stream that is _not_ a member of the | + CHAR-LIST is returned. | + | + -- Function: ssax:init-buffer | + Returns an initial buffer for `ssax:next-token*' procedures. | + `ssax:init-buffer' may allocate a new buffer at each invocation. | + | + -- Function: ssax:next-token prefix-char-list break-char-list | + comment-string port | + Skips any number of the prefix characters (members of the | + PREFIX-CHAR-LIST), if any, and reads the sequence of characters up | + to (but not including) a break character, one of the | + BREAK-CHAR-LIST. | + | + The string of characters thus read is returned. The break | + character is left on the input stream. BREAK-CHAR-LIST may | + include the symbol `*eof*'; otherwise, EOF is fatal, generating an | + error message including a specified COMMENT-STRING. | + | +`ssax:next-token-of' is similar to `ssax:next-token' except that it | +implements an inclusion rather than delimiting semantics. | + | + -- Function: ssax:next-token-of inc-charset port | + Reads characters from the PORT that belong to the list of | + characters INC-CHARSET. The reading stops at the first character | + which is not a member of the set. This character is left on the | + stream. All the read characters are returned in a string. | + | + -- Function: ssax:next-token-of pred port | + Reads characters from the PORT for which PRED (a procedure of one | + argument) returns non-#f. The reading stops at the first | + character for which PRED returns #f. That character is left on | + the stream. All the results of evaluating of PRED up to #f are | + returned in a string. | + | + PRED is a procedure that takes one argument (a character or the | + EOF object) and returns a character or #f. The returned character | + does not have to be the same as the input argument to the PRED. | + For example, | + | + (ssax:next-token-of (lambda (c) | + (cond ((eof-object? c) #f) | + ((char-alphabetic? c) (char-downcase c)) + (else #f))) | + (current-input-port)) | + | + will try to read an alphabetic token from the current input port, | + and return it in lower case. | + | + -- Function: ssax:read-string len port | + Reads LEN characters from the PORT, and returns them in a string. | + If EOF is encountered before LEN characters are read, a shorter | + string will be returned. | + | +4.11.3 Data Types | +----------------- | + | +`TAG-KIND' | + A symbol `START', `END', `PI', `DECL', `COMMENT', `CDSECT', or | + `ENTITY-REF' that identifies a markup token | + | +`UNRES-NAME' | + a name (called GI in the XML Recommendation) as given in an XML | + document for a markup token: start-tag, PI target, attribute name. | + If a GI is an NCName, UNRES-NAME is this NCName converted into a | + Scheme symbol. If a GI is a QName, `UNRES-NAME' is a pair of | + symbols: `(PREFIX . LOCALPART)'. | + | +`RES-NAME' | + An expanded name, a resolved version of an `UNRES-NAME'. For an | + element or an attribute name with a non-empty namespace URI, | + `RES-NAME' is a pair of symbols, `(URI-SYMB . LOCALPART)'. | + Otherwise, it's a single symbol. | + | +`ELEM-CONTENT-MODEL' | + A symbol: | + `ANY' | + anything goes, expect an END tag. | + | + `EMPTY-TAG' | + no content, and no END-tag is coming | + | + `EMPTY' | + no content, expect the END-tag as the next token | + | + `PCDATA' | + expect character data only, and no children elements | + | + `MIXED' | + | + `ELEM-CONTENT' | + | +`URI-SYMB' | + A symbol representing a namespace URI - or other symbol chosen by | + the user to represent URI. In the former case, `URI-SYMB' is | + created by %-quoting of bad URI characters and converting the | + resulting string into a symbol. | + | +`NAMESPACES' | + A list representing namespaces in effect. An element of the list | + has one of the following forms: | + | + `(PREFIX URI-SYMB . URI-SYMB) or' | + | + `(PREFIX USER-PREFIX . URI-SYMB)' | + USER-PREFIX is a symbol chosen by the user to represent the | + URI. | + | + `(#f USER-PREFIX . URI-SYMB)' | + Specification of the user-chosen prefix and a URI-SYMBOL. | + | + `(*DEFAULT* USER-PREFIX . URI-SYMB)' | + Declaration of the default namespace | + | + `(*DEFAULT* #f . #f)' | + Un-declaration of the default namespace. This notation | + represents overriding of the previous declaration | + | + | + A NAMESPACES list may contain several elements for the same PREFIX. | + The one closest to the beginning of the list takes effect. | + | +`ATTLIST' | + An ordered collection of (NAME . VALUE) pairs, where NAME is a | + RES-NAME or an UNRES-NAME. The collection is an ADT. | + | +`STR-HANDLER' | + A procedure of three arguments: STRING1 STRING2 SEED returning a | + new SEED. The procedure is supposed to handle a chunk of | + character data STRING1 followed by a chunk of character data | + STRING2. STRING2 is a short string, often `"\n"' and even `""'. | + | +`ENTITIES' | + An assoc list of pairs: | + (NAMED-ENTITY-NAME . NAMED-ENTITY-BODY) | + | + where NAMED-ENTITY-NAME is a symbol under which the entity was | + declared, NAMED-ENTITY-BODY is either a string, or (for an | + external entity) a thunk that will return an input port (from which | + the entity can be read). NAMED-ENTITY-BODY may also be #f. This | + is an indication that a NAMED-ENTITY-NAME is currently being | + expanded. A reference to this NAMED-ENTITY-NAME will be an error: | + violation of the WFC nonrecursion. | + | +`XML-TOKEN' | + This record represents a markup, which is, according to the XML | + Recommendation, "takes the form of start-tags, end-tags, | + empty-element tags, entity references, character references, | + comments, CDATA section delimiters, document type declarations, and | + processing instructions." | + | + kind | + a TAG-KIND | + | + head | + an UNRES-NAME. For XML-TOKENs of kinds 'COMMENT and 'CDSECT, | + the head is #f. | + | + For example, | + <P> => kind=START, head=P | + </P> => kind=END, head=P | + <BR/> => kind=EMPTY-EL, head=BR | + <!DOCTYPE OMF ...> => kind=DECL, head=DOCTYPE | + <?xml version="1.0"?> => kind=PI, head=xml | + &my-ent; => kind=ENTITY-REF, head=my-ent | + | + Character references are not represented by xml-tokens as these | + references are transparently resolved into the corresponding | + characters. | + | +`XML-DECL' | + The record represents a datatype of an XML document: the list of | + declared elements and their attributes, declared notations, list of | + replacement strings or loading procedures for parsed general | + entities, etc. Normally an XML-DECL record is created from a DTD | + or an XML Schema, although it can be created and filled in in many | + other ways (e.g., loaded from a file). | + | + ELEMS | + an (assoc) list of decl-elem or #f. The latter instructs the | + parser to do no validation of elements and attributes. | + | + DECL-ELEM | + declaration of one element: | + | + `(ELEM-NAME ELEM-CONTENT DECL-ATTRS)' | + | + ELEM-NAME is an UNRES-NAME for the element. | + | + ELEM-CONTENT is an ELEM-CONTENT-MODEL. | + | + DECL-ATTRS is an `ATTLIST', of `(ATTR-NAME . VALUE)' | + associations. | + | + This element can declare a user procedure to handle parsing | + of an element (e.g., to do a custom validation, or to build a | + hash of IDs as they're encountered). | + | + DECL-ATTR | + an element of an `ATTLIST', declaration of one attribute: | + | + `(ATTR-NAME CONTENT-TYPE USE-TYPE DEFAULT-VALUE)' | + | + ATTR-NAME is an UNRES-NAME for the declared attribute. | + | + CONTENT-TYPE is a symbol: `CDATA', `NMTOKEN', `NMTOKENS', ... | + or a list of strings for the enumerated type. | + | + USE-TYPE is a symbol: `REQUIRED', `IMPLIED', or `FIXED'. | + | + DEFAULT-VALUE is a string for the default value, or #f if not | + given. | + | + | + | +4.11.4 Low-Level Parsers and Scanners | +------------------------------------- | + | +These procedures deal with primitive lexical units (Names, whitespaces, | +tags) and with pieces of more generic productions. Most of these | +parsers must be called in appropriate context. For example, | +`ssax:complete-start-tag' must be called only when the start-tag has | +been detected and its GI has been read. | + | + -- Function: ssax:skip-s port | + Skip the S (whitespace) production as defined by | + [3] S ::= (#x20 | #x09 | #x0D | #x0A) | + | + `ssax:skip-s' returns the first not-whitespace character it | + encounters while scanning the PORT. This character is left on the | + input stream. | + | + -- Function: ssax:read-ncname port | + Read a NCName starting from the current position in the PORT and | + return it as a symbol. | + | + [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | + | CombiningChar | Extender | + [5] Name ::= (Letter | '_' | ':') (NameChar)* | + | + This code supports the XML Namespace Recommendation REC-xml-names, | + which modifies the above productions as follows: | + | + [4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | + | CombiningChar | Extender | + [5] NCName ::= (Letter | '_') (NCNameChar)* | + | + As the Rec-xml-names says, | + | + "An XML document conforms to this specification if all other | + tokens [other than element types and attribute names] in the | + document which are required, for XML conformance, to match | + the XML production for Name, match this specification's | + production for NCName." | + | + Element types and attribute names must match the production QName, | + defined below. | + | + -- Function: ssax:read-qname port | + Read a (namespace-) Qualified Name, QName, from the current | + position in PORT; and return an UNRES-NAME. | + | + From REC-xml-names: | + [6] QName ::= (Prefix ':')? LocalPart | + [7] Prefix ::= NCName | + [8] LocalPart ::= NCName | + | + -- Function: ssax:read-markup-token port | + This procedure starts parsing of a markup token. The current | + position in the stream must be `<'. This procedure scans enough | + of the input stream to figure out what kind of a markup token it | + is seeing. The procedure returns an XML-TOKEN structure | + describing the token. Note, generally reading of the current | + markup is not finished! In particular, no attributes of the | + start-tag token are scanned. | + | + Here's a detailed break out of the return values and the position | + in the PORT when that particular value is returned: | + | + PI-token | + only PI-target is read. To finish the Processing-Instruction | + and disregard it, call `ssax:skip-pi'. `ssax:read-attributes' | + may be useful as well (for PIs whose content is | + attribute-value pairs). | + | + END-token | + The end tag is read completely; the current position is right | + after the terminating `>' character. | + | + COMMENT | + is read and skipped completely. The current position is | + right after `-->' that terminates the comment. | + | + CDSECT | + The current position is right after `<!CDATA['. Use | + `ssax:read-cdata-body' to read the rest. | + | + DECL | + We have read the keyword (the one that follows `<!') | + identifying this declaration markup. The current position is | + after the keyword (usually a whitespace character) | + | + START-token | + We have read the keyword (GI) of this start tag. No | + attributes are scanned yet. We don't know if this tag has an | + empty content either. Use `ssax:complete-start-tag' to | + finish parsing of the token. | + | + | + -- Function: ssax:skip-pi port | + The current position is inside a PI. Skip till the rest of the PI | + | + -- Function: ssax:read-pi-body-as-string port | + The current position is right after reading the PITarget. We read | + the body of PI and return is as a string. The port will point to | + the character right after `?>' combination that terminates PI. | + | + [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' | + | + -- Function: ssax:skip-internal-dtd port | + The current pos in the port is inside an internal DTD subset (e.g., | + after reading `#\[' that begins an internal DTD subset) Skip until | + the `]>' combination that terminates this DTD. | + | + -- Function: ssax:read-cdata-body port str-handler seed | + This procedure must be called after we have read a string | + `<![CDATA[' that begins a CDATA section. The current position | + must be the first position of the CDATA body. This function reads | + _lines_ of the CDATA body and passes them to a STR-HANDLER, a | + character data consumer. | + | + STR-HANDLER is a procedure taking arguments: STRING1, STRING2, and | + SEED. The first STRING1 argument to STR-HANDLER never contains a | + newline; the second STRING2 argument often will. On the first | + invocation of STR-HANDLER, SEED is the one passed to | + `ssax:read-cdata-body' as the third argument. The result of this | + first invocation will be passed as the SEED argument to the second | + invocation of the line consumer, and so on. The result of the | + last invocation of the STR-HANDLER is returned by the | + `ssax:read-cdata-body'. Note a similarity to the fundamental | + "fold" iterator. | + | + Within a CDATA section all characters are taken at their face | + value, with three exceptions: | + * CR, LF, and CRLF are treated as line delimiters, and passed | + as a single `#\newline' to STR-HANDLER | + | + * `]]>' combination is the end of the CDATA section. `>' is | + treated as an embedded `>' character. | + | + * `<' and `&' are not specially recognized (and are not | + expanded)! | + | + | + -- Function: ssax:read-char-ref port | + [66] CharRef ::= '&#' [0-9]+ ';' | + | '&#x' [0-9a-fA-F]+ ';' | + | + This procedure must be called after we we have read `&#' that | + introduces a char reference. The procedure reads this reference | + and returns the corresponding char. The current position in PORT | + will be after the `;' that terminates the char reference. | + | + Faults detected: | + WFC: XML-Spec.html#wf-Legalchar | + | + According to Section `4.1 Character and Entity References' of the | + XML Recommendation: | + | + "[Definition: A character reference refers to a specific | + character in the ISO/IEC 10646 character set, for example one | + not directly accessible from available input devices.]" | + | + | + -- Function: ssax:handle-parsed-entity port name entities | + content-handler str-handler seed | + Expands and handles a parsed-entity reference. | + | + NAME is a symbol, the name of the parsed entity to expand. | + CONTENT-HANDLER is a procedure of arguments PORT, ENTITIES, and | + SEED that returns a seed. STR-HANDLER is called if the entity in | + question is a pre-declared entity. | + | + `ssax:handle-parsed-entity' returns the result returned by | + CONTENT-HANDLER or STR-HANDLER. | + | + Faults detected: | + WFC: XML-Spec.html#wf-entdeclared | + WFC: XML-Spec.html#norecursion | + | + -- Function: attlist-add attlist name-value | + Add a NAME-VALUE pair to the existing ATTLIST, preserving its | + sorted ascending order; and return the new list. Return #f if a | + pair with the same name already exists in ATTLIST | + | + -- Function: attlist-remove-top attlist | + Given an non-null ATTLIST, return a pair of values: the top and | + the rest. | + | + -- Function: ssax:read-attributes port entities | + This procedure reads and parses a production "Attribute". | + | + [41] Attribute ::= Name Eq AttValue | + [10] AttValue ::= '"' ([^<&"] | Reference)* '"' | + | "'" ([^<&'] | Reference)* "'" | + [25] Eq ::= S? '=' S? | + | + The procedure returns an ATTLIST, of Name (as UNRES-NAME), Value | + (as string) pairs. The current character on the PORT is a | + non-whitespace character that is not an NCName-starting character. | + | + Note the following rules to keep in mind when reading an | + "AttValue": | + | + Before the value of an attribute is passed to the application | + or checked for validity, the XML processor must normalize it | + as follows: | + | + * A character reference is processed by appending the | + referenced character to the attribute value. | + | + * An entity reference is processed by recursively | + processing the replacement text of the entity. The | + named entities `amp', `lt', `gt', `quot', and `apos' are | + pre-declared. | + | + * A whitespace character (#x20, #x0D, #x0A, #x09) is | + processed by appending #x20 to the normalized value, | + except that only a single #x20 is appended for a | + "#x0D#x0A" sequence that is part of an external parsed | + entity or the literal entity value of an internal parsed | + entity. | + | + * Other characters are processed by appending them to the | + normalized value. | + | + | + | + Faults detected: | + WFC: XML-Spec.html#CleanAttrVals | + WFC: XML-Spec.html#uniqattspec | + | + -- Function: ssax:resolve-name port unres-name namespaces | + apply-default-ns? | + Convert an UNRES-NAME to a RES-NAME, given the appropriate | + NAMESPACES declarations. The last parameter, APPLY-DEFAULT-NS?, | + determines if the default namespace applies (for instance, it does | + not for attribute names). | + | + Per REC-xml-names/#nsc-NSDeclared, the "xml" prefix is considered | + pre-declared and bound to the namespace name | + "http://www.w3.org/XML/1998/namespace". | + | + `ssax:resolve-name' tests for the namespace constraints: | + `http://www.w3.org/TR/REC-xml-names/#nsc-NSDeclared' | + | + -- Function: ssax:complete-start-tag tag port elems entities namespaces | + Complete parsing of a start-tag markup. `ssax:complete-start-tag' | + must be called after the start tag token has been read. TAG is an | + UNRES-NAME. ELEMS is an instance of the ELEMS slot of XML-DECL; | + it can be #f to tell the function to do _no_ validation of | + elements and their attributes. | + | + `ssax:complete-start-tag' returns several values: | + * ELEM-GI: a RES-NAME. | + | + * ATTRIBUTES: element's attributes, an ATTLIST of (RES-NAME . | + STRING) pairs. The list does NOT include xmlns attributes. | + | + * NAMESPACES: the input list of namespaces amended with | + namespace (re-)declarations contained within the start-tag | + under parsing | + | + * ELEM-CONTENT-MODEL | + | + On exit, the current position in PORT will be the first character | + after `>' that terminates the start-tag markup. | + | + Faults detected: | + VC: XML-Spec.html#enum | + VC: XML-Spec.html#RequiredAttr | + VC: XML-Spec.html#FixedAttr | + VC: XML-Spec.html#ValueType | + WFC: XML-Spec.html#uniqattspec (after namespaces prefixes are | + resolved) | + VC: XML-Spec.html#elementvalid | + WFC: REC-xml-names/#dt-NSName | + | + _Note_: although XML Recommendation does not explicitly say it, | + xmlns and xmlns: attributes don't have to be declared (although | + they can be declared, to specify their default value). | + | + -- Function: ssax:read-external-id port | + Parses an ExternalID production: | + | + [75] ExternalID ::= 'SYSTEM' S SystemLiteral | + | 'PUBLIC' S PubidLiteral S SystemLiteral | + [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") | + [12] PubidLiteral ::= '"' PubidChar* '"' | + | "'" (PubidChar - "'")* "'" | + [13] PubidChar ::= #x20 | #x0D | #x0A | [a-zA-Z0-9] | + | [-'()+,./:=?;!*#@$_%] | + | + Call `ssax:read-external-id' when an ExternalID is expected; that | + is, the current character must be either #\S or #\P that starts | + correspondingly a SYSTEM or PUBLIC token. `ssax:read-external-id' | + returns the SYSTEMLITERAL as a string. A PUBIDLITERAL is | + disregarded if present. | + | +4.11.5 Mid-Level Parsers and Scanners | +------------------------------------- | + | +These procedures parse productions corresponding to the whole | +(document) entity or its higher-level pieces (prolog, root element, | +etc). | + | + -- Function: ssax:scan-misc port | + Scan the Misc production in the context: | + | + [1] document ::= prolog element Misc* | + [22] prolog ::= XMLDecl? Misc* (doctypedec l Misc*)? | + [27] Misc ::= Comment | PI | S | + | + Call `ssax:scan-misc' in the prolog or epilog contexts. In these | + contexts, whitespaces are completely ignored. The return value | + from `ssax:scan-misc' is either a PI-token, a DECL-token, a START | + token, or *EOF*. Comments are ignored and not reported. | + | + -- Function: ssax:read-char-data port expect-eof? str-handler iseed | + Read the character content of an XML document or an XML element. | + | + [43] content ::= | + (element | CharData | Reference | CDSect | PI | Comment)* | + | + To be more precise, `ssax:read-char-data' reads CharData, expands | + CDSect and character entities, and skips comments. | + `ssax:read-char-data' stops at a named reference, EOF, at the | + beginning of a PI, or a start/end tag. | + | + EXPECT-EOF? is a boolean indicating if EOF is normal; i.e., the | + character data may be terminated by the EOF. EOF is normal while | + processing a parsed entity. | + | + ISEED is an argument passed to the first invocation of STR-HANDLER. | + | + `ssax:read-char-data' returns two results: SEED and TOKEN. The | + SEED is the result of the last invocation of STR-HANDLER, or the | + original ISEED if STR-HANDLER was never called. | + | + TOKEN can be either an eof-object (this can happen only if | + EXPECT-EOF? was #t), or: | + * an xml-token describing a START tag or an END-tag; For a | + start token, the caller has to finish reading it. | + | + * an xml-token describing the beginning of a PI. It's up to an | + application to read or skip through the rest of this PI; | + | + * an xml-token describing a named entity reference. | + | + | + CDATA sections and character references are expanded inline and | + never returned. Comments are silently disregarded. | + | + As the XML Recommendation requires, all whitespace in character | + data must be preserved. However, a CR character (#x0D) must be | + disregarded if it appears before a LF character (#x0A), or replaced | + by a #x0A character otherwise. See Secs. 2.10 and 2.11 of the XML | + Recommendation. See also the canonical XML Recommendation. | + | + -- Function: ssax:assert-token token kind gi error-cont | + Make sure that TOKEN is of anticipated KIND and has anticipated | + GI. Note that the GI argument may actually be a pair of two | + symbols, Namespace-URI or the prefix, and of the localname. If | + the assertion fails, ERROR-CONT is evaluated by passing it three | + arguments: TOKEN KIND GI. The result of ERROR-CONT is returned. | + | +4.11.6 High-level Parsers | +------------------------- | + | +These procedures are to instantiate a SSAX parser. A user can | +instantiate the parser to do the full validation, or no validation, or | +any particular validation. The user specifies which PI he wants to be | +notified about. The user tells what to do with the parsed character | +and element data. The latter handlers determine if the parsing follows | +a SAX or a DOM model. | + | + -- Function: ssax:make-pi-parser my-pi-handlers | + Create a parser to parse and process one Processing Element (PI). | + | + MY-PI-HANDLERS is an association list of pairs `(PI-TAG . | + PI-HANDLER)' where PI-TAG is an NCName symbol, the PI target; and | + PI-HANDLER is a procedure taking arguments PORT, PI-TAG, and SEED. | + | + PI-HANDLER should read the rest of the PI up to and including the | + combination `?>' that terminates the PI. The handler should | + return a new seed. One of the PI-TAGs may be the symbol | + `*DEFAULT*'. The corresponding handler will handle PIs that no | + other handler will. If the *DEFAULT* PI-TAG is not specified, | + `ssax:make-pi-parser' will assume the default handler that skips | + the body of the PI. | + | + `ssax:make-pi-parser' returns a procedure of arguments PORT, | + PI-TAG, and SEED; that will parse the current PI according to | + MY-PI-HANDLERS. | + | + -- Function: ssax:make-elem-parser my-new-level-seed my-finish-element | + my-char-data-handler my-pi-handlers | + Create a parser to parse and process one element, including its | + character content or children elements. The parser is typically | + applied to the root element of a document. | + | + MY-NEW-LEVEL-SEED | + is a procedure taking arguments: | + | + ELEM-GI ATTRIBUTES NAMESPACES EXPECTED-CONTENT SEED | + | + where ELEM-GI is a RES-NAME of the element about to be | + processed. | + | + MY-NEW-LEVEL-SEED is to generate the seed to be passed to | + handlers that process the content of the element. | + | + MY-FINISH-ELEMENT | + is a procedure taking arguments: | + | + ELEM-GI ATTRIBUTES NAMESPACES PARENT-SEED SEED | + | + MY-FINISH-ELEMENT is called when parsing of ELEM-GI is | + finished. The SEED is the result from the last content | + parser (or from MY-NEW-LEVEL-SEED if the element has the | + empty content). PARENT-SEED is the same seed as was passed | + to MY-NEW-LEVEL-SEED. MY-FINISH-ELEMENT is to generate a | + seed that will be the result of the element parser. | + | + MY-CHAR-DATA-HANDLER | + is a STR-HANDLER as described in Data Types above. | + | + MY-PI-HANDLERS | + is as described for `ssax:make-pi-handler' above. | + | + | + The generated parser is a procedure taking arguments: | + | + START-TAG-HEAD PORT ELEMS ENTITIES NAMESPACES PRESERVE-WS? SEED | + | + The procedure must be called after the start tag token has been | + read. START-TAG-HEAD is an UNRES-NAME from the start-element tag. | + ELEMS is an instance of ELEMS slot of XML-DECL. | + | + Faults detected: | + VC: XML-Spec.html#elementvalid | + WFC: XML-Spec.html#GIMatch | + | + -- Function: ssax:make-parser user-handler-tag user-handler ... | + Create an XML parser, an instance of the XML parsing framework. | + This will be a SAX, a DOM, or a specialized parser depending on the | + supplied user-handlers. | + | + `ssax:make-parser' takes an even number of arguments; | + USER-HANDLER-TAG is a symbol that identifies a procedure (or | + association list for `PROCESSING-INSTRUCTIONS') (USER-HANDLER) | + that follows the tag. Given below are tags and signatures of the | + corresponding procedures. Not all tags have to be specified. If | + some are omitted, reasonable defaults will apply. | + | + `DOCTYPE' | + handler-procedure: PORT DOCNAME SYSTEMID INTERNAL-SUBSET? SEED | + | + If INTERNAL-SUBSET? is #t, the current position in the port is | + right after we have read `[' that begins the internal DTD | + subset. We must finish reading of this subset before we | + return (or must call `skip-internal-dtd' if we aren't | + interested in reading it). PORT at exit must be at the first | + symbol after the whole DOCTYPE declaration. | + | + The handler-procedure must generate four values: | + | + ELEMS ENTITIES NAMESPACES SEED | + | + ELEMS is as defined for the ELEMS slot of XML-DECL. It may be | + #f to switch off validation. NAMESPACES will typically | + contain USER-PREFIXes for selected URI-SYMBs. The default | + handler-procedure skips the internal subset, if any, and | + returns `(values #f '() '() seed)'. | + | + `UNDECL-ROOT' | + procedure: ELEM-GI SEED | + | + where ELEM-GI is an UNRES-NAME of the root element. This | + procedure is called when an XML document under parsing | + contains _no_ DOCTYPE declaration. | + | + The handler-procedure, as a DOCTYPE handler procedure above, | + must generate four values: | + | + ELEMS ENTITIES NAMESPACES SEED | + | + The default handler-procedure returns (values #f '() '() seed) | + | + `DECL-ROOT' | + procedure: ELEM-GI SEED | + | + where ELEM-GI is an UNRES-NAME of the root element. This | + procedure is called when an XML document under parsing does | + contains the DOCTYPE declaration. The handler-procedure must | + generate a new SEED (and verify that the name of the root | + element matches the doctype, if the handler so wishes). The | + default handler-procedure is the identity function. | + | + `NEW-LEVEL-SEED' | + procedure: see ssax:make-elem-parser, my-new-level-seed | + | + `FINISH-ELEMENT' | + procedure: see ssax:make-elem-parser, my-finish-element | + | + `CHAR-DATA-HANDLER' | + procedure: see ssax:make-elem-parser, my-char-data-handler | + | + `PROCESSING-INSTRUCTIONS' | + association list as is passed to `ssax:make-pi-parser'. The | + default value is '() | + | + | + The generated parser is a procedure of arguments PORT and SEED. | + | + This procedure parses the document prolog and then exits to an | + element parser (created by `ssax:make-elem-parser') to handle the | + rest. | + | + [1] document ::= prolog element Misc* | + [22] prolog ::= XMLDecl? Misc* (doctypedec | Misc*)? | + [27] Misc ::= Comment | PI | S | + [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? | + ('[' (markupdecl | PEReference | S)* ']' S?)? '>' | + [29] markupdecl ::= elementdecl | AttlistDecl | + | EntityDecl | + | NotationDecl | PI | + | Comment | + | +4.11.7 Parsing XML to SXML | +-------------------------- | + | + -- Function: ssax:xml->sxml port namespace-prefix-assig | + This is an instance of the SSAX parser that returns an SXML | + representation of the XML document to be read from PORT. | + NAMESPACE-PREFIX-ASSIG is a list of `(USER-PREFIX . URI-STRING)' | + that assigns USER-PREFIXes to certain namespaces identified by | + particular URI-STRINGs. It may be an empty list. | + `ssax:xml->sxml' returns an SXML tree. The port points out to the | + first character after the root element. | + | + +File: slib.info, Node: Printing Scheme, Next: Time and Date, Prev: Parsing XML, Up: Textual Conversion Packages + | +4.12 Printing Scheme | ==================== * Menu: @@ -5217,7 +6029,7 @@ File: slib.info, Node: Printing Scheme, Next: Time and Date, Prev: URI, Up: File: slib.info, Node: Generic-Write, Next: Object-To-String, Prev: Printing Scheme, Up: Printing Scheme -4.11.1 Generic-Write +4.12.1 Generic-Write | -------------------- `(require 'generic-write)' @@ -5260,7 +6072,7 @@ printing, output to a string and truncated output. File: slib.info, Node: Object-To-String, Next: Pretty-Print, Prev: Generic-Write, Up: Printing Scheme -4.11.2 Object-To-String +4.12.2 Object-To-String | ----------------------- `(require 'object->string)' @@ -5275,7 +6087,7 @@ File: slib.info, Node: Object-To-String, Next: Pretty-Print, Prev: Generic-Wr File: slib.info, Node: Pretty-Print, Prev: Object-To-String, Up: Printing Scheme -4.11.3 Pretty-Print +4.12.3 Pretty-Print | ------------------- `(require 'pretty-print)' @@ -5366,7 +6178,7 @@ thus can reduce loading time. The following will write into File: slib.info, Node: Time and Date, Next: NCBI-DNA, Prev: Printing Scheme, Up: Textual Conversion Packages -4.12 Time and Date +4.13 Time and Date | ================== * Menu: @@ -5399,7 +6211,7 @@ Scheme datatypes. File: slib.info, Node: Time Zone, Next: Posix Time, Prev: Time and Date, Up: Time and Date -4.12.1 Time Zone +4.13.1 Time Zone | ---------------- (require 'time-zone) @@ -5526,7 +6338,7 @@ compatability. Because of shared state they are not thread-safe. File: slib.info, Node: Posix Time, Next: Common-Lisp Time, Prev: Time Zone, Up: Time and Date -4.12.2 Posix Time +4.13.2 Posix Time | ----------------- (require 'posix-time) @@ -5598,7 +6410,7 @@ File: slib.info, Node: Posix Time, Next: Common-Lisp Time, Prev: Time Zone, File: slib.info, Node: Common-Lisp Time, Next: Time Infrastructure, Prev: Posix Time, Up: Time and Date -4.12.3 Common-Lisp Time +4.13.3 Common-Lisp Time | ----------------------- -- Function: get-decoded-time @@ -5648,7 +6460,7 @@ File: slib.info, Node: Common-Lisp Time, Next: Time Infrastructure, Prev: Pos File: slib.info, Node: Time Infrastructure, Prev: Common-Lisp Time, Up: Time and Date -4.12.4 Time Infrastructure +4.13.4 Time Infrastructure | -------------------------- `(require 'time-core)' @@ -5664,9 +6476,11 @@ File: slib.info, Node: Time Infrastructure, Prev: Common-Lisp Time, Up: Time File: slib.info, Node: NCBI-DNA, Next: Schmooz, Prev: Time and Date, Up: Textual Conversion Packages -4.13 NCBI-DNA +4.14 NCBI-DNA | ============= +`(require 'ncbi-dma)' | + | -- Function: ncbi:read-dna-sequence port Reads the NCBI-format DNA sequence following the word `ORIGIN' from PORT. @@ -5705,7 +6519,7 @@ sequence with the `BASE COUNT' line preceding the sequence from NCBI. File: slib.info, Node: Schmooz, Prev: NCBI-DNA, Up: Textual Conversion Packages -4.14 Schmooz +4.15 Schmooz | ============ "Schmooz" is a simple, lightweight markup language for interspersing @@ -5811,11 +6625,11 @@ File: slib.info, Node: Mathematical Packages, Next: Database Packages, Prev: * Bit-Twiddling:: 'logical * Modular Arithmetic:: 'modular -* Irrational Integer Functions:: | -* Irrational Real Functions:: | +* Irrational Integer Functions:: +* Irrational Real Functions:: * Prime Numbers:: 'factor * Random Numbers:: 'random -* Discrete Fourier Transform:: 'dft | +* Discrete Fourier Transform:: 'dft * Cyclic Checksum:: 'crc * Graphing:: * Solid Modeling:: VRML97 @@ -5832,7 +6646,7 @@ File: slib.info, Node: Bit-Twiddling, Next: Modular Arithmetic, Prev: Mathema 5.1 Bit-Twiddling ================= -`(require 'logical)' or `(require 'srfi-60)' | +`(require 'logical)' or `(require 'srfi-60)' The bit-twiddling functions are made available through the use of the `logical' package. `logical' is loaded by inserting `(require @@ -5898,8 +6712,7 @@ representation. 5.1.2 Integer Properties ------------------------ - -- Function: logcount n - -- Function: bit-count n + -- Function: logcount n | Returns the number of bits in integer N. If integer is positive, the 1-bits in its binary representation are counted. If negative, the 0-bits in its two's-complement binary representation are @@ -5913,6 +6726,17 @@ representation. (logcount -2) => 1 +On `discuss@r6rs.org' Ben Harris credits Simon Tatham with the idea to | +have `bitwise-bit-count' return a negative count for negative inputs. | +Alan Bawden came up with the succinct invariant. | + | + -- Function: bitwise-bit-count n | + If N is non-negative, this procedure returns the number of 1 bits | + in the two's-complement representation of N. Otherwise it returns | + the result of the following computation: | + | + (bitwise-not (bitwise-bit-count (bitwise-not N))) | + | -- Function: integer-length n Returns the number of bits neccessary to represent N. @@ -6059,44 +6883,44 @@ representation. File: slib.info, Node: Modular Arithmetic, Next: Irrational Integer Functions, Prev: Bit-Twiddling, Up: Mathematical Packages - | + 5.2 Modular Arithmetic ====================== `(require 'modular)' - | + -- Function: extended-euclid n1 n2 Returns a list of 3 integers `(d x y)' such that d = gcd(N1, N2) = N1 * x + N2 * y. - -- Function: symmetric:modulus m | - For odd positive integer M, returns an object suitable for passing | - as the first argument to `modular:' procedures, directing them to | - return a symmetric modular number, ie. an N such that | - (<= (quotient M -2) N (quotient M 2) | + -- Function: symmetric:modulus m + For odd positive integer M, returns an object suitable for passing + as the first argument to `modular:' procedures, directing them to + return a symmetric modular number, ie. an N such that + (<= (quotient M -2) N (quotient M 2) - -- Function: modular:characteristic modulus | + -- Function: modular:characteristic modulus Returns the non-negative integer characteristic of the ring formed when MODULUS is used with `modular:' procedures. -- Function: modular:normalize modulus n - Returns the integer `(modulo N (modular:characteristic MODULUS))' | - in the representation specified by MODULUS. | + Returns the integer `(modulo N (modular:characteristic MODULUS))' + in the representation specified by MODULUS. The rest of these functions assume normalized arguments; That is, the arguments are constrained by the following table: For all of these functions, if the first argument (MODULUS) is: `positive?' - Integers mod MODULUS. The result is between 0 and MODULUS. | + Integers mod MODULUS. The result is between 0 and MODULUS. `zero?' The arguments are treated as integers. An integer is returned. -Otherwise, if MODULUS is a value returned by `(symmetric:modulus | -RADIX)', then the arguments and result are treated as members of the | -integers modulo RADIX, but with "symmetric" representation; i.e. | - (<= (quotient RADIX 2) N (quotient (- -1 RADIX) 2) | +Otherwise, if MODULUS is a value returned by `(symmetric:modulus +RADIX)', then the arguments and result are treated as members of the +integers modulo RADIX, but with "symmetric" representation; i.e. + (<= (quotient RADIX 2) N (quotient (- -1 RADIX) 2) If all the arguments are fixnums the computation will use only fixnums. @@ -6128,150 +6952,150 @@ If all the arguments are fixnums the computation will use only fixnums. File: slib.info, Node: Irrational Integer Functions, Next: Irrational Real Functions, Prev: Modular Arithmetic, Up: Mathematical Packages - | -5.3 Irrational Integer Functions | -================================ | - | -`(require 'math-integer)' | - | - -- Function: integer-expt n1 n2 | - Returns N1 raised to the power N2 if that result is an exact | - integer; otherwise signals an error. | - | - `(integer-expt 0 N2)' | - | - returns 1 for N2 equal to 0; returns 0 for positive integer N2; | - signals an error otherwise. | - | - -- Function: integer-log base k | - Returns the largest exact integer whose power of BASE is less than | - or equal to K. If BASE or K is not a positive exact integer, then | - `integer-log' signals an error. | - | - -- Function: integer-sqrt k | - For non-negative integer K returns the largest integer whose square | - is less than or equal to K; otherwise signals an error. | - | - -- Variable: quotient | - -- Variable: remainder | - -- Variable: modulo | - are redefined so that they accept only exact-integer arguments. | - | + +5.3 Irrational Integer Functions +================================ + +`(require 'math-integer)' + + -- Function: integer-expt n1 n2 + Returns N1 raised to the power N2 if that result is an exact + integer; otherwise signals an error. + + `(integer-expt 0 N2)' + + returns 1 for N2 equal to 0; returns 0 for positive integer N2; + signals an error otherwise. + + -- Function: integer-log base k + Returns the largest exact integer whose power of BASE is less than + or equal to K. If BASE or K is not a positive exact integer, then + `integer-log' signals an error. + + -- Function: integer-sqrt k + For non-negative integer K returns the largest integer whose square + is less than or equal to K; otherwise signals an error. + + -- Variable: quotient + -- Variable: remainder + -- Variable: modulo + are redefined so that they accept only exact-integer arguments. + File: slib.info, Node: Irrational Real Functions, Next: Prime Numbers, Prev: Irrational Integer Functions, Up: Mathematical Packages - | -5.4 Irrational Real Functions | -============================= | - | -`(require 'math-real)' | - | - Although this package defines real and complex functions, it is safe | -to load into an integer-only implementation; those functions will be | -defined to #f. | - | - -- Function: real-exp X | - -- Function: real-ln X | - -- Function: real-log Y X | - -- Function: real-sin X | - -- Function: real-cos X | - -- Function: real-tan X | - -- Function: real-asin X | - -- Function: real-acos X | - -- Function: real-atan X | - -- Function: atan Y X | - These procedures are part of every implementation that supports | - general real numbers; they compute the usual transcendental | - functions. `real-ln' computes the natural logarithm of X; | - `real-log' computes the logarithm of X base Y, which is `(/ | - (real-ln x) (real-ln y))'. If arguments X and Y are not both | - real; or if the correct result would not be real, then these | - procedures signal an error. | - | - | - -- Function: real-sqrt X | - For non-negative real X the result will be its positive square | - root; otherwise an error will be signaled. | - | - | - -- Function: real-expt x1 x2 | - Returns X1 raised to the power X2 if that result is a real number; | - otherwise signals an error. | - | - `(real-expt 0.0 X2)' | - | - * returns 1.0 for X2 equal to 0.0; | - | - * returns 0.0 for positive real X2; | - | - * signals an error otherwise. | - | - | - -- Function: quo x1 x2 | - -- Function: rem x1 x2 | - -- Function: mod x1 x2 | - X2 should be non-zero. | - | - (quo X1 X2) ==> N_Q | - (rem X1 X2) ==> X_R | - (mod X1 X2) ==> X_M | - | - where N_Q is X1/X2 rounded towards zero, 0 < |X_R| < |X2|, 0 < | - |X_M| < |X2|, X_R and X_M differ from X1 by a multiple of X2, X_R | - has the same sign as X1, and X_M has the same sign as X2. | - | - From this we can conclude that for X2 not equal to 0, | - | - (= X1 (+ (* X2 (quo X1 X2)) | - (rem X1 X2))) | - ==> #t | - | - provided all numbers involved in that computation are exact. | - | - (quo 2/3 1/5) ==> 3 | - (mod 2/3 1/5) ==> 1/15 | - | - (quo .666 1/5) ==> 3.0 | - (mod .666 1/5) ==> 65.99999999999995e-3 | - | - -- Function: ln Z | - These procedures are part of every implementation that supports | - general real numbers. `Ln' computes the natural logarithm of Z | - | - In general, the mathematical function ln is multiply defined. The | - value of ln Z is defined to be the one whose imaginary part lies | - in the range from -pi (exclusive) to pi (inclusive). | - | - | - -- Function: abs x | - For real argument X, `Abs' returns the absolute value of X' | - otherwise it signals an error. | - | - (abs -7) ==> 7 | - | - | - -- Function: make-rectangular x1 x2 | - -- Function: make-polar x3 x4 | - These procedures are part of every implementation that supports | - general complex numbers. Suppose X1, X2, X3, and X4 are real | - numbers and Z is a complex number such that | - | - Z = X1 + X2i = X3 . e^i X4 | - | - Then | - | - (make-rectangular X1 X2) ==> Z | - (make-polar X3 X4) ==> Z | - | - where -pi < x_angle <= pi with x_angle = X4 + 2pi n for some | - integer n. | - | - If an argument is not real, then these procedures signal an error. | - | - | + +5.4 Irrational Real Functions +============================= + +`(require 'math-real)' + + Although this package defines real and complex functions, it is safe +to load into an integer-only implementation; those functions will be +defined to #f. + + -- Function: real-exp X + -- Function: real-ln X + -- Function: real-log Y X + -- Function: real-sin X + -- Function: real-cos X + -- Function: real-tan X + -- Function: real-asin X + -- Function: real-acos X + -- Function: real-atan X + -- Function: atan Y X + These procedures are part of every implementation that supports + general real numbers; they compute the usual transcendental + functions. `real-ln' computes the natural logarithm of X; + `real-log' computes the logarithm of X base Y, which is `(/ + (real-ln x) (real-ln y))'. If arguments X and Y are not both + real; or if the correct result would not be real, then these + procedures signal an error. + + + -- Function: real-sqrt X + For non-negative real X the result will be its positive square + root; otherwise an error will be signaled. + + + -- Function: real-expt x1 x2 + Returns X1 raised to the power X2 if that result is a real number; + otherwise signals an error. + + `(real-expt 0.0 X2)' + + * returns 1.0 for X2 equal to 0.0; + + * returns 0.0 for positive real X2; + + * signals an error otherwise. + + + -- Function: quo x1 x2 + -- Function: rem x1 x2 + -- Function: mod x1 x2 + X2 should be non-zero. + + (quo X1 X2) ==> N_Q + (rem X1 X2) ==> X_R + (mod X1 X2) ==> X_M + + where N_Q is X1/X2 rounded towards zero, 0 < |X_R| < |X2|, 0 < + |X_M| < |X2|, X_R and X_M differ from X1 by a multiple of X2, X_R + has the same sign as X1, and X_M has the same sign as X2. + + From this we can conclude that for X2 not equal to 0, + + (= X1 (+ (* X2 (quo X1 X2)) + (rem X1 X2))) + ==> #t + + provided all numbers involved in that computation are exact. + + (quo 2/3 1/5) ==> 3 + (mod 2/3 1/5) ==> 1/15 + + (quo .666 1/5) ==> 3.0 + (mod .666 1/5) ==> 65.99999999999995e-3 + + -- Function: ln Z + These procedures are part of every implementation that supports + general real numbers. `Ln' computes the natural logarithm of Z + + In general, the mathematical function ln is multiply defined. The + value of ln Z is defined to be the one whose imaginary part lies + in the range from -pi (exclusive) to pi (inclusive). + + + -- Function: abs x + For real argument X, `Abs' returns the absolute value of X' + otherwise it signals an error. + + (abs -7) ==> 7 + + + -- Function: make-rectangular x1 x2 + -- Function: make-polar x3 x4 + These procedures are part of every implementation that supports + general complex numbers. Suppose X1, X2, X3, and X4 are real + numbers and Z is a complex number such that + + Z = X1 + X2i = X3 . e^i X4 + + Then + + (make-rectangular X1 X2) ==> Z + (make-polar X3 X4) ==> Z + + where -pi < x_angle <= pi with x_angle = X4 + 2pi n for some + integer n. + + If an argument is not real, then these procedures signal an error. + + File: slib.info, Node: Prime Numbers, Next: Random Numbers, Prev: Irrational Real Functions, Up: Mathematical Packages - | -5.5 Prime Numbers | + +5.5 Prime Numbers ================= `(require 'factor)' @@ -6315,8 +7139,8 @@ the Solovay-Strassen primality test. See File: slib.info, Node: Random Numbers, Next: Discrete Fourier Transform, Prev: Prime Numbers, Up: Mathematical Packages - | -5.6 Random Numbers | + +5.6 Random Numbers ================== A pseudo-random number generator is only as good as the tests it passes. @@ -6338,7 +7162,7 @@ from sequential bytes, tests fail. With the seed File: slib.info, Node: Exact Random Numbers, Next: Inexact Random Numbers, Prev: Random Numbers, Up: Random Numbers -5.6.1 Exact Random Numbers | +5.6.1 Exact Random Numbers -------------------------- `(require 'random)' @@ -6390,7 +7214,7 @@ File: slib.info, Node: Exact Random Numbers, Next: Inexact Random Numbers, Pr File: slib.info, Node: Inexact Random Numbers, Prev: Exact Random Numbers, Up: Random Numbers -5.6.2 Inexact Random Numbers | +5.6.2 Inexact Random Numbers ---------------------------- `(require 'random-inexact)' @@ -6435,57 +7259,57 @@ File: slib.info, Node: Inexact Random Numbers, Prev: Exact Random Numbers, Up File: slib.info, Node: Discrete Fourier Transform, Next: Cyclic Checksum, Prev: Random Numbers, Up: Mathematical Packages - | -5.7 Discrete Fourier Transform | -============================== | -`(require 'dft)' or `(require 'Fourier-transform)' | +5.7 Discrete Fourier Transform +============================== - `fft' and `fft-1' compute the Fast-Fourier-Transforms (O(n*log(n))) | -of arrays whose dimensions are all powers of 2. | - | - `sft' and `sft-1' compute the Discrete-Fourier-Transforms for all | -combinations of dimensions (O(n^2)). | - | - -- Function: sft array prot | - -- Function: sft array | - ARRAY is an array of positive rank. `sft' returns an array of | - type PROT (defaulting to ARRAY) of complex numbers comprising the | - "Discrete Fourier Transform" of ARRAY. | - | - -- Function: sft-1 array prot | - -- Function: sft-1 array | - ARRAY is an array of positive rank. `sft-1' returns an array of | - type PROT (defaulting to ARRAY) of complex numbers comprising the | - inverse Discrete Fourier Transform of ARRAY. | - | - -- Function: fft array prot | +`(require 'dft)' or `(require 'Fourier-transform)' + + `fft' and `fft-1' compute the Fast-Fourier-Transforms (O(n*log(n))) +of arrays whose dimensions are all powers of 2. + + `sft' and `sft-1' compute the Discrete-Fourier-Transforms for all +combinations of dimensions (O(n^2)). + + -- Function: sft array prot + -- Function: sft array + ARRAY is an array of positive rank. `sft' returns an array of + type PROT (defaulting to ARRAY) of complex numbers comprising the + "Discrete Fourier Transform" of ARRAY. + + -- Function: sft-1 array prot + -- Function: sft-1 array + ARRAY is an array of positive rank. `sft-1' returns an array of + type PROT (defaulting to ARRAY) of complex numbers comprising the + inverse Discrete Fourier Transform of ARRAY. + + -- Function: fft array prot -- Function: fft array - ARRAY is an array of positive rank whose dimensions are all powers | - of 2. `fft' returns an array of type PROT (defaulting to ARRAY) | - of complex numbers comprising the Discrete Fourier Transform of | + ARRAY is an array of positive rank whose dimensions are all powers + of 2. `fft' returns an array of type PROT (defaulting to ARRAY) + of complex numbers comprising the Discrete Fourier Transform of ARRAY. - -- Function: fft-1 array prot | + -- Function: fft-1 array prot -- Function: fft-1 array - ARRAY is an array of positive rank whose dimensions are all powers | - of 2. `fft-1' returns an array of type PROT (defaulting to ARRAY) | - of complex numbers comprising the inverse Discrete Fourier | - Transform of ARRAY. | - | - `dft' and `dft-1' compute the discrete Fourier transforms using the | -best method for decimating each dimension. | - | - -- Function: dft array prot | - -- Function: dft array | - `dft' returns an array of type PROT (defaulting to ARRAY) of | - complex numbers comprising the Discrete Fourier Transform of ARRAY. | - | - -- Function: dft-1 array prot | - -- Function: dft-1 array | - `dft-1' returns an array of type PROT (defaulting to ARRAY) of | - complex numbers comprising the inverse Discrete Fourier Transform | - of ARRAY. | + ARRAY is an array of positive rank whose dimensions are all powers + of 2. `fft-1' returns an array of type PROT (defaulting to ARRAY) + of complex numbers comprising the inverse Discrete Fourier + Transform of ARRAY. + + `dft' and `dft-1' compute the discrete Fourier transforms using the +best method for decimating each dimension. + + -- Function: dft array prot + -- Function: dft array + `dft' returns an array of type PROT (defaulting to ARRAY) of + complex numbers comprising the Discrete Fourier Transform of ARRAY. + + -- Function: dft-1 array prot + -- Function: dft-1 array + `dft-1' returns an array of type PROT (defaulting to ARRAY) of + complex numbers comprising the inverse Discrete Fourier Transform + of ARRAY. `(fft-1 (fft ARRAY))' will return an array of values close to ARRAY. @@ -6501,8 +7325,8 @@ best method for decimating each dimension. | File: slib.info, Node: Cyclic Checksum, Next: Graphing, Prev: Discrete Fourier Transform, Up: Mathematical Packages - | -5.8 Cyclic Checksum | + +5.8 Cyclic Checksum =================== `(require 'crc)' Cyclic Redundancy Checks using Galois field GF(2) @@ -6690,7 +7514,7 @@ checksum of the bytes in STR, can be defined as follows: File: slib.info, Node: Graphing, Next: Solid Modeling, Prev: Cyclic Checksum, Up: Mathematical Packages -5.9 Graphing | +5.9 Graphing ============ * Menu: @@ -6701,7 +7525,7 @@ File: slib.info, Node: Graphing, Next: Solid Modeling, Prev: Cyclic Checksum, File: slib.info, Node: Character Plotting, Next: PostScript Graphing, Prev: Graphing, Up: Graphing -5.9.1 Character Plotting | +5.9.1 Character Plotting ------------------------ `(require 'charplot)' @@ -6814,7 +7638,7 @@ File: slib.info, Node: Character Plotting, Next: PostScript Graphing, Prev: G File: slib.info, Node: PostScript Graphing, Prev: Character Plotting, Up: Graphing -5.9.2 PostScript Graphing | +5.9.2 PostScript Graphing ------------------------- `(require 'eps-graph)' @@ -6865,7 +7689,7 @@ first ELT argument to the last. File: slib.info, Node: Column Ranges, Next: Drawing the Graph, Prev: PostScript Graphing, Up: PostScript Graphing -5.9.2.1 Column Ranges | +5.9.2.1 Column Ranges ..................... A "range" is a list of two numbers, the minimum and the maximum. Ranges @@ -6906,7 +7730,7 @@ can be given explicity or computed in PostScript by `column-range'. File: slib.info, Node: Drawing the Graph, Next: Graphics Context, Prev: Column Ranges, Up: PostScript Graphing -5.9.2.2 Drawing the Graph | +5.9.2.2 Drawing the Graph ......................... -- Function: plot-column array x-column y-column proc3s @@ -6964,7 +7788,7 @@ The glyphs and drawing styles available are: File: slib.info, Node: Graphics Context, Next: Rectangles, Prev: Drawing the Graph, Up: PostScript Graphing -5.9.2.3 Graphics Context | +5.9.2.3 Graphics Context ........................ -- Function: in-graphic-context arg ... @@ -7017,7 +7841,7 @@ The effects of `clip-to-rect' are also part of the graphic context. File: slib.info, Node: Rectangles, Next: Legending, Prev: Graphics Context, Up: PostScript Graphing -5.9.2.4 Rectangles | +5.9.2.4 Rectangles .................. A "rectangle" is a list of 4 numbers; the first two elements are the x @@ -7057,7 +7881,7 @@ elements are the width and height of the rectangle. File: slib.info, Node: Legending, Next: Legacy Plotting, Prev: Rectangles, Up: PostScript Graphing -5.9.2.5 Legending | +5.9.2.5 Legending ................. -- Function: title-top title subtitle @@ -7093,13 +7917,13 @@ File: slib.info, Node: Legending, Next: Legacy Plotting, Prev: Rectangles, U ticks are -TICK-WIDTH long on the left side of X-COORD; and TEXT and numeric legends are on the right. - -- Function: rule-horizontal y-coord text tick-height | - Draws a horizontal ruler with Y coordinate Y-COORD and labeled with | + -- Function: rule-horizontal y-coord text tick-height + Draws a horizontal ruler with Y coordinate Y-COORD and labeled with string TEXT. If TICK-HEIGHT is positive, then the ticks are - TICK-HEIGHT long on the top side of Y-COORD; and TEXT and numeric | - legends are on the bottom. If TICK-HEIGHT is negative, then the | - ticks are -TICK-HEIGHT long on the bottom side of Y-COORD; and | - TEXT and numeric legends are on the top. | + TICK-HEIGHT long on the top side of Y-COORD; and TEXT and numeric + legends are on the bottom. If TICK-HEIGHT is negative, then the + ticks are -TICK-HEIGHT long on the bottom side of Y-COORD; and + TEXT and numeric legends are on the top. -- Function: y-axis Draws the y-axis. @@ -7118,7 +7942,7 @@ File: slib.info, Node: Legending, Next: Legacy Plotting, Prev: Rectangles, U File: slib.info, Node: Legacy Plotting, Next: Example Graph, Prev: Legending, Up: PostScript Graphing -5.9.2.6 Legacy Plotting | +5.9.2.6 Legacy Plotting ....................... -- Variable: graph:dimensions @@ -7145,7 +7969,7 @@ File: slib.info, Node: Legacy Plotting, Next: Example Graph, Prev: Legending, File: slib.info, Node: Example Graph, Prev: Legacy Plotting, Up: PostScript Graphing -5.9.2.7 Example Graph | +5.9.2.7 Example Graph ..................... The file `am1.5.html', a table of solar irradiance, is fetched with @@ -7247,8 +8071,8 @@ scales. File: slib.info, Node: Solid Modeling, Next: Color, Prev: Graphing, Up: Mathematical Packages -5.10 Solid Modeling | -=================== | +5.10 Solid Modeling +=================== `(require 'solid)' @@ -7458,11 +8282,11 @@ Object Primitives origin. APPEARANCE determines the surface properties of the returned object. - -- Function: solid:lumber geometry appearance | - Returns a box of the specified GEOMETRY, but with the y-axis of a | - texture specified in APPEARANCE being applied along the longest | - dimension in GEOMETRY. | - | + -- Function: solid:lumber geometry appearance + Returns a box of the specified GEOMETRY, but with the y-axis of a + texture specified in APPEARANCE being applied along the longest + dimension in GEOMETRY. + -- Function: solid:cylinder radius height appearance -- Function: solid:cylinder radius height Returns a right cylinder with dimensions `(abs RADIUS)' and `(abs @@ -7519,15 +8343,15 @@ Object Primitives 3)' and `(4 5 6)': (solid:polyline '((1 2 3) (4 5 6)) (solid:color #f 0 #f 0 '(1 0 0))) - -- Function: solid:prism xz-array y appearance | - -- Function: solid:prism xz-array y | - XZ-ARRAY must be an N-by-2 array holding a sequence of coordinates | - tracing a non-intersecting clockwise loop in the x-z plane. | - `solid:prism' will close the sequence if the first and last | - coordinates are not the same. | - | - `solid:prism' returns a capped prism Y long. | - | + -- Function: solid:prism xz-array y appearance + -- Function: solid:prism xz-array y + XZ-ARRAY must be an N-by-2 array holding a sequence of coordinates + tracing a non-intersecting clockwise loop in the x-z plane. + `solid:prism' will close the sequence if the first and last + coordinates are not the same. + + `solid:prism' returns a capped prism Y long. + -- Function: solid:basrelief width height depth colorray appearance -- Function: solid:basrelief width height depth appearance -- Function: solid:basrelief width height depth @@ -7683,8 +8507,8 @@ Spatial Transformations File: slib.info, Node: Color, Next: Root Finding, Prev: Solid Modeling, Up: Mathematical Packages -5.11 Color | -========== | +5.11 Color +========== `http://swiss.csail.mit.edu/~jaffer/Color' @@ -7706,8 +8530,8 @@ encountered in practice and the literature. File: slib.info, Node: Color Data-Type, Next: Color Spaces, Prev: Color, Up: Color -5.11.1 Color Data-Type | ----------------------- | +5.11.1 Color Data-Type +---------------------- `(require 'color)' @@ -7761,8 +8585,8 @@ File: slib.info, Node: Color Data-Type, Next: Color Spaces, Prev: Color, Up: -- Function: convert-color color e-sRGB precision Converts COLOR into SPACE at optional WHITE-POINT. -5.11.1.1 External Representation | -................................ | +5.11.1.1 External Representation +................................ Each color encoding has an external, case-insensitive representation. To ensure portability, the white-point for all color strings is D65. @@ -7805,8 +8629,8 @@ sRGB #x<RRGGBB> syntactically valid notation for a color, then `string->color' returns #f. -5.11.1.2 White | -.............. | +5.11.1.2 White +.............. We experience color relative to the illumination around us. CIEXYZ coordinates, although subject to uniform scaling, are objective. Thus @@ -7840,8 +8664,8 @@ device-dependent RGBi and RGB spaces of Xlib. File: slib.info, Node: Color Spaces, Next: Spectra, Prev: Color Data-Type, Up: Color -5.11.2 Color Spaces | -------------------- | +5.11.2 Color Spaces +------------------- Measurement-based Color Spaces .............................. @@ -8107,8 +8931,8 @@ ICC.1:1998-09: File: slib.info, Node: Spectra, Next: Color Difference Metrics, Prev: Color Spaces, Up: Color -5.11.3 Spectra | --------------- | +5.11.3 Spectra +-------------- The following functions compute colors from spectra, scale color luminance, and extract chromaticity. XYZ is used in the names of @@ -8321,8 +9145,8 @@ chromaticities with sums greater than one are scaled to sum to one. File: slib.info, Node: Color Difference Metrics, Next: Color Conversions, Prev: Spectra, Up: Color -5.11.4 Color Difference Metrics | -------------------------------- | +5.11.4 Color Difference Metrics +------------------------------- `(require 'color-space)' @@ -8392,8 +9216,8 @@ to use a single value pass/fail tolerance for all shades. File: slib.info, Node: Color Conversions, Next: Color Names, Prev: Color Difference Metrics, Up: Color -5.11.5 Color Conversions | ------------------------- | +5.11.5 Color Conversions +------------------------ This package contains the low-level color conversion and color metric routines operating on lists of 3 numbers. There is no type or range @@ -8463,8 +9287,8 @@ Do not convert e-sRGB precision through `e-sRGB->sRGB' then File: slib.info, Node: Color Names, Next: Daylight, Prev: Color Conversions, Up: Color -5.11.6 Color Names | ------------------- | +5.11.6 Color Names +------------------ `(require 'color-names)' @@ -8629,8 +9453,8 @@ program, then you must include its license with your program: File: slib.info, Node: Daylight, Prev: Color Names, Up: Color -5.11.7 Daylight | ---------------- | +5.11.7 Daylight +--------------- `(require 'daylight)' @@ -8727,15 +9551,11 @@ turbidity values less than 1.3. File: slib.info, Node: Root Finding, Next: Minimizing, Prev: Color, Up: Mathematical Packages -5.12 Root Finding | +5.12 Root Finding ================= `(require 'root)' - - -- Function: integer-sqrt y - Given a non-negative integer Y, returns the largest integer whose - square is less than or equal to Y. - + | -- Function: newton:find-integer-root f df/dx x0 Given integer valued procedure F, its derivative (with respect to its argument) DF/DX, and initial integer value X0 for which @@ -8822,7 +9642,7 @@ Polynomials', IEEE Transactions on Circuits and Systems, Vol. 36, No. File: slib.info, Node: Minimizing, Next: The Limit, Prev: Root Finding, Up: Mathematical Packages -5.13 Minimizing | +5.13 Minimizing =============== `(require 'minimize)' @@ -8869,7 +9689,7 @@ and Software' Prentice-Hall, 1989, ISBN 0-13-627258-4 File: slib.info, Node: The Limit, Next: Commutative Rings, Prev: Minimizing, Up: Mathematical Packages -5.14 The Limit | +5.14 The Limit ============== -- library procedure: limit proc x1 x2 k @@ -8969,7 +9789,7 @@ File: slib.info, Node: The Limit, Next: Commutative Rings, Prev: Minimizing, File: slib.info, Node: Commutative Rings, Next: Matrix Algebra, Prev: The Limit, Up: Mathematical Packages -5.15 Commutative Rings | +5.15 Commutative Rings ====================== Scheme provides a consistent and capable set of numeric functions. @@ -9035,7 +9855,7 @@ expressions are handled similarly. `remainder', `lcm', and `gcd'; but these work only for the more restrictive Euclidean (Unique Factorization) Domain. -5.16 Rules and Rulesets | +5.16 Rules and Rulesets ======================= The "commutative-ring" package allows control of ring properties @@ -9109,7 +9929,7 @@ involving different non-numeric elements. (lambda (exp1 exp2) (apply + (map (lambda (trm) (* trm exp2)) (cdr exp1)))))) -5.17 How to Create a Commutative Ring | +5.17 How to Create a Commutative Ring ===================================== The first step in creating your commutative ring is to write procedures @@ -9248,7 +10068,7 @@ objects. File: slib.info, Node: Matrix Algebra, Prev: Commutative Rings, Up: Mathematical Packages -5.18 Matrix Algebra | +5.18 Matrix Algebra =================== `(require 'determinant)' @@ -9274,9 +10094,21 @@ linear-algebra texts, this package uses 0-based coordinates. Returns a copy of MATRIX flipped over the diagonal containing the 1,1 element. + -- Function: matrix:sum m1 m2 | + Returns the element-wise sum of matricies M1 and M2. | + | + -- Function: matrix:difference m1 m2 | + Returns the element-wise difference of matricies M1 and M2. | + | -- Function: matrix:product m1 m2 Returns the product of matrices M1 and M2. + -- Function: matrix:product m1 z | + Returns matrix M1 times scalar Z. | + | + -- Function: matrix:product z m1 | + Returns matrix M1 times scalar Z. | + | -- Function: matrix:inverse matrix MATRIX must be a square matrix. If MATRIX is singlar, then `matrix:inverse' returns #f; otherwise `matrix:inverse' returns the @@ -9555,7 +10387,7 @@ missing. (every (lambda (c) (memv c '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 - #\+ #\( #\space #\) #\-))) | + #\+ #\( #\space #\) #\-))) (string->list d)))) string)) @@ -11606,95 +12438,95 @@ uniform-array type is supported by the implementation, then it is returned; defaulting to the next larger precision type; resorting finally to vector. - -- Function: a:floc128b z - -- Function: a:floc128b + -- Function: A:floC128b z | + -- Function: A:floC128b | Returns an inexact 128.bit flonum complex uniform-array prototype. - -- Function: a:floc64b z - -- Function: a:floc64b + -- Function: A:floC64b z | + -- Function: A:floC64b | Returns an inexact 64.bit flonum complex uniform-array prototype. - -- Function: a:floc32b z - -- Function: a:floc32b + -- Function: A:floC32b z | + -- Function: A:floC32b | Returns an inexact 32.bit flonum complex uniform-array prototype. - -- Function: a:floc16b z - -- Function: a:floc16b + -- Function: A:floC16b z | + -- Function: A:floC16b | Returns an inexact 16.bit flonum complex uniform-array prototype. - -- Function: a:flor128b z - -- Function: a:flor128b + -- Function: A:floR128b x | + -- Function: A:floR128b | Returns an inexact 128.bit flonum real uniform-array prototype. - -- Function: a:flor64b z - -- Function: a:flor64b + -- Function: A:floR64b x | + -- Function: A:floR64b | Returns an inexact 64.bit flonum real uniform-array prototype. - -- Function: a:flor32b z - -- Function: a:flor32b + -- Function: A:floR32b x | + -- Function: A:floR32b | Returns an inexact 32.bit flonum real uniform-array prototype. - -- Function: a:flor16b z - -- Function: a:flor16b + -- Function: A:floR16b x | + -- Function: A:floR16b | Returns an inexact 16.bit flonum real uniform-array prototype. - -- Function: a:flor128b z - -- Function: a:flor128b + -- Function: A:floR128d q | + -- Function: A:floR128d | Returns an exact 128.bit decimal flonum rational uniform-array prototype. - -- Function: a:flor64b z - -- Function: a:flor64b + -- Function: A:floR64d q | + -- Function: A:floR64d | Returns an exact 64.bit decimal flonum rational uniform-array prototype. - -- Function: a:flor32b z - -- Function: a:flor32b + -- Function: A:floR32d q | + -- Function: A:floR32d | Returns an exact 32.bit decimal flonum rational uniform-array prototype. - -- Function: a:fixz64b n - -- Function: a:fixz64b + -- Function: A:fixZ64b n | + -- Function: A:fixZ64b | Returns an exact binary fixnum uniform-array prototype with at least 64 bits of precision. - -- Function: a:fixz32b n - -- Function: a:fixz32b + -- Function: A:fixZ32b n | + -- Function: A:fixZ32b | Returns an exact binary fixnum uniform-array prototype with at least 32 bits of precision. - -- Function: a:fixz16b n - -- Function: a:fixz16b + -- Function: A:fixZ16b n | + -- Function: A:fixZ16b | Returns an exact binary fixnum uniform-array prototype with at least 16 bits of precision. - -- Function: a:fixz8b n - -- Function: a:fixz8b + -- Function: A:fixZ8b n | + -- Function: A:fixZ8b | Returns an exact binary fixnum uniform-array prototype with at least 8 bits of precision. - -- Function: a:fixn64b k - -- Function: a:fixn64b + -- Function: A:fixN64b k | + -- Function: A:fixN64b | Returns an exact non-negative binary fixnum uniform-array prototype with at least 64 bits of precision. - -- Function: a:fixn32b k - -- Function: a:fixn32b + -- Function: A:fixN32b k | + -- Function: A:fixN32b | Returns an exact non-negative binary fixnum uniform-array prototype with at least 32 bits of precision. - -- Function: a:fixn16b k - -- Function: a:fixn16b + -- Function: A:fixN16b k | + -- Function: A:fixN16b | Returns an exact non-negative binary fixnum uniform-array prototype with at least 16 bits of precision. - -- Function: a:fixn8b k - -- Function: a:fixn8b + -- Function: A:fixN8b k | + -- Function: A:fixN8b | Returns an exact non-negative binary fixnum uniform-array prototype with at least 8 bits of precision. - -- Function: a:bool bool - -- Function: a:bool + -- Function: A:bool bool | + -- Function: A:bool | Returns a boolean uniform-array prototype. @@ -11736,13 +12568,13 @@ File: slib.info, Node: Subarrays, Next: Array Mapping, Prev: Arrays, Up: Dat #2A((a b) (d e)) > (subarray ra #f '(1 2)) #2A((b c) (e f)) - > (subarray ra #f '(2 1)) | - #2A((c b) (f e)) | + > (subarray ra #f '(2 1)) + #2A((c b) (f e)) - Arrays can be reflected (reversed) using `subarray': | - | - > (subarray '#1A(a b c d e) '(4 0)) | - #1A(e d c b a) | + Arrays can be reflected (reversed) using `subarray': + + > (subarray '#1A(a b c d e) '(4 0)) + #1A(e d c b a) -- Function: array-trim array trim ... Returns a subarray sharing contents with ARRAY except for slices @@ -11796,6 +12628,16 @@ File: slib.info, Node: Array Mapping, Next: Array Interpolation, Prev: Subarr a list of indexes for which ARRAY is defined, (equal? LI (apply array-ref (array-indexes ARRAY) LI)). + -- Function: array-index-for-each array proc | + applies PROC to the indices of each element of ARRAY in turn. The | + value returned and the order of application are unspecified. | + | + One can implement ARRAY-INDEX-MAP! as | + (define (array-index-map! ra fun) | + (array-index-for-each | + ra | + (lambda is (apply array-set! ra (apply fun is) is)))) | + | -- Procedure: array-index-map! array proc applies PROC to the indices of each element of ARRAY in turn, storing the result in the corresponding element. The value @@ -11954,16 +12796,16 @@ concerned. -- Function: bytes-copy bytes Returns a newly allocated copy of the given BYTES. - -- Function: subbytes bytes start end | - BYTES must be a bytes, and START and END must be exact integers | - satisfying | - | - 0 <= START <= END <= (bytes-length BYTES). | - | - `subbytes' returns a newly allocated bytes formed from the bytes of | - BYTES beginning with index START (inclusive) and ending with index | - END (exclusive). | - | + -- Function: subbytes bytes start end + BYTES must be a bytes, and START and END must be exact integers + satisfying + + 0 <= START <= END <= (bytes-length BYTES). + + `subbytes' returns a newly allocated bytes formed from the bytes of + BYTES beginning with index START (inclusive) and ending with index + END (exclusive). + -- Procedure: bytes-reverse! bytes Reverses the order of byte-array BYTES. @@ -12022,24 +12864,24 @@ Byte/Number Conversions:: are always big-endian. PORT may be omitted, in which case it defaults to the value returned by `current-output-port'. -`subbytes-read!' and `subbytes-write' provide lower-level procedures | +`subbytes-read!' and `subbytes-write' provide lower-level procedures for reading and writing blocks of bytes. The relative size of START and END determines the order of writing. - -- Procedure: subbytes-read! string start end port | - -- Procedure: subbytes-read! string start end | + -- Procedure: subbytes-read! string start end port + -- Procedure: subbytes-read! string start end Fills STRING with up to `(abs (- START END))' bytes read from PORT. The first byte read is stored at index STRING. - `subbytes-read!' returns the number of bytes read. | + `subbytes-read!' returns the number of bytes read. PORT may be omitted, in which case it defaults to the value returned by `current-input-port'. - -- Function: subbytes-write string start end port | - -- Function: subbytes-write string start end | - `subbytes-write' writes `(abs (- START END))' bytes to output-port | - PORT. The first byte written is index START of STRING. | - `subbytes-write' returns the number of bytes written. | + -- Function: subbytes-write string start end port + -- Function: subbytes-write string start end + `subbytes-write' writes `(abs (- START END))' bytes to output-port + PORT. The first byte written is index START of STRING. + `subbytes-write' returns the number of bytes written. PORT may be omitted, in which case it defaults to the value returned by `current-output-port'. @@ -12102,6 +12944,7 @@ determines the signedness of the number. (bytes->ieee-float (bytes #xff #x80 0 0)) => -inf.0 (bytes->ieee-float (bytes #x7f #x80 0 0)) => +inf.0 (bytes->ieee-float (bytes #x7f #x80 0 1)) => 0/0 + (bytes->ieee-float (bytes #x7f #xc0 0 0)) => 0/0 | -- Function: bytes->ieee-double bytes BYTES must be a 8-element byte-array. `bytes->ieee-double' @@ -12138,7 +12981,7 @@ determines the signedness of the number. (bytes->list (ieee-float->bytes -inf.0)) => (255 128 0 0) (bytes->list (ieee-float->bytes +inf.0)) => (127 128 0 0) - (bytes->list (ieee-float->bytes 0/0)) => (127 128 0 1) + (bytes->list (ieee-float->bytes 0/0)) => (127 192 0 0) -- Function: ieee-double->bytes x Returns a 8-element byte-array encoding the IEEE double-precision @@ -12191,7 +13034,7 @@ enables the full range of numbers as keys in `ieee-byte-collate!' returns BYTE-VECTOR. -- Procedure: ieee-byte-decollate! byte-vector - Given BYTE-VECTOR modified by `IEEE-byte-collate!', reverses the + Given BYTE-VECTOR modified by `ieee-byte-collate!', reverses the | BYTE-VECTOR modifications. -- Function: ieee-byte-collate byte-vector @@ -12199,7 +13042,7 @@ enables the full range of numbers as keys in IEEE floating-point byte-vectors matches numerical order. -- Function: ieee-byte-decollate byte-vector - Given BYTE-VECTOR returned by `IEEE-byte-collate', reverses the + Given BYTE-VECTOR returned by `ieee-byte-collate', reverses the | BYTE-VECTOR modifications. @@ -12354,9 +13197,7 @@ operations. -- Function: reduce proc seed collection1 ... A generalization of the list-based `reduce-init' (*note Lists as - sequences::) to collections which will shadow the list-based - version if `(require 'collect)' follows `(require - 'common-list-functions)' (*note Common List Functions::). + sequences::) to collections. | Examples: (reduce + 0 (vector 1 2 3)) @@ -12364,6 +13205,9 @@ operations. (reduce union '() '((a b c) (b c d) (d a))) => (c b d a). + `Reduce' called with two arguments will work as does the procedure | + of the same name from *Note Common List Functions::). | + | -- Function: any? pred collection1 ... A generalization of the list-based `some' (*note Lists as sequences::) to collections. @@ -13595,154 +14439,88 @@ File: slib.info, Node: Sorting, Next: Topological Sort, Prev: Chapter Orderin 7.2.4 Sorting ------------- -`(require 'sort)' +`(require 'sort)' or `(require 'srfi-95)' | - [by Richard A. O'Keefe, 1991] | + [by Richard A. O'Keefe, 1991] | - Many Scheme systems provide some kind of sorting functions. They do -not, however, always provide the _same_ sorting functions, and those -that I have had the opportunity to test provided inefficient ones (a -common blunder is to use quicksort which does not perform well). - - Because `sort' and `sort!' are not in the standard, there is very -little agreement about what these functions look like. For example, -Dybvig says that Chez Scheme provides - (merge predicate list1 list2) - (merge! predicate list1 list2) - (sort predicate list) - (sort! predicate list) - while MIT Scheme 7.1, following Common LISP, offers unstable - (sort list predicate) - TI PC Scheme offers - (sort! list/vector predicate?) - and Elk offers - (sort list/vector predicate?) - (sort! list/vector predicate?) - - Here is a comprehensive catalogue of the variations I have found. - - 1. Both `sort' and `sort!' may be provided. - - 2. `sort' may be provided without `sort!'. - - 3. `sort!' may be provided without `sort'. - - 4. Neither may be provided. - - 5. The sequence argument may be either a list or a vector. - - 6. The sequence argument may only be a list. - - 7. The sequence argument may only be a vector. - - 8. The comparison function may be expected to behave like `<'. - - 9. The comparison function may be expected to behave like `<='. - - 10. The interface may be `(sort predicate? sequence)'. - - 11. The interface may be `(sort sequence predicate?)'. - - 12. The interface may be `(sort sequence &optional (predicate? <))'. - - 13. The sort may be stable. - - 14. The sort may be unstable. - - All of this variation really does not help anybody. A nice simple -merge sort is both stable and fast (quite a lot faster than _quick_ -sort). - I am providing this source code with no restrictions at all on its use -(but please retain D.H.D.Warren's credit for the original idea). You -may have to rename some of these functions in order to use them in a -system which already provides incompatible or inferior sorts. For each -of the functions, only the top-level define needs to be edited to do -that. - - I could have given these functions names which would not clash with -any Scheme that I know of, but I would like to encourage implementors to -converge on a single interface, and this may serve as a hint. The -argument order for all functions has been chosen to be as close to -Common LISP as made sense, in order to avoid NIH-itis. - - The code of `merge' and `merge!' could have been quite a bit simpler, | -but they have been coded to reduce the amount of work done per | -iteration. (For example, we only have one `null?' test per iteration.) | - | - I gave serious consideration to producing Common-LISP-compatible | -functions. However, Common LISP's `sort' is our `sort!' (well, in fact | -Common LISP's `stable-sort' is our `sort!'; merge sort is _fast_ as | -well as stable!) so adapting CL code to Scheme takes a bit of work | -anyway. I did, however, appeal to CL to determine the _order_ of the | -arguments. | - | - Each of the five functions has a required _last_ parameter which is a -comparison function. A comparison function `f' is a function of 2 -arguments which acts like `<'. For example, +(but please retain D.H.D.Warren's credit for the original idea). | - (not (f x x)) - (and (f x y) (f y z)) == (f x z) + The code of `merge' and `merge!' could have been quite a bit simpler, +but they have been coded to reduce the amount of work done per +iteration. (For example, we only have one `null?' test per iteration.) + I gave serious consideration to producing Common-LISP-compatible +functions. However, Common LISP's `sort' is our `sort!' (well, in fact +Common LISP's `stable-sort' is our `sort!'; merge sort is _fast_ as +well as stable!) so adapting CL code to Scheme takes a bit of work +anyway. I did, however, appeal to CL to determine the _order_ of the +arguments. + | The standard functions `<', `>', `char<?', `char>?', `char-ci<?', `char-ci>?', `string<?', `string>?', `string-ci<?', and `string-ci>?' are suitable for use as comparison functions. Think of `(less? x y)' as saying when `x' must _not_ precede `y'. - [Addendum by Aubrey Jaffer, 2006] | - | - These procedures are stable when called with predicates which return | -`#f' when applied to identical arguments. These procedures have | -asymptotic time and space needs no larger than O(N*log(N)), where N is | -the sum of the lengths of the sequence arguments. | - | - All five functions take an optional KEY argument corresponding to a | -CL-style `&key' argument. A LESS? predicate with a KEY argument | -behaves like: | - | - (lambda (x y) (LESS? (KEY x) (KEY y))) | + [Addendum by Aubrey Jaffer, 2006] + + These procedures are stable when called with predicates which return +`#f' when applied to identical arguments. | | - The `!' variants sort in place; `sort!' returns its SEQUENCE argument. | + The `sorted?', `merge', and `merge!' procedures consume asymptotic | +time and space no larger than O(N), where N is the sum of the lengths | +of the sequence arguments. The `sort' and `sort!' procedures consume | +asymptotic time and space no larger than O(N*log(N)), where N is the | +length of the sequence argument. | + + All five functions take an optional KEY argument corresponding to a +CL-style `&key' argument. A LESS? predicate with a KEY argument +behaves like: + + (lambda (x y) (LESS? (KEY x) (KEY y))) + + All five functions will call the KEY argument at most once per | +element. | | + The `!' variants sort in place; `sort!' returns its SEQUENCE argument. + -- Function: sorted? sequence less? - -- Function: sorted? sequence less? key | + -- Function: sorted? sequence less? key Returns `#t' when the sequence argument is in non-decreasing order according to LESS? (that is, there is no adjacent pair `... x y ...' for which `(less? y x)'). Returns `#f' when the sequence contains at least one out-of-order - pair. It is an error if the sequence is not a list or array | - (including vectors and strings). | + pair. It is an error if the sequence is not a list or array + (including vectors and strings). -- Function: merge list1 list2 less? - -- Function: merge list1 list2 less? key | - Merges two sorted lists, returning a freshly allocated list as its | - result. | + -- Function: merge list1 list2 less? key + Merges two sorted lists, returning a freshly allocated list as its + result. - -- Function: merge! list1 list2 less? | - -- Function: merge! list1 list2 less? key | - Merges two sorted lists, re-using the pairs of LIST1 and LIST2 to | - build the result. If `merge!' is compiled, then no new pairs will | - be allocated. The first pair of the result will be either the | - first pair of LIST1 or the first pair of LIST2. | + -- Function: merge! list1 list2 less? + -- Function: merge! list1 list2 less? key + Merges two sorted lists, re-using the pairs of LIST1 and LIST2 to + build the result. The result will be either LIST1 or LIST2. | -- Function: sort sequence less? - -- Function: sort sequence less? key | - Accepts a list or array (including vectors and strings) for | - SEQUENCE; and returns a completely new sequence which is sorted | - according to LESS?. The returned sequence is the same type as the | - argument SEQUENCE. Given valid arguments, it is always the case | - that: | - - (sorted? (sort SEQUENCE LESS?) LESS?) => #t | - - -- Function: sort! sequence less? | - -- Function: sort! sequence less? key | - Returns SEQUENCE which has been mutated to order its elements | - according to LESS?. If the argument SEQUENCE is a list and | - `sort!' is compiled, then no new pairs will be allocated. If the | - argument SEQUENCE is an array (including vectors and strings), | - then the sorted elements are returned in the array SEQUENCE. | + -- Function: sort sequence less? key + Accepts a list or array (including vectors and strings) for + SEQUENCE; and returns a completely new sequence which is sorted + according to LESS?. The returned sequence is the same type as the + argument SEQUENCE. Given valid arguments, it is always the case + that: + + (sorted? (sort SEQUENCE LESS?) LESS?) => #t + + -- Function: sort! sequence less? + -- Function: sort! sequence less? key + Returns list, array, vector, or string SEQUENCE which has been | + mutated to order its elements according to LESS?. Given valid | + arguments, it is always the case that: | + | + (sorted? (sort! SEQUENCE LESS?) LESS?) => #t | File: slib.info, Node: Topological Sort, Next: Hashing, Prev: Sorting, Up: Sorting and Searching @@ -14990,18 +15768,27 @@ Implements "Scheme Request For Implementation" (SRFI) as described at * SRFI-9 *Note Define-Record-Type:: - * SRFI-23 `(define error slib:error)' | + * SRFI-11 *Note Binding to multiple values:: | + | + * SRFI-23 `(define error slib:error)' + + * SRFI-28 *Note Format:: | * SRFI-47 *Note Arrays:: | - * SRFI-63 *Note Arrays:: + * SRFI-59 *Note Vicinity:: - * SRFI-59 *Note Vicinity:: | - | * SRFI-60 *Note Bit-Twiddling:: - * SRFI-61 *Note Guarded COND Clause:: + * SRFI-61 *Note Guarded COND Clause:: + * SRFI-63 *Note Arrays:: | + | + * SRFI-94 *Note Irrational Integer Functions:: and *Note Irrational + Real Functions:: | + | + * SRFI-95 *Note Sorting:: | + | File: slib.info, Node: SRFI-1, Prev: SRFI, Up: SRFI @@ -15120,8 +15907,7 @@ Fold and Unfold -- Function: pair-fold-right kons knil clist1 clist2 ... - -- Function: reduce f ridentity list - -- Function: reduce-right f ridentity list + -- Function: reduce arg ... | -- Procedure: map! f clist1 clist2 ... @@ -15814,12 +16600,12 @@ File: slib.info, Node: About SLIB, Next: Index, Prev: Other Packages, Up: To More people than I can name have contributed to SLIB. Thanks to all of you! - SLIB 3a4, released October 2006. | + SLIB 3a5, released November 2007. | Aubrey Jaffer <agj @ alum.mit.edu> - | - Current information about SLIB can be found on SLIB's "WWW" home page: | - | - `http://swiss.csail.mit.edu/~jaffer/SLIB' | + + Current information about SLIB can be found on SLIB's "WWW" home page: + + `http://swiss.csail.mit.edu/~jaffer/SLIB' * Menu: @@ -15853,7 +16639,7 @@ There are five parts to installation: 8.1.1 Unpacking the SLIB Distribution ------------------------------------- -If the SLIB distribution is a Linux RPM, it will create the SLIB +If the SLIB distribution is a GNU/Linux RPM, it will create the SLIB | directory `/usr/share/slib'. If the SLIB distribution is a ZIP file, unzip the distribution to @@ -16009,8 +16795,8 @@ File: slib.info, Node: The SLIB script, Next: Porting, Prev: Installation, U SLIB comes with shell script for Unix platforms. - slib [ scm | gsi | mzscheme | guile | slib48 | scheme48 | scmlit ] - + slib [ scheme | scm | gsi | mzscheme | guile | + | scheme48 | scmlit | elk | sisc | kawa ] | Starts an interactive Scheme-with-SLIB session. @@ -16199,11 +16985,11 @@ File: slib.info, Node: About this manual, Prev: Copyrights, Up: About SLIB 8.6 About this manual ===================== -* Menu: | - | -* Copying This Manual:: | -* How to use this License for your documents:: | - | +* Menu: + +* Copying This Manual:: +* How to use this License for your documents:: + * Entries that are labeled as Functions are called for their return values. Entries that are labeled as Procedures are called primarily for their side effects. @@ -16217,448 +17003,448 @@ File: slib.info, Node: About this manual, Prev: Copyrights, Up: About SLIB File: slib.info, Node: Copying This Manual, Next: How to use this License for your documents, Prev: About this manual, Up: About this manual - | -8.6.1 Copying This Manual | -------------------------- | - | - Version 1.2, November 2002 | - | - Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. | - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA | - | - Everyone is permitted to copy and distribute verbatim copies | - of this license document, but changing it is not allowed. | - | - 0. PREAMBLE | - | - The purpose of this License is to make a manual, textbook, or other | - functional and useful document "free" in the sense of freedom: to | - assure everyone the effective freedom to copy and redistribute it, | - with or without modifying it, either commercially or | - noncommercially. Secondarily, this License preserves for the | - author and publisher a way to get credit for their work, while not | - being considered responsible for modifications made by others. | - | - This License is a kind of "copyleft", which means that derivative | - works of the document must themselves be free in the same sense. | - It complements the GNU General Public License, which is a copyleft | - license designed for free software. | - | - We have designed this License in order to use it for manuals for | - free software, because free software needs free documentation: a | - free program should come with manuals providing the same freedoms | - that the software does. But this License is not limited to | - software manuals; it can be used for any textual work, regardless | - of subject matter or whether it is published as a printed book. | - We recommend this License principally for works whose purpose is | - instruction or reference. | - | - 1. APPLICABILITY AND DEFINITIONS | - | - This License applies to any manual or other work, in any medium, | - that contains a notice placed by the copyright holder saying it | - can be distributed under the terms of this License. Such a notice | - grants a world-wide, royalty-free license, unlimited in duration, | - to use that work under the conditions stated herein. The | - "Document", below, refers to any such manual or work. Any member | - of the public is a licensee, and is addressed as "you". You | - accept the license if you copy, modify or distribute the work in a | - way requiring permission under copyright law. | - | - A "Modified Version" of the Document means any work containing the | - Document or a portion of it, either copied verbatim, or with | - modifications and/or translated into another language. | - | - A "Secondary Section" is a named appendix or a front-matter section | - of the Document that deals exclusively with the relationship of the | - publishers or authors of the Document to the Document's overall | - subject (or to related matters) and contains nothing that could | - fall directly within that overall subject. (Thus, if the Document | - is in part a textbook of mathematics, a Secondary Section may not | - explain any mathematics.) The relationship could be a matter of | - historical connection with the subject or with related matters, or | - of legal, commercial, philosophical, ethical or political position | - regarding them. | - | - The "Invariant Sections" are certain Secondary Sections whose | - titles are designated, as being those of Invariant Sections, in | - the notice that says that the Document is released under this | - License. If a section does not fit the above definition of | - Secondary then it is not allowed to be designated as Invariant. | - The Document may contain zero Invariant Sections. If the Document | - does not identify any Invariant Sections then there are none. | - | - The "Cover Texts" are certain short passages of text that are | - listed, as Front-Cover Texts or Back-Cover Texts, in the notice | - that says that the Document is released under this License. A | - Front-Cover Text may be at most 5 words, and a Back-Cover Text may | - be at most 25 words. | - | - A "Transparent" copy of the Document means a machine-readable copy, | - represented in a format whose specification is available to the | - general public, that is suitable for revising the document | - straightforwardly with generic text editors or (for images | - composed of pixels) generic paint programs or (for drawings) some | - widely available drawing editor, and that is suitable for input to | - text formatters or for automatic translation to a variety of | - formats suitable for input to text formatters. A copy made in an | - otherwise Transparent file format whose markup, or absence of | - markup, has been arranged to thwart or discourage subsequent | - modification by readers is not Transparent. An image format is | - not Transparent if used for any substantial amount of text. A | - copy that is not "Transparent" is called "Opaque". | - | - Examples of suitable formats for Transparent copies include plain | - ASCII without markup, Texinfo input format, LaTeX input format, | - SGML or XML using a publicly available DTD, and | - standard-conforming simple HTML, PostScript or PDF designed for | - human modification. Examples of transparent image formats include | - PNG, XCF and JPG. Opaque formats include proprietary formats that | - can be read and edited only by proprietary word processors, SGML or | - XML for which the DTD and/or processing tools are not generally | - available, and the machine-generated HTML, PostScript or PDF | - produced by some word processors for output purposes only. | - | - The "Title Page" means, for a printed book, the title page itself, | - plus such following pages as are needed to hold, legibly, the | - material this License requires to appear in the title page. For | - works in formats which do not have any title page as such, "Title | - Page" means the text near the most prominent appearance of the | - work's title, preceding the beginning of the body of the text. | - | - A section "Entitled XYZ" means a named subunit of the Document | - whose title either is precisely XYZ or contains XYZ in parentheses | - following text that translates XYZ in another language. (Here XYZ | - stands for a specific section name mentioned below, such as | - "Acknowledgements", "Dedications", "Endorsements", or "History".) | - To "Preserve the Title" of such a section when you modify the | - Document means that it remains a section "Entitled XYZ" according | - to this definition. | - | - The Document may include Warranty Disclaimers next to the notice | - which states that this License applies to the Document. These | - Warranty Disclaimers are considered to be included by reference in | - this License, but only as regards disclaiming warranties: any other | - implication that these Warranty Disclaimers may have is void and | - has no effect on the meaning of this License. | - | - 2. VERBATIM COPYING | - | - You may copy and distribute the Document in any medium, either | - commercially or noncommercially, provided that this License, the | - copyright notices, and the license notice saying this License | - applies to the Document are reproduced in all copies, and that you | - add no other conditions whatsoever to those of this License. You | - may not use technical measures to obstruct or control the reading | - or further copying of the copies you make or distribute. However, | - you may accept compensation in exchange for copies. If you | - distribute a large enough number of copies you must also follow | - the conditions in section 3. | - | - You may also lend copies, under the same conditions stated above, | - and you may publicly display copies. | - | - 3. COPYING IN QUANTITY | - | - If you publish printed copies (or copies in media that commonly | - have printed covers) of the Document, numbering more than 100, and | - the Document's license notice requires Cover Texts, you must | - enclose the copies in covers that carry, clearly and legibly, all | - these Cover Texts: Front-Cover Texts on the front cover, and | - Back-Cover Texts on the back cover. Both covers must also clearly | - and legibly identify you as the publisher of these copies. The | - front cover must present the full title with all words of the | - title equally prominent and visible. You may add other material | - on the covers in addition. Copying with changes limited to the | - covers, as long as they preserve the title of the Document and | - satisfy these conditions, can be treated as verbatim copying in | - other respects. | - | - If the required texts for either cover are too voluminous to fit | - legibly, you should put the first ones listed (as many as fit | - reasonably) on the actual cover, and continue the rest onto | - adjacent pages. | - | - If you publish or distribute Opaque copies of the Document | - numbering more than 100, you must either include a | - machine-readable Transparent copy along with each Opaque copy, or | - state in or with each Opaque copy a computer-network location from | - which the general network-using public has access to download | - using public-standard network protocols a complete Transparent | - copy of the Document, free of added material. If you use the | - latter option, you must take reasonably prudent steps, when you | - begin distribution of Opaque copies in quantity, to ensure that | - this Transparent copy will remain thus accessible at the stated | - location until at least one year after the last time you | - distribute an Opaque copy (directly or through your agents or | - retailers) of that edition to the public. | - | - It is requested, but not required, that you contact the authors of | - the Document well before redistributing any large number of | - copies, to give them a chance to provide you with an updated | - version of the Document. | - | - 4. MODIFICATIONS | - | - You may copy and distribute a Modified Version of the Document | - under the conditions of sections 2 and 3 above, provided that you | - release the Modified Version under precisely this License, with | - the Modified Version filling the role of the Document, thus | - licensing distribution and modification of the Modified Version to | - whoever possesses a copy of it. In addition, you must do these | - things in the Modified Version: | - | - A. Use in the Title Page (and on the covers, if any) a title | - distinct from that of the Document, and from those of | - previous versions (which should, if there were any, be listed | - in the History section of the Document). You may use the | - same title as a previous version if the original publisher of | - that version gives permission. | - | - B. List on the Title Page, as authors, one or more persons or | - entities responsible for authorship of the modifications in | - the Modified Version, together with at least five of the | - principal authors of the Document (all of its principal | - authors, if it has fewer than five), unless they release you | - from this requirement. | - | - C. State on the Title page the name of the publisher of the | - Modified Version, as the publisher. | - | - D. Preserve all the copyright notices of the Document. | - | - E. Add an appropriate copyright notice for your modifications | - adjacent to the other copyright notices. | - | - F. Include, immediately after the copyright notices, a license | - notice giving the public permission to use the Modified | - Version under the terms of this License, in the form shown in | - the Addendum below. | - | - G. Preserve in that license notice the full lists of Invariant | - Sections and required Cover Texts given in the Document's | - license notice. | - | - H. Include an unaltered copy of this License. | - | - I. Preserve the section Entitled "History", Preserve its Title, | - and add to it an item stating at least the title, year, new | - authors, and publisher of the Modified Version as given on | - the Title Page. If there is no section Entitled "History" in | - the Document, create one stating the title, year, authors, | - and publisher of the Document as given on its Title Page, | - then add an item describing the Modified Version as stated in | - the previous sentence. | - | - J. Preserve the network location, if any, given in the Document | - for public access to a Transparent copy of the Document, and | - likewise the network locations given in the Document for | - previous versions it was based on. These may be placed in | - the "History" section. You may omit a network location for a | - work that was published at least four years before the | - Document itself, or if the original publisher of the version | - it refers to gives permission. | - | - K. For any section Entitled "Acknowledgements" or "Dedications", | - Preserve the Title of the section, and preserve in the | - section all the substance and tone of each of the contributor | - acknowledgements and/or dedications given therein. | - | - L. Preserve all the Invariant Sections of the Document, | - unaltered in their text and in their titles. Section numbers | - or the equivalent are not considered part of the section | - titles. | - | - M. Delete any section Entitled "Endorsements". Such a section | - may not be included in the Modified Version. | - | - N. Do not retitle any existing section to be Entitled | - "Endorsements" or to conflict in title with any Invariant | - Section. | - | - O. Preserve any Warranty Disclaimers. | - | - If the Modified Version includes new front-matter sections or | - appendices that qualify as Secondary Sections and contain no | - material copied from the Document, you may at your option | - designate some or all of these sections as invariant. To do this, | - add their titles to the list of Invariant Sections in the Modified | - Version's license notice. These titles must be distinct from any | - other section titles. | - | - You may add a section Entitled "Endorsements", provided it contains | - nothing but endorsements of your Modified Version by various | - parties--for example, statements of peer review or that the text | - has been approved by an organization as the authoritative | - definition of a standard. | - | - You may add a passage of up to five words as a Front-Cover Text, | - and a passage of up to 25 words as a Back-Cover Text, to the end | - of the list of Cover Texts in the Modified Version. Only one | - passage of Front-Cover Text and one of Back-Cover Text may be | - added by (or through arrangements made by) any one entity. If the | - Document already includes a cover text for the same cover, | - previously added by you or by arrangement made by the same entity | - you are acting on behalf of, you may not add another; but you may | - replace the old one, on explicit permission from the previous | - publisher that added the old one. | - | - The author(s) and publisher(s) of the Document do not by this | - License give permission to use their names for publicity for or to | - assert or imply endorsement of any Modified Version. | - | - 5. COMBINING DOCUMENTS | - | - You may combine the Document with other documents released under | - this License, under the terms defined in section 4 above for | - modified versions, provided that you include in the combination | - all of the Invariant Sections of all of the original documents, | - unmodified, and list them all as Invariant Sections of your | - combined work in its license notice, and that you preserve all | - their Warranty Disclaimers. | - | - The combined work need only contain one copy of this License, and | - multiple identical Invariant Sections may be replaced with a single | - copy. If there are multiple Invariant Sections with the same name | - but different contents, make the title of each such section unique | - by adding at the end of it, in parentheses, the name of the | - original author or publisher of that section if known, or else a | - unique number. Make the same adjustment to the section titles in | - the list of Invariant Sections in the license notice of the | - combined work. | - | - In the combination, you must combine any sections Entitled | - "History" in the various original documents, forming one section | - Entitled "History"; likewise combine any sections Entitled | - "Acknowledgements", and any sections Entitled "Dedications". You | - must delete all sections Entitled "Endorsements." | - | - 6. COLLECTIONS OF DOCUMENTS | - | - You may make a collection consisting of the Document and other | - documents released under this License, and replace the individual | - copies of this License in the various documents with a single copy | - that is included in the collection, provided that you follow the | - rules of this License for verbatim copying of each of the | - documents in all other respects. | - | - You may extract a single document from such a collection, and | - distribute it individually under this License, provided you insert | - a copy of this License into the extracted document, and follow | - this License in all other respects regarding verbatim copying of | - that document. | - | - 7. AGGREGATION WITH INDEPENDENT WORKS | - | - A compilation of the Document or its derivatives with other | - separate and independent documents or works, in or on a volume of | - a storage or distribution medium, is called an "aggregate" if the | - copyright resulting from the compilation is not used to limit the | - legal rights of the compilation's users beyond what the individual | - works permit. When the Document is included in an aggregate, this | - License does not apply to the other works in the aggregate which | - are not themselves derivative works of the Document. | - | - If the Cover Text requirement of section 3 is applicable to these | - copies of the Document, then if the Document is less than one half | - of the entire aggregate, the Document's Cover Texts may be placed | - on covers that bracket the Document within the aggregate, or the | - electronic equivalent of covers if the Document is in electronic | - form. Otherwise they must appear on printed covers that bracket | - the whole aggregate. | - | - 8. TRANSLATION | - | - Translation is considered a kind of modification, so you may | - distribute translations of the Document under the terms of section | - 4. Replacing Invariant Sections with translations requires special | - permission from their copyright holders, but you may include | - translations of some or all Invariant Sections in addition to the | - original versions of these Invariant Sections. You may include a | - translation of this License, and all the license notices in the | - Document, and any Warranty Disclaimers, provided that you also | - include the original English version of this License and the | - original versions of those notices and disclaimers. In case of a | - disagreement between the translation and the original version of | - this License or a notice or disclaimer, the original version will | - prevail. | - | - If a section in the Document is Entitled "Acknowledgements", | - "Dedications", or "History", the requirement (section 4) to | - Preserve its Title (section 1) will typically require changing the | - actual title. | - | - 9. TERMINATION | - | - You may not copy, modify, sublicense, or distribute the Document | - except as expressly provided for under this License. Any other | - attempt to copy, modify, sublicense or distribute the Document is | - void, and will automatically terminate your rights under this | - License. However, parties who have received copies, or rights, | - from you under this License will not have their licenses | - terminated so long as such parties remain in full compliance. | - | - 10. FUTURE REVISIONS OF THIS LICENSE | - | - The Free Software Foundation may publish new, revised versions of | - the GNU Free Documentation License from time to time. Such new | - versions will be similar in spirit to the present version, but may | - differ in detail to address new problems or concerns. See | - `http://www.gnu.org/copyleft/'. | - | - Each version of the License is given a distinguishing version | - number. If the Document specifies that a particular numbered | - version of this License "or any later version" applies to it, you | - have the option of following the terms and conditions either of | - that specified version or of any later version that has been | - published (not as a draft) by the Free Software Foundation. If | - the Document does not specify a version number of this License, | - you may choose any version ever published (not as a draft) by the | - Free Software Foundation. | - | + +8.6.1 Copying This Manual +------------------------- + + Version 1.2, November 2002 + + Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. + We recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it + can be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + of the public is a licensee, and is addressed as "you". You + accept the license if you copy, modify or distribute the work in a + way requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in + the notice that says that the Document is released under this + License. If a section does not fit the above definition of + Secondary then it is not allowed to be designated as Invariant. + The Document may contain zero Invariant Sections. If the Document + does not identify any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. A + Front-Cover Text may be at most 5 words, and a Back-Cover Text may + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images + composed of pixels) generic paint programs or (for drawings) some + widely available drawing editor, and that is suitable for input to + text formatters or for automatic translation to a variety of + formats suitable for input to text formatters. A copy made in an + otherwise Transparent file format whose markup, or absence of + markup, has been arranged to thwart or discourage subsequent + modification by readers is not Transparent. An image format is + not Transparent if used for any substantial amount of text. A + copy that is not "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and + standard-conforming simple HTML, PostScript or PDF designed for + human modification. Examples of transparent image formats include + PNG, XCF and JPG. Opaque formats include proprietary formats that + can be read and edited only by proprietary word processors, SGML or + XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML, PostScript or PDF + produced by some word processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow + the conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the + title equally prominent and visible. You may add other material + on the covers in addition. Copying with changes limited to the + covers, as long as they preserve the title of the Document and + satisfy these conditions, can be treated as verbatim copying in + other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a + machine-readable Transparent copy along with each Opaque copy, or + state in or with each Opaque copy a computer-network location from + which the general network-using public has access to download + using public-standard network protocols a complete Transparent + copy of the Document, free of added material. If you use the + latter option, you must take reasonably prudent steps, when you + begin distribution of Opaque copies in quantity, to ensure that + this Transparent copy will remain thus accessible at the stated + location until at least one year after the last time you + distribute an Opaque copy (directly or through your agents or + retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of + copies, to give them a chance to provide you with an updated + version of the Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with + the Modified Version filling the role of the Document, thus + licensing distribution and modification of the Modified Version to + whoever possesses a copy of it. In addition, you must do these + things in the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of + previous versions (which should, if there were any, be listed + in the History section of the Document). You may use the + same title as a previous version if the original publisher of + that version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on + the Title Page. If there is no section Entitled "History" in + the Document, create one stating the title, year, authors, + and publisher of the Document as given on its Title Page, + then add an item describing the Modified Version as stated in + the previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in + the "History" section. You may omit a network location for a + work that was published at least four years before the + Document itself, or if the original publisher of the version + it refers to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the + section all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section + titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option + designate some or all of these sections as invariant. To do this, + add their titles to the list of Invariant Sections in the Modified + Version's license notice. These titles must be distinct from any + other section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end + of the list of Cover Texts in the Modified Version. Only one + passage of Front-Cover Text and one of Back-Cover Text may be + added by (or through arrangements made by) any one entity. If the + Document already includes a cover text for the same cover, + previously added by you or by arrangement made by the same entity + you are acting on behalf of, you may not add another; but you may + replace the old one, on explicit permission from the previous + publisher that added the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination + all of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the + documents in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow + this License in all other respects regarding verbatim copying of + that document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of + a storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided for under this License. Any other + attempt to copy, modify, sublicense or distribute the Document is + void, and will automatically terminate your rights under this + License. However, parties who have received copies, or rights, + from you under this License will not have their licenses + terminated so long as such parties remain in full compliance. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + `http://www.gnu.org/copyleft/'. + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If + the Document does not specify a version number of this License, + you may choose any version ever published (not as a draft) by the + Free Software Foundation. + File: slib.info, Node: How to use this License for your documents, Prev: Copying This Manual, Up: About this manual - | -8.6.2 How to use this License for your documents | ------------------------------------------------- | - | -To use this License in a document you have written, include a copy of | -the License in the document and put the following copyright and license | -notices just after the title page: | - | - Copyright (C) YEAR YOUR NAME. | - Permission is granted to copy, distribute and/or modify this document | - under the terms of the GNU Free Documentation License, Version 1.2 | - or any later version published by the Free Software Foundation; | - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover | + +8.6.2 How to use this License for your documents +------------------------------------------------ + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU - Free Documentation License''. | - | - If you have Invariant Sections, Front-Cover Texts and Back-Cover | -Texts, replace the "with...Texts." line with this: | - | - with the Invariant Sections being LIST THEIR TITLES, with | - the Front-Cover Texts being LIST, and with the Back-Cover Texts | - being LIST. | - | - If you have Invariant Sections without Cover Texts, or some other | -combination of the three, merge those two alternatives to suit the | -situation. | - | - If your document contains nontrivial examples of program code, we | -recommend releasing these examples in parallel under your choice of | -free software license, such as the GNU General Public License, to | -permit their use in free software. | - | + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, to +permit their use in free software. + File: slib.info, Node: Index, Prev: About SLIB, Up: Top - | + Index ***** Procedure and Macro Index ************************* - | + * Menu: @@ -16675,26 +17461,29 @@ Procedure and Macro Index * =?: Rev2 Procedures. (line 47) * >=?: Rev2 Procedures. (line 49) * >?: Rev2 Procedures. (line 48) -* a:bool: Arrays. (line 236) -* a:fixn16b: Arrays. (line 226) -* a:fixn32b: Arrays. (line 221) -* a:fixn64b: Arrays. (line 216) -* a:fixn8b: Arrays. (line 231) -* a:fixz16b: Arrays. (line 206) -* a:fixz32b: Arrays. (line 201) -* a:fixz64b: Arrays. (line 196) -* a:fixz8b: Arrays. (line 211) -* a:floc128b: Arrays. (line 149) -* a:floc16b: Arrays. (line 161) -* a:floc32b: Arrays. (line 157) -* a:floc64b: Arrays. (line 153) -* a:flor128b: Arrays. (line 165) -* a:flor16b: Arrays. (line 177) -* a:flor32b: Arrays. (line 173) -* a:flor64b: Arrays. (line 169) +* A:bool: Arrays. (line 236) +* A:fixN16b: Arrays. (line 226) +* A:fixN32b: Arrays. (line 221) +* A:fixN64b: Arrays. (line 216) +* A:fixN8b: Arrays. (line 231) +* A:fixZ16b: Arrays. (line 206) +* A:fixZ32b: Arrays. (line 201) +* A:fixZ64b: Arrays. (line 196) +* A:fixZ8b: Arrays. (line 211) +* A:floC128b: Arrays. (line 149) +* A:floC16b: Arrays. (line 161) +* A:floC32b: Arrays. (line 157) +* A:floC64b: Arrays. (line 153) +* A:floR128b: Arrays. (line 165) +* A:floR128d: Arrays. (line 181) +* A:floR16b: Arrays. (line 177) +* A:floR32b: Arrays. (line 173) +* A:floR32d: Arrays. (line 191) +* A:floR64b: Arrays. (line 169) +* A:floR64d: Arrays. (line 186) * abort: Session Support. (line 9) -* abs: Irrational Real Functions. | - (line 86) | +* abs: Irrational Real Functions. + (line 86) * absolute-path?: URI. (line 102) * absolute-uri?: URI. (line 98) * add-command-tables: Database Extension. (line 11) @@ -16708,10 +17497,10 @@ Procedure and Macro Index * alist->wt-tree: Construction of Weight-Balanced Trees. (line 65) * alist-associator: Association Lists. (line 28) -* alist-cons: SRFI-1. (line 178) -* alist-copy: SRFI-1. (line 180) -* alist-delete: SRFI-1. (line 182) -* alist-delete!: SRFI-1. (line 185) +* alist-cons: SRFI-1. (line 177) +* alist-copy: SRFI-1. (line 179) +* alist-delete: SRFI-1. (line 181) +* alist-delete!: SRFI-1. (line 184) * alist-for-each: Association Lists. (line 53) * alist-inquirer: Association Lists. (line 23) * alist-map: Association Lists. (line 48) @@ -16720,36 +17509,39 @@ Procedure and Macro Index * and-let*: Guarded LET* special form. (line 9) * and?: Non-List functions. (line 7) -* any: SRFI-1. (line 156) +* any: SRFI-1. (line 155) * any-bits-set?: Bit-Twiddling. (line 64) -* any?: Collections. (line 83) +* any?: Collections. (line 84) * append!: Rev2 Procedures. (line 36) * append-reverse: SRFI-1. (line 95) * append-reverse!: SRFI-1. (line 96) * apply: Multi-argument Apply. (line 12) -* arithmetic-shift: Bit-Twiddling. (line 182) +* arithmetic-shift: Bit-Twiddling. (line 192) * array->list: Arrays. (line 101) * array->vector: Arrays. (line 124) * array-dimensions: Arrays. (line 48) * array-for-each: Array Mapping. (line 25) * array-in-bounds?: Arrays. (line 133) -* array-index-map!: Array Mapping. (line 34) +* array-index-for-each: Array Mapping. (line 34) +* array-index-map!: Array Mapping. (line 44) * array-indexes: Array Mapping. (line 29) * array-map: Array Mapping. (line 17) * array-map!: Array Mapping. (line 9) * array-rank: Arrays. (line 44) * array-ref: Arrays. (line 136) * array-set!: Arrays. (line 139) -* array-trim: Subarrays. (line 48) | -* array:copy!: Array Mapping. (line 50) +* array-trim: Subarrays. (line 48) +* array:copy!: Array Mapping. (line 60) * array?: Arrays. (line 9) * asctime: Posix Time. (line 62) -* ash: Bit-Twiddling. (line 181) -* assoc: SRFI-1. (line 175) -* atan: Irrational Real Functions. | - (line 22) | +* ash: Bit-Twiddling. (line 191) +* assoc: SRFI-1. (line 174) +* atan: Irrational Real Functions. + (line 22) * atom?: Non-List functions. (line 30) +* attlist-add: Parsing XML. (line 451) +* attlist-remove-top: Parsing XML. (line 456) * batch:call-with-output-script: Batch. (line 47) * batch:command: Batch. (line 64) * batch:comment: Batch. (line 95) @@ -16760,20 +17552,20 @@ Procedure and Macro Index * batch:run-script: Batch. (line 88) * batch:try-chopped-command: Batch. (line 76) * batch:try-command: Batch. (line 72) -* bit-count: Bit-Twiddling. (line 74) -* bit-field: Bit-Twiddling. (line 156) -* bit-set?: Bit-Twiddling. (line 135) +* bit-field: Bit-Twiddling. (line 166) +* bit-set?: Bit-Twiddling. (line 145) * bitwise-and: Bit-Twiddling. (line 19) +* bitwise-bit-count: Bit-Twiddling. (line 91) * bitwise-if: Bit-Twiddling. (line 56) * bitwise-ior: Bit-Twiddling. (line 28) * bitwise-merge: Bit-Twiddling. (line 57) * bitwise-not: Bit-Twiddling. (line 46) * bitwise-xor: Bit-Twiddling. (line 37) * blackbody-spectrum: Spectra. (line 125) -* booleans->integer: Bit-Twiddling. (line 229) +* booleans->integer: Bit-Twiddling. (line 239) * break <1>: Breakpoints. (line 28) -* break: SRFI-1. (line 152) -* break!: SRFI-1. (line 154) +* break: SRFI-1. (line 151) +* break!: SRFI-1. (line 153) * break-all: Debug. (line 31) * breakf: Breakpoints. (line 47) * breakpoint: Breakpoints. (line 16) @@ -16785,7 +17577,7 @@ Procedure and Macro Index * byte-set!: Byte. (line 18) * bytes: Byte. (line 32) * bytes->ieee-double: Byte/Number Conversions. - (line 60) + (line 61) | * bytes->ieee-float: Byte/Number Conversions. (line 41) * bytes->integer: Byte/Number Conversions. @@ -16793,8 +17585,8 @@ Procedure and Macro Index * bytes->list: Byte. (line 36) * bytes-copy: Byte. (line 47) * bytes-length: Byte. (line 29) -* bytes-reverse: Byte. (line 63) | -* bytes-reverse!: Byte. (line 60) | +* bytes-reverse: Byte. (line 63) +* bytes-reverse!: Byte. (line 60) * call-with-dynamic-binding: Dynamic Data Type. (line 25) * call-with-input-string: String Ports. (line 15) * call-with-open-ports: Input/Output. (line 54) @@ -16808,8 +17600,8 @@ Procedure and Macro Index * catalog->html: HTML Tables. (line 49) * catalog-id on base-table: Base Tables. (line 30) * catalog:read: Catalog Vicinities. (line 57) -* cdna:base-count: NCBI-DNA. (line 35) -* cdna:report-base-count: NCBI-DNA. (line 39) +* cdna:base-count: NCBI-DNA. (line 37) +* cdna:report-base-count: NCBI-DNA. (line 41) * cgi:serve-query: HTTP and CGI. (line 69) * chap:next-string: Chapter Ordering. (line 29) * chap:string<=?: Chapter Ordering. (line 25) @@ -16845,7 +17637,7 @@ Procedure and Macro Index (line 61) * CMC:DE*: Color Difference Metrics. (line 65) -* codons<-cdna: NCBI-DNA. (line 18) +* codons<-cdna: NCBI-DNA. (line 20) * coerce: Type Coercion. (line 12) * collection?: Collections. (line 36) * color->ciexyz: Color Spaces. (line 34) @@ -16894,8 +17686,8 @@ Procedure and Macro Index * cons*: SRFI-1. (line 22) * continue: Breakpoints. (line 20) * convert-color: Color Data-Type. (line 54) -* copy-bit: Bit-Twiddling. (line 144) -* copy-bit-field: Bit-Twiddling. (line 167) +* copy-bit: Bit-Twiddling. (line 154) +* copy-bit-field: Bit-Twiddling. (line 177) * copy-list: List construction. (line 32) * copy-random-state: Exact Random Numbers. (line 29) @@ -16916,10 +17708,10 @@ Procedure and Macro Index * ctime: Posix Time. (line 68) * current-directory: Directories. (line 9) * current-error-port: Input/Output. (line 70) -* current-input-port <1>: Byte. (line 84) | +* current-input-port <1>: Byte. (line 84) * current-input-port: Ruleset Definition and Use. (line 57) -* current-output-port: Byte. (line 76) | +* current-output-port: Byte. (line 76) * current-time: Time and Date. (line 20) * cvs-directories: CVS. (line 14) * cvs-files: CVS. (line 9) @@ -16959,8 +17751,8 @@ Procedure and Macro Index * delete* on base-table: Aggregate Base Operations. (line 11) * delete-domain on relational-database: Command Intrinsics. (line 39) -* delete-duplicates: SRFI-1. (line 166) -* delete-duplicates!: SRFI-1. (line 169) +* delete-duplicates: SRFI-1. (line 165) +* delete-duplicates!: SRFI-1. (line 168) * delete-file: Input/Output. (line 14) * delete-if: Destructive list operations. (line 59) @@ -16970,10 +17762,10 @@ Procedure and Macro Index * dequeue!: Queues. (line 28) * dequeue-all!: Queues. (line 36) * determinant: Matrix Algebra. (line 18) -* dft: Discrete Fourier Transform. | - (line 44) | -* dft-1: Discrete Fourier Transform. | - (line 49) | +* dft: Discrete Fourier Transform. + (line 44) +* dft-1: Discrete Fourier Transform. + (line 49) * diff:edit-length: Sequence Comparison. (line 64) * diff:edits: Sequence Comparison. (line 45) * diff:longest-common-subsequence: Sequence Comparison. (line 32) @@ -16996,28 +17788,27 @@ Procedure and Macro Index * e-sRGB->sRGB: Color Conversions. (line 60) * eighth: SRFI-1. (line 64) * emacs:backup-name: Transactions. (line 73) -* empty?: Collections. (line 99) +* empty?: Collections. (line 100) * encode-universal-time: Common-Lisp Time. (line 40) * enqueue!: Queues. (line 25) * equal? <1>: Byte. (line 44) * equal?: Arrays. (line 19) * eval: Eval. (line 9) * every: Lists as sets. (line 91) -* every?: Collections. (line 91) +* every?: Collections. (line 92) * exports<-info-index: Top-level Variable References. - (line 35) -* expt: Miscellany. (line 20) -* extended-euclid: Modular Arithmetic. (line 9) | + (line 35) | +* extended-euclid: Modular Arithmetic. (line 9) * factor: Prime Numbers. (line 41) * feature->export-alist: Module Manifests. (line 100) * feature->exports: Module Manifests. (line 105) * feature->requires: Module Manifests. (line 29) * feature->requires*: Module Manifests. (line 45) * feature-eval: Feature. (line 52) -* fft: Discrete Fourier Transform. | - (line 27) | -* fft-1: Discrete Fourier Transform. | - (line 34) | +* fft: Discrete Fourier Transform. + (line 27) +* fft-1: Discrete Fourier Transform. + (line 34) * fifth: SRFI-1. (line 61) * file->color-dictionary: Color Names. (line 68) * file->definitions: Module Manifests. (line 72) @@ -17028,6 +17819,7 @@ Procedure and Macro Index * file-exists?: Input/Output. (line 9) * file-lock!: Transactions. (line 52) * file-lock-owner: Transactions. (line 48) +* file-position: Input/Output. (line 81) * file-unlock!: Transactions. (line 62) * filename:match-ci??: Filenames. (line 10) * filename:match??: Filenames. (line 9) @@ -17035,16 +17827,16 @@ Procedure and Macro Index * filename:substitute??: Filenames. (line 34) * fill-empty-parameters: Parameter lists. (line 51) * fill-rect: Rectangles. (line 30) -* filter: SRFI-1. (line 129) -* filter!: SRFI-1. (line 131) -* find: SRFI-1. (line 144) +* filter: SRFI-1. (line 128) +* filter!: SRFI-1. (line 130) +* find: SRFI-1. (line 143) * find-if: Lists as sets. (line 138) * find-ratio: Rationalize. (line 20) * find-ratio-between: Rationalize. (line 27) * find-string-from-port?: String Search. (line 30) -* find-tail: SRFI-1. (line 146) +* find-tail: SRFI-1. (line 145) * first: SRFI-1. (line 53) -* first-set-bit: Bit-Twiddling. (line 100) +* first-set-bit: Bit-Twiddling. (line 110) * fluid-let: Fluid-Let. (line 9) * fold: SRFI-1. (line 111) * fold-right: SRFI-1. (line 113) @@ -17160,17 +17952,17 @@ Procedure and Macro Index * identifier?: Syntactic Closures. (line 334) * identity: Miscellany. (line 9) * ieee-byte-collate: Byte/Number Conversions. - (line 151) + (line 152) | * ieee-byte-collate!: Byte/Number Conversions. - (line 142) + (line 143) | * ieee-byte-decollate: Byte/Number Conversions. - (line 155) + (line 156) | * ieee-byte-decollate!: Byte/Number Conversions. - (line 147) + (line 148) | * ieee-double->bytes: Byte/Number Conversions. - (line 97) + (line 98) | * ieee-float->bytes: Byte/Number Conversions. - (line 79) + (line 80) | * illuminant-map: Spectra. (line 77) * illuminant-map->XYZ: Spectra. (line 82) * implementation-vicinity: Vicinity. (line 42) @@ -17183,21 +17975,20 @@ Procedure and Macro Index (line 62) * integer->hilbert-coordinates: Hilbert Space-Filling Curve. (line 30) -* integer->list: Bit-Twiddling. (line 215) +* integer->list: Bit-Twiddling. (line 225) * integer->peano-coordinates: Peano Space-Filling Curve. (line 19) * integer-byte-collate: Byte/Number Conversions. - (line 136) + (line 137) | * integer-byte-collate!: Byte/Number Conversions. - (line 130) -* integer-expt: Irrational Integer Functions. | - (line 9) | -* integer-length: Bit-Twiddling. (line 88) -* integer-log: Irrational Integer Functions. | + (line 131) | +* integer-expt: Irrational Integer Functions. + (line 9) +* integer-length: Bit-Twiddling. (line 98) +* integer-log: Irrational Integer Functions. (line 18) | -* integer-sqrt <1>: Root Finding. (line 9) | -* integer-sqrt: Irrational Integer Functions. | - (line 23) | +* integer-sqrt: Irrational Integer Functions. + (line 23) * interaction-environment: Eval. (line 51) * interpolate-array-ref: Array Interpolation. (line 9) * interpolate-from-table: Database Interpolation. @@ -17222,12 +18013,16 @@ Procedure and Macro Index (line 25) * L*u*v*->CIEXYZ: Color Conversions. (line 34) * l*u*v*->color: Color Spaces. (line 102) -* laguerre:find-polynomial-root: Root Finding. (line 58) -* laguerre:find-root: Root Finding. (line 47) +* laguerre:find-polynomial-root: Root Finding. (line 54) +* laguerre:find-root: Root Finding. (line 43) * last <1>: SRFI-1. (line 83) * last: Lists as sequences. (line 111) -* last-pair: Miscellany. (line 73) +* last-pair: Miscellany. (line 64) * length+: SRFI-1. (line 88) +* let-values: Binding to multiple values. + (line 14) | +* let-values*: Binding to multiple values. + (line 15) | * library-vicinity: Vicinity. (line 39) * light:ambient: Solid Modeling. (line 110) * light:beam: Solid Modeling. (line 144) @@ -17238,42 +18033,42 @@ Procedure and Macro Index * list*: List construction. (line 18) * list->array: Arrays. (line 88) * list->bytes: Byte. (line 40) -* list->integer: Bit-Twiddling. (line 221) +* list->integer: Bit-Twiddling. (line 231) * list-copy: SRFI-1. (line 24) -* list-index: SRFI-1. (line 158) +* list-index: SRFI-1. (line 157) * list-of??: Lists as sets. (line 120) * list-table-definition: Using Databases. (line 167) * list-tabulate: SRFI-1. (line 18) * list-tail: Rev4 Optional Procedures. (line 12) * list=: SRFI-1. (line 48) -* ln: Irrational Real Functions. | - (line 77) | +* ln: Irrational Real Functions. + (line 77) * load->path: Module Manifests. (line 63) * load-ciexyz: Spectra. (line 37) * load-color-dictionary: Color Names. (line 52) * localtime: Posix Time. (line 39) -* log2-binary-factors: Bit-Twiddling. (line 99) +* log2-binary-factors: Bit-Twiddling. (line 109) * logand: Bit-Twiddling. (line 18) -* logbit?: Bit-Twiddling. (line 134) +* logbit?: Bit-Twiddling. (line 144) * logcount: Bit-Twiddling. (line 73) * logior: Bit-Twiddling. (line 27) * lognot: Bit-Twiddling. (line 45) * logtest: Bit-Twiddling. (line 63) * logxor: Bit-Twiddling. (line 36) -* lset-adjoin: SRFI-1. (line 197) -* lset-diff+intersection: SRFI-1. (line 207) -* lset-diff+intersection!: SRFI-1. (line 222) -* lset-difference: SRFI-1. (line 203) -* lset-difference!: SRFI-1. (line 216) -* lset-intersection: SRFI-1. (line 201) -* lset-intersection!: SRFI-1. (line 214) -* lset-union: SRFI-1. (line 199) -* lset-union!: SRFI-1. (line 218) -* lset-xor: SRFI-1. (line 205) -* lset-xor!: SRFI-1. (line 220) -* lset<=: SRFI-1. (line 191) -* lset=: SRFI-1. (line 195) +* lset-adjoin: SRFI-1. (line 196) +* lset-diff+intersection: SRFI-1. (line 206) +* lset-diff+intersection!: SRFI-1. (line 221) +* lset-difference: SRFI-1. (line 202) +* lset-difference!: SRFI-1. (line 215) +* lset-intersection: SRFI-1. (line 200) +* lset-intersection!: SRFI-1. (line 213) +* lset-union: SRFI-1. (line 198) +* lset-union!: SRFI-1. (line 217) +* lset-xor: SRFI-1. (line 204) +* lset-xor!: SRFI-1. (line 219) +* lset<=: SRFI-1. (line 190) +* lset=: SRFI-1. (line 194) * macro:eval <1>: Syntax-Case Macros. (line 14) * macro:eval <2>: Syntactic Closures. (line 14) * macro:eval <3>: Macros That Work. (line 18) @@ -17298,7 +18093,7 @@ Procedure and Macro Index * make-command-server: Command Service. (line 7) * make-directory: Directories. (line 17) * make-dynamic: Dynamic Data Type. (line 9) -* make-exchanger: Miscellany. (line 37) +* make-exchanger: Miscellany. (line 28) * make-generic-method: Object. (line 57) * make-generic-predicate: Object. (line 62) * make-getter on base-table: Base Record Operations. @@ -17317,8 +18112,8 @@ Procedure and Macro Index (line 17) * make-object: Object. (line 46) * make-parameter-list: Parameter lists. (line 23) -* make-polar: Irrational Real Functions. | - (line 94) | +* make-polar: Irrational Real Functions. + (line 94) * make-predicate!: Object. (line 72) * make-prever on base-table: Base ISAM Operations. (line 25) @@ -17330,8 +18125,8 @@ Procedure and Macro Index * make-random-state: Exact Random Numbers. (line 44) * make-record-type: Records. (line 12) -* make-rectangular: Irrational Real Functions. | - (line 93) | +* make-rectangular: Irrational Real Functions. + (line 93) * make-relational-system: Relational Database Objects. (line 11) * make-ruleset: Commutative Rings. (line 82) @@ -17346,7 +18141,7 @@ Procedure and Macro Index (line 51) * make-wt-tree-type: Construction of Weight-Balanced Trees. (line 19) -* map!: SRFI-1. (line 122) +* map!: SRFI-1. (line 121) * map-elts: Collections. (line 40) * map-key on base-table: Aggregate Base Operations. (line 22) @@ -17355,36 +18150,38 @@ Procedure and Macro Index * matfile:read: MAT-File Format. (line 19) * matrix->array: Matrix Algebra. (line 15) * matrix->lists: Matrix Algebra. (line 12) -* matrix:inverse: Matrix Algebra. (line 33) -* matrix:product: Matrix Algebra. (line 30) +* matrix:difference: Matrix Algebra. (line 33) +* matrix:inverse: Matrix Algebra. (line 45) +* matrix:product: Matrix Algebra. (line 36) +* matrix:sum: Matrix Algebra. (line 30) * mdbm:report: Using Databases. (line 94) -* member: SRFI-1. (line 160) +* member: SRFI-1. (line 159) * member-if: Lists as sets. (line 62) -* merge: Sorting. (line 126) | -* merge!: Sorting. (line 131) | +* merge: Sorting. (line 62) +* merge!: Sorting. (line 67) * mktime: Posix Time. (line 54) -* mod: Irrational Real Functions. | - (line 52) | -* modular:*: Modular Arithmetic. (line 61) | -* modular:+: Modular Arithmetic. (line 55) | -* modular:-: Modular Arithmetic. (line 58) | -* modular:characteristic: Modular Arithmetic. (line 19) | -* modular:expt: Modular Arithmetic. (line 67) | -* modular:invert: Modular Arithmetic. (line 48) | -* modular:invertable?: Modular Arithmetic. (line 44) | -* modular:negate: Modular Arithmetic. (line 52) | -* modular:normalize: Modular Arithmetic. (line 23) | -* mrna<-cdna: NCBI-DNA. (line 15) +* mod: Irrational Real Functions. + (line 52) +* modular:*: Modular Arithmetic. (line 61) +* modular:+: Modular Arithmetic. (line 55) +* modular:-: Modular Arithmetic. (line 58) +* modular:characteristic: Modular Arithmetic. (line 19) +* modular:expt: Modular Arithmetic. (line 67) +* modular:invert: Modular Arithmetic. (line 48) +* modular:invertable?: Modular Arithmetic. (line 44) +* modular:negate: Modular Arithmetic. (line 52) +* modular:normalize: Modular Arithmetic. (line 23) +* mrna<-cdna: NCBI-DNA. (line 17) * must-be-first: Batch. (line 128) * must-be-last: Batch. (line 133) * natural->peano-coordinates: Peano Space-Filling Curve. (line 9) -* ncbi:read-dna-sequence: NCBI-DNA. (line 7) -* ncbi:read-file: NCBI-DNA. (line 11) +* ncbi:read-dna-sequence: NCBI-DNA. (line 9) +* ncbi:read-file: NCBI-DNA. (line 13) * nconc: Destructive list operations. (line 10) -* newton:find-integer-root: Root Finding. (line 13) -* newton:find-root: Root Finding. (line 30) +* newton:find-integer-root: Root Finding. (line 9) +* newton:find-root: Root Finding. (line 26) * ninth: SRFI-1. (line 65) * not-pair?: SRFI-1. (line 46) * notany: Lists as sets. (line 105) @@ -17408,7 +18205,7 @@ Procedure and Macro Index * open-database on relational-system: Relational Database Objects. (line 45) * open-database!: Using Databases. (line 68) -* open-file <1>: Byte. (line 67) | +* open-file <1>: Byte. (line 67) * open-file: Input/Output. (line 18) * open-table: Using Databases. (line 107) * open-table on base-table: Base Tables. (line 16) @@ -17420,20 +18217,20 @@ Procedure and Macro Index (line 10) * os->batch-dialect: Batch. (line 138) * outline-rect: Rectangles. (line 33) -* output-port-height: Input/Output. (line 87) -* output-port-width: Input/Output. (line 81) +* output-port-height: Input/Output. (line 100) +* output-port-width: Input/Output. (line 94) * overcast-sky-color-xyy: Daylight. (line 74) -* p<-cdna: NCBI-DNA. (line 27) +* p<-cdna: NCBI-DNA. (line 29) * pad-range: Column Ranges. (line 13) * pair-fold: SRFI-1. (line 115) * pair-fold-right: SRFI-1. (line 117) -* pair-for-each: SRFI-1. (line 124) +* pair-for-each: SRFI-1. (line 123) * parameter-list->arglist: Parameter lists. (line 86) * parameter-list-expand: Parameter lists. (line 41) * parameter-list-ref: Parameter lists. (line 26) * parse-ftp-address: URI. (line 117) -* partition: SRFI-1. (line 133) -* partition!: SRFI-1. (line 137) +* partition: SRFI-1. (line 132) +* partition!: SRFI-1. (line 136) * partition-page: Rectangles. (line 16) * path->uri: URI. (line 95) * pathname->vicinity: Vicinity. (line 25) @@ -17502,7 +18299,7 @@ Procedure and Macro Index * program-vicinity: Vicinity. (line 30) * project-table on relational-database: Database Operations. (line 76) * proper-list?: SRFI-1. (line 38) -* protein<-cdna: NCBI-DNA. (line 23) +* protein<-cdna: NCBI-DNA. (line 25) * provide: Feature. (line 58) * provided?: Feature. (line 30) * qp: Quick Print. (line 19) @@ -17514,8 +18311,8 @@ Procedure and Macro Index * queue-push!: Queues. (line 22) * queue-rear: Queues. (line 42) * queue?: Queues. (line 16) -* quo: Irrational Real Functions. | - (line 50) | +* quo: Irrational Real Functions. + (line 50) * random: Exact Random Numbers. (line 9) * random:exp: Inexact Random Numbers. @@ -17531,36 +18328,36 @@ Procedure and Macro Index * random:uniform: Inexact Random Numbers. (line 9) * rationalize: Rationalize. (line 9) -* read-byte: Byte. (line 79) | -* read-bytes: Byte. (line 97) | +* read-byte: Byte. (line 79) +* read-bytes: Byte. (line 97) * read-cie-illuminant: Spectra. (line 43) * read-command: Command Line. (line 9) * read-line: Line I/O. (line 9) * read-line!: Line I/O. (line 18) * read-normalized-illuminant: Spectra. (line 54) * read-options-file: Command Line. (line 65) -* real-acos: Irrational Real Functions. | - (line 20) | -* real-asin: Irrational Real Functions. | - (line 19) | -* real-atan: Irrational Real Functions. | - (line 21) | -* real-cos: Irrational Real Functions. | - (line 17) | -* real-exp: Irrational Real Functions. | - (line 13) | -* real-expt: Irrational Real Functions. | - (line 37) | -* real-ln: Irrational Real Functions. | - (line 14) | -* real-log: Irrational Real Functions. | - (line 15) | -* real-sin: Irrational Real Functions. | - (line 16) | -* real-sqrt: Irrational Real Functions. | - (line 32) | -* real-tan: Irrational Real Functions. | - (line 18) | +* real-acos: Irrational Real Functions. + (line 20) +* real-asin: Irrational Real Functions. + (line 19) +* real-atan: Irrational Real Functions. + (line 21) +* real-cos: Irrational Real Functions. + (line 17) +* real-exp: Irrational Real Functions. + (line 13) +* real-expt: Irrational Real Functions. + (line 37) +* real-ln: Irrational Real Functions. + (line 14) +* real-log: Irrational Real Functions. + (line 15) +* real-sin: Irrational Real Functions. + (line 16) +* real-sqrt: Irrational Real Functions. + (line 32) +* real-tan: Irrational Real Functions. + (line 18) * receive: Binding to multiple values. (line 9) * record-accessor: Records. (line 41) @@ -17571,12 +18368,11 @@ Procedure and Macro Index * reduce <2>: Lists as sequences. (line 19) * reduce: Collections. (line 71) * reduce-init: Lists as sequences. (line 61) -* reduce-right: SRFI-1. (line 120) -* rem: Irrational Real Functions. | - (line 51) | -* remove <1>: SRFI-1. (line 135) +* rem: Irrational Real Functions. + (line 51) +* remove <1>: SRFI-1. (line 134) * remove: Lists as sets. (line 153) -* remove!: SRFI-1. (line 139) +* remove!: SRFI-1. (line 138) * remove-duplicates: Lists as sets. (line 199) * remove-if: Lists as sets. (line 166) * remove-if-not: Lists as sets. (line 177) @@ -17592,10 +18388,10 @@ Procedure and Macro Index * resene: Color Names. (line 129) * restrict-table on relational-database: Database Operations. (line 77) * reverse!: SRFI-1. (line 93) -* reverse-bit-field: Bit-Twiddling. (line 206) +* reverse-bit-field: Bit-Twiddling. (line 216) * RGB709->CIEXYZ: Color Conversions. (line 30) * rgb709->color: Color Spaces. (line 46) -* rotate-bit-field: Bit-Twiddling. (line 192) +* rotate-bit-field: Bit-Twiddling. (line 202) * row:delete on relational-table: Single Row Operations. (line 50) * row:delete* on relational-table: Multi-Row Operations. @@ -17633,8 +18429,8 @@ Procedure and Macro Index * scene:viewpoints: Solid Modeling. (line 88) * scheme-report-environment: Eval. (line 28) * schmooz: Schmooz. (line 16) -* secant:find-bracketed-root: Root Finding. (line 71) -* secant:find-root: Root Finding. (line 70) +* secant:find-bracketed-root: Root Finding. (line 67) +* secant:find-root: Root Finding. (line 66) * second: SRFI-1. (line 55) * seed->random-state: Exact Random Numbers. (line 35) @@ -17646,19 +18442,19 @@ Procedure and Macro Index * set-linedash: Graphics Context. (line 39) * set-linewidth: Graphics Context. (line 34) * set-margin-templates: Legending. (line 27) -* Setter: Collections. (line 107) +* Setter: Collections. (line 108) * setter: Setters. (line 22) * setup-plot: Column Ranges. (line 22) * seventh: SRFI-1. (line 63) -* sft: Discrete Fourier Transform. | - (line 15) | -* sft-1: Discrete Fourier Transform. | - (line 21) | +* sft: Discrete Fourier Transform. + (line 15) +* sft-1: Discrete Fourier Transform. + (line 21) * si:conversion-factor: Metric Units. (line 160) * singleton-wt-tree: Construction of Weight-Balanced Trees. (line 58) * sixth: SRFI-1. (line 62) -* size <1>: Collections. (line 104) +* size <1>: Collections. (line 105) * size: Yasos interface. (line 41) * sky-color-xyy: Daylight. (line 85) * slib:error: System. (line 45) @@ -17677,38 +18473,38 @@ Procedure and Macro Index * solar-declination: Daylight. (line 21) * solar-hour: Daylight. (line 14) * solar-polar: Daylight. (line 23) -* solid:arrow: Solid Modeling. (line 413) | -* solid:basrelief: Solid Modeling. (line 285) | +* solid:arrow: Solid Modeling. (line 413) +* solid:basrelief: Solid Modeling. (line 285) * solid:box: Solid Modeling. (line 206) -* solid:center-array-of: Solid Modeling. (line 404) | -* solid:center-pile-of: Solid Modeling. (line 409) | -* solid:center-row-of: Solid Modeling. (line 400) | -* solid:color: Solid Modeling. (line 327) | -* solid:cone: Solid Modeling. (line 235) | -* solid:cylinder: Solid Modeling. (line 220) | -* solid:disk: Solid Modeling. (line 228) | -* solid:ellipsoid: Solid Modeling. (line 253) | -* solid:font: Solid Modeling. (line 365) | -* solid:lumber: Solid Modeling. (line 215) | -* solid:polyline: Solid Modeling. (line 262) | -* solid:prism: Solid Modeling. (line 276) | -* solid:pyramid: Solid Modeling. (line 241) | -* solid:rotation: Solid Modeling. (line 432) | -* solid:scale: Solid Modeling. (line 428) | -* solid:sphere: Solid Modeling. (line 247) | -* solid:text: Solid Modeling. (line 308) | -* solid:texture: Solid Modeling. (line 344) | -* solid:translation: Solid Modeling. (line 423) | +* solid:center-array-of: Solid Modeling. (line 404) +* solid:center-pile-of: Solid Modeling. (line 409) +* solid:center-row-of: Solid Modeling. (line 400) +* solid:color: Solid Modeling. (line 327) +* solid:cone: Solid Modeling. (line 235) +* solid:cylinder: Solid Modeling. (line 220) +* solid:disk: Solid Modeling. (line 228) +* solid:ellipsoid: Solid Modeling. (line 253) +* solid:font: Solid Modeling. (line 365) +* solid:lumber: Solid Modeling. (line 215) +* solid:polyline: Solid Modeling. (line 262) +* solid:prism: Solid Modeling. (line 276) +* solid:pyramid: Solid Modeling. (line 241) +* solid:rotation: Solid Modeling. (line 432) +* solid:scale: Solid Modeling. (line 428) +* solid:sphere: Solid Modeling. (line 247) +* solid:text: Solid Modeling. (line 308) +* solid:texture: Solid Modeling. (line 344) +* solid:translation: Solid Modeling. (line 423) * solidify-database: Using Databases. (line 86) * solidify-database on relational-database: Database Operations. (line 42) * some: Lists as sets. (line 73) -* sort: Sorting. (line 138) | -* sort!: Sorting. (line 148) | -* sorted?: Sorting. (line 116) | +* sort: Sorting. (line 72) +* sort!: Sorting. (line 82) +* sorted?: Sorting. (line 52) * soundex: Soundex. (line 9) -* span: SRFI-1. (line 148) -* span!: SRFI-1. (line 150) +* span: SRFI-1. (line 147) +* span!: SRFI-1. (line 149) * spectrum->chromaticity: Spectra. (line 111) * spectrum->XYZ: Spectra. (line 85) * split-at: SRFI-1. (line 80) @@ -17719,6 +18515,35 @@ Procedure and Macro Index * srgb->color: Color Spaces. (line 195) * sRGB->e-sRGB: Color Conversions. (line 59) * sRGB->xRGB: Color Conversions. (line 53) +* ssax:assert-current-char: Parsing XML. (line 52) +* ssax:assert-token: Parsing XML. (line 630) +* ssax:complete-start-tag: Parsing XML. (line 517) +* ssax:handle-parsed-entity: Parsing XML. (line 436) +* ssax:init-buffer: Parsing XML. (line 64) +* ssax:make-elem-parser: Parsing XML. (line 667) +* ssax:make-parser: Parsing XML. (line 714) +* ssax:make-pi-parser: Parsing XML. (line 647) +* ssax:next-token: Parsing XML. (line 69) +* ssax:next-token-of: Parsing XML. (line 83) +* ssax:read-attributes: Parsing XML. (line 460) +* ssax:read-cdata-body: Parsing XML. (line 385) +* ssax:read-char-data: Parsing XML. (line 589) +* ssax:read-char-ref: Parsing XML. (line 415) +* ssax:read-external-id: Parsing XML. (line 553) +* ssax:read-markup-token: Parsing XML. (line 328) +* ssax:read-ncname: Parsing XML. (line 293) +* ssax:read-pi-body-as-string: Parsing XML. (line 373) +* ssax:read-qname: Parsing XML. (line 319) +* ssax:read-string: Parsing XML. (line 110) +* ssax:resolve-name: Parsing XML. (line 504) +* ssax:reverse-collect-str: Parsing XML. (line 18) +* ssax:reverse-collect-str-drop-ws: Parsing XML. (line 24) +* ssax:scan-misc: Parsing XML. (line 577) +* ssax:skip-internal-dtd: Parsing XML. (line 380) +* ssax:skip-pi: Parsing XML. (line 370) +* ssax:skip-s: Parsing XML. (line 285) +* ssax:skip-while: Parsing XML. (line 58) +* ssax:xml->sxml: Parsing XML. (line 803) * sscanf: Standard Formatted Input. (line 15) * stack: Trace. (line 49) @@ -17746,16 +18571,16 @@ Procedure and Macro Index * StudlyCapsExpand: String-Case. (line 29) * sub-vicinity: Vicinity. (line 73) * subarray: Subarrays. (line 9) -* subbytes: Byte. (line 50) | -* subbytes-read!: Byte. (line 122) | -* subbytes-write: Byte. (line 131) | +* subbytes: Byte. (line 50) +* subbytes-read!: Byte. (line 122) +* subbytes-write: Byte. (line 131) * subset?: Lists as sets. (line 52) * subst: Tree Operations. (line 11) * substq: Tree Operations. (line 12) * substring-ci?: String Search. (line 20) * substring-fill!: Rev2 Procedures. (line 30) * substring-move-left!: Rev2 Procedures. (line 13) -* substring-move-right!: Rev2 Procedures. (line 14) | +* substring-move-right!: Rev2 Procedures. (line 14) * substring?: String Search. (line 19) * substv: Tree Operations. (line 13) * sunlight-chromaticity: Daylight. (line 65) @@ -17763,7 +18588,7 @@ Procedure and Macro Index * supported-key-type? on base-table: Base Field Types. (line 13) * supported-type? on base-table: Base Field Types. (line 7) * symbol-append: String-Case. (line 23) -* symmetric:modulus: Modular Arithmetic. (line 13) | +* symmetric:modulus: Modular Arithmetic. (line 13) * sync-base on base-table: The Base. (line 53) * sync-database: Using Databases. (line 82) * sync-database on relational-database: Database Operations. (line 37) @@ -17863,8 +18688,8 @@ Procedure and Macro Index * world:info: Solid Modeling. (line 24) * wrap-command-interface: Database Extension. (line 7) * write-base on base-table: The Base. (line 43) -* write-byte: Byte. (line 72) | -* write-bytes: Byte. (line 108) | +* write-byte: Byte. (line 72) +* write-bytes: Byte. (line 108) * write-database: Using Databases. (line 79) * write-database on relational-database: Database Operations. (line 26) * write-line: Line I/O. (line 29) @@ -17936,7 +18761,7 @@ Procedure and Macro Index Variable Index ************** - | + * Menu: @@ -17982,19 +18807,19 @@ Variable Index * graph:dimensions: Legacy Plotting. (line 7) * graphrect: Rectangles. (line 26) * leftedge: Legending. (line 22) -* modulo: Irrational Integer Functions. | - (line 29) | +* modulo: Irrational Integer Functions. + (line 29) * most-positive-fixnum: Configuration. (line 15) -* nil: Miscellany. (line 70) +* nil: Miscellany. (line 61) * number-wt-type: Construction of Weight-Balanced Trees. (line 39) * plotrect: Rectangles. (line 22) * prime:prngs: Prime Numbers. (line 9) * prime:trials: Prime Numbers. (line 24) -* quotient: Irrational Integer Functions. | - (line 27) | -* remainder: Irrational Integer Functions. | - (line 28) | +* quotient: Irrational Integer Functions. + (line 27) +* remainder: Irrational Integer Functions. + (line 28) * rightedge: Legending. (line 23) * slib:form-feed: Configuration. (line 29) * slib:tab: Configuration. (line 26) @@ -18005,8 +18830,8 @@ Variable Index * stdout: Standard Formatted I/O. (line 22) * string-wt-type: Construction of Weight-Balanced Trees. - (line 45) | -* t: Miscellany. (line 67) + (line 45) +* t: Miscellany. (line 58) * tok:decimal-digits: Token definition. (line 41) * tok:lower-case: Token definition. (line 48) * tok:upper-case: Token definition. (line 44) @@ -18034,19 +18859,21 @@ Concept and Feature Index * and-let*: Guarded LET* special form. (line 6) * ange-ftp: URI. (line 118) -* appearance: Solid Modeling. (line 334) | +* appearance: Solid Modeling. (line 334) * array: Arrays. (line 6) * array-for-each: Array Mapping. (line 6) * association function: Association Lists. (line 17) +* Attribute: Parsing XML. (line 460) * attribute-value: HTML. (line 10) +* AttValue: Parsing XML. (line 472) * Auto-sharing: Using Databases. (line 25) * balanced binary trees: Weight-Balanced Trees. (line 8) * base: URI. (line 39) * base-table: Base Table. (line 6) * batch: Batch. (line 6) -* bignum: Feature. (line 13) | -* binary: Byte. (line 66) | +* bignum: Feature. (line 13) +* binary: Byte. (line 66) * binary trees: Weight-Balanced Trees. (line 8) * binary trees, as discrete maps: Weight-Balanced Trees. @@ -18085,11 +18912,11 @@ Concept and Feature Index * commentfix: Rule Types. (line 35) * common-list-functions <1>: Common List Functions. (line 6) -* common-list-functions: Collections. (line 74) +* common-list-functions: Collections. (line 81) * commutative-ring: Commutative Rings. (line 11) * compiled: Library Catalogs. (line 21) * compiling: Module Conventions. (line 11) -* complex: Feature. (line 13) | +* complex: Feature. (line 13) * Coordinated Universal Time: Posix Time. (line 13) * copyright: Copyrights. (line 6) * crc: Cyclic Checksum. (line 6) @@ -18111,12 +18938,12 @@ Concept and Feature Index * delim: Rule Types. (line 47) * dequeues: Queues. (line 10) * determinant: Matrix Algebra. (line 6) -* dft, Fourier-transform: Discrete Fourier Transform. | - (line 6) | +* dft, Fourier-transform: Discrete Fourier Transform. + (line 6) * diff: Sequence Comparison. (line 6) * directory: Directories. (line 6) -* Discrete Fourier Transform: Discrete Fourier Transform. | - (line 18) | +* Discrete Fourier Transform: Discrete Fourier Transform. + (line 18) * discrete maps, using binary trees: Weight-Balanced Trees. (line 52) * DrScheme: Installation. (line 103) @@ -18129,16 +18956,17 @@ Concept and Feature Index * EUC: Extra-SLIB Packages. (line 53) * Euclidean Domain: Commutative Rings. (line 67) * eval: Eval. (line 6) -* exchanger: Miscellany. (line 31) +* exchanger: Miscellany. (line 22) * factor: Prime Numbers. (line 6) -* FDL, GNU Free Documentation License: Copying This Manual. (line 6) | -* feature <1>: About this manual. (line 18) | +* FDL, GNU Free Documentation License: Copying This Manual. (line 6) +* feature <1>: About this manual. (line 18) * feature <2>: Require. (line 18) -* feature: Feature. (line 6) | +* feature: Feature. (line 6) * File Transfer Protocol: URI. (line 113) * file-lock: Transactions. (line 32) * filename: Filenames. (line 6) * fluid-let: Fluid-Let. (line 6) +* fold: Parsing XML. (line 400) * form: HTML. (line 63) * format: Format. (line 6) * Gambit-C: Installation. (line 116) @@ -18174,8 +19002,8 @@ Concept and Feature Index * ICC Profile: Color Spaces. (line 191) * implcat: Catalog Vicinities. (line 23) * indexed-sequential-access-method: Byte/Number Conversions. - (line 127) -* inexact: Feature. (line 13) | + (line 128) | +* inexact: Feature. (line 13) * infix: Rule Types. (line 19) * Info: Top-level Variable References. (line 32) @@ -18195,6 +19023,8 @@ Concept and Feature Index (line 88) * Left Denotation, led: Nud and Led Definition. (line 13) +* let-values: Binding to multiple values. + (line 11) | * Lightness: Color Spaces. (line 71) * line-i: Line I/O. (line 6) * list-processing library: SRFI-1. (line 8) @@ -18214,10 +19044,10 @@ Concept and Feature Index * match-keys: Match-Keys. (line 6) * matchfix: Rule Types. (line 39) * matfile: MAT-File Format. (line 6) -* math-integer: Irrational Integer Functions. | - (line 6) | -* math-real: Irrational Real Functions. | - (line 6) | +* math-integer: Irrational Integer Functions. + (line 6) +* math-real: Irrational Real Functions. + (line 6) * matlab: MAT-File Format. (line 6) * metric-units: Metric Units. (line 6) * minimize: Minimizing. (line 6) @@ -18233,6 +19063,7 @@ Concept and Feature Index (line 6) * MzScheme: Installation. (line 104) * nary: Rule Types. (line 23) +* ncbi-dma: NCBI-DNA. (line 6) * new-catalog: Catalog Creation. (line 48) * nofix: Rule Types. (line 11) * null: HTML Tables. (line 92) @@ -18301,10 +19132,10 @@ Concept and Feature Index * random-inexact: Inexact Random Numbers. (line 6) * range: Column Ranges. (line 6) -* rational: Feature. (line 13) | +* rational: Feature. (line 13) * rationalize: Rationalize. (line 6) * read-command: Command Line. (line 6) -* real: Feature. (line 13) | +* real: Feature. (line 13) * receive: Binding to multiple values. (line 6) * record: Records. (line 6) @@ -18362,22 +19193,29 @@ Concept and Feature Index * srfi: SRFI. (line 6) * SRFI-1: SRFI-1. (line 8) * srfi-1: SRFI-1. (line 6) -* srfi-2 <1>: SRFI. (line 33) | +* srfi-11 <1>: SRFI. (line 37) +* srfi-11: Binding to multiple values. + (line 11) | +* srfi-2 <1>: SRFI. (line 33) * srfi-2: Guarded LET* special form. (line 6) -* srfi-23: SRFI. (line 37) | -* srfi-47: SRFI. (line 39) | -* srfi-59: SRFI. (line 43) | -* srfi-60 <1>: SRFI. (line 45) | -* srfi-60: Bit-Twiddling. (line 6) | -* srfi-61 <1>: SRFI. (line 47) | +* srfi-23: SRFI. (line 39) +* srfi-28: SRFI. (line 41) +* srfi-47: SRFI. (line 43) +* srfi-59: SRFI. (line 45) +* srfi-60 <1>: SRFI. (line 47) +* srfi-60: Bit-Twiddling. (line 6) +* srfi-61 <1>: SRFI. (line 49) * srfi-61: Guarded COND Clause. (line 6) -* srfi-63: SRFI. (line 41) | -* srfi-8 <1>: SRFI. (line 33) | +* srfi-63: SRFI. (line 51) +* srfi-8 <1>: SRFI. (line 33) * srfi-8: Binding to multiple values. (line 6) -* srfi-9 <1>: SRFI. (line 35) | +* srfi-9 <1>: SRFI. (line 35) * srfi-9: Define-Record-Type. (line 6) +* srfi-94: SRFI. (line 53) +* srfi-95 <1>: SRFI. (line 56) +* srfi-95: Sorting. (line 6) * sRGB: Color Spaces. (line 189) * stdio: Standard Formatted I/O. (line 14) @@ -18387,7 +19225,7 @@ Concept and Feature Index * subarray: Subarrays. (line 6) * sun: Daylight. (line 6) * sunlight: Daylight. (line 6) -* symmetric: Modular Arithmetic. (line 38) | +* symmetric: Modular Arithmetic. (line 38) * syntactic-closures <1>: Syntactic Closures. (line 6) * syntactic-closures: Library Catalogs. (line 46) * syntax tree: Precedence Parsing Overview. @@ -18443,242 +19281,243 @@ Concept and Feature Index Tag Table: -Node: Top1638 -Node: The Library System3412 -Node: Feature4269 -Ref: Feature-Footnote-15275 -Node: Require6848 -Node: Library Catalogs9261 -Node: Catalog Creation10692 -Node: Catalog Vicinities13067 -Node: Compiling Scheme15827 -Node: Module Conventions16477 -Ref: Module Conventions-Footnote-116707 -Node: Module Manifests18148 -Node: Module Semantics23620 -Node: Top-level Variable References25238 -Ref: Top-level Variable References-Footnote-126122 -Node: Module Analysis27638 -Node: Universal SLIB Procedures28743 -Node: Vicinity29358 -Node: Configuration33213 -Node: Input/Output36271 -Node: System39676 -Node: Miscellany42827 -Node: Scheme Syntax Extension Packages44971 -Node: Defmacro45909 -Node: R4RS Macros47885 -Node: Macro by Example49149 -Node: Macros That Work52047 -Node: Syntactic Closures58041 -Node: Syntax-Case Macros75569 -Node: Define-Structure79500 -Node: Define-Record-Type81476 -Node: Fluid-Let82109 -Node: Binding to multiple values83079 -Node: Guarded LET* special form83441 -Node: Guarded COND Clause83793 -Node: Yasos85578 -Node: Yasos terms86390 -Node: Yasos interface87428 -Node: Setters89524 -Node: Yasos examples92183 -Node: Textual Conversion Packages95141 -Node: Precedence Parsing95942 -Node: Precedence Parsing Overview96627 -Ref: Precedence Parsing Overview-Footnote-196693 -Node: Rule Types98343 -Node: Ruleset Definition and Use99798 -Node: Token definition102195 -Node: Nud and Led Definition104803 -Node: Grammar Rule Definition107264 -Node: Format114860 -Node: Format Interface115115 -Node: Format Specification116865 -Node: Standard Formatted I/O127810 -Node: Standard Formatted Output128398 -Node: Standard Formatted Input137856 -Node: Programs and Arguments144533 -Node: Getopt145041 -Node: Command Line151588 -Node: Parameter lists154786 -Node: Getopt Parameter lists158692 -Node: Filenames161933 -Node: Batch165843 -Node: HTML173667 -Node: HTML Tables180109 -Node: HTTP and CGI186641 -Node: Parsing HTML191190 -Node: URI193697 -Node: Printing Scheme198369 -Node: Generic-Write198688 -Node: Object-To-String200104 -Node: Pretty-Print200523 -Node: Time and Date203508 -Node: Time Zone204565 -Node: Posix Time209307 -Node: Common-Lisp Time211475 -Node: Time Infrastructure213101 -Node: NCBI-DNA213452 -Node: Schmooz214800 -Node: Mathematical Packages219036 -Node: Bit-Twiddling219931 -Node: Modular Arithmetic228060 -Node: Irrational Integer Functions230919 -Node: Irrational Real Functions233383 -Node: Prime Numbers242242 -Node: Random Numbers244087 -Node: Exact Random Numbers245069 -Node: Inexact Random Numbers247394 -Node: Discrete Fourier Transform249279 -Node: Cyclic Checksum253463 -Node: Graphing261232 -Node: Character Plotting261494 -Node: PostScript Graphing267061 -Node: Column Ranges268894 -Node: Drawing the Graph270431 -Node: Graphics Context271580 -Node: Rectangles273454 -Node: Legending274962 -Node: Legacy Plotting277350 -Node: Example Graph278418 -Node: Solid Modeling282843 -Node: Color303002 -Node: Color Data-Type303976 -Ref: Color Data-Type-Footnote-1295346 -Node: Color Spaces308705 -Ref: Color Spaces-Footnote-1305347 -Node: Spectra318744 -Node: Color Difference Metrics327639 -Node: Color Conversions330417 -Node: Color Names332671 -Node: Daylight339729 -Node: Root Finding344546 -Node: Minimizing348629 -Ref: Minimizing-Footnote-1336878 -Node: The Limit350735 -Node: Commutative Rings355670 -Node: Matrix Algebra367236 -Node: Database Packages368442 -Node: Relational Database368725 -Node: Using Databases369592 -Node: Table Operations376098 -Node: Single Row Operations377309 -Node: Match-Keys379570 -Node: Multi-Row Operations381649 -Node: Indexed Sequential Access Methods384040 -Node: Sequential Index Operations385048 -Node: Table Administration387404 -Node: Database Interpolation388271 -Node: Embedded Commands389373 -Node: Database Extension390947 -Node: Command Intrinsics393072 -Node: Define-tables Example394634 -Node: The *commands* Table396284 -Node: Command Service398562 -Node: Command Example400524 -Node: Database Macros405077 -Node: Within-database405962 -Node: Within-database Example408869 -Node: Database Browser410656 -Node: Relational Infrastructure411732 -Node: Base Table412036 -Node: The Base414544 -Node: Base Tables417662 -Node: Base Field Types419138 -Node: Composite Keys419921 -Node: Base Record Operations421975 -Node: Match Keys423703 -Node: Aggregate Base Operations424584 -Node: Base ISAM Operations425649 -Node: Catalog Representation426967 -Node: Relational Database Objects429636 -Node: Database Operations432280 -Node: Weight-Balanced Trees435989 -Node: Construction of Weight-Balanced Trees439875 -Node: Basic Operations on Weight-Balanced Trees443341 -Node: Advanced Operations on Weight-Balanced Trees446208 -Node: Indexing Operations on Weight-Balanced Trees452249 -Node: Other Packages456090 -Node: Data Structures456619 -Node: Arrays457460 -Node: Subarrays466147 -Node: Array Mapping468676 -Node: Array Interpolation471086 -Node: Association Lists472350 -Node: Byte474626 -Node: Byte/Number Conversions480872 -Node: MAT-File Format488342 -Node: Portable Image Files489621 -Node: Collections491251 -Node: Dynamic Data Type497383 -Node: Hash Tables498662 -Node: Object501250 -Node: Priority Queues509533 -Node: Queues510388 -Node: Records511633 -Node: Sorting and Searching515143 -Node: Common List Functions515836 -Node: List construction516293 -Node: Lists as sets518008 -Node: Lists as sequences524546 -Node: Destructive list operations529773 -Node: Non-List functions532451 -Node: Tree Operations533540 -Node: Chapter Ordering535233 -Node: Sorting536880 -Node: Topological Sort544651 -Node: Hashing546359 -Node: Space-Filling Curves547376 -Node: Hilbert Space-Filling Curve547680 -Node: Peano Space-Filling Curve551570 -Node: Sierpinski Curve552676 -Node: Soundex555140 -Node: String Search556738 -Node: Sequence Comparison559311 -Node: Procedures562441 -Node: Type Coercion562969 -Node: String-Case563401 -Node: String Ports565228 -Node: Line I/O566000 -Node: Multi-Processing568049 -Node: Metric Units569167 -Node: Standards Support577446 -Node: RnRS578242 -Node: With-File579465 -Node: Transcripts579741 -Node: Rev2 Procedures580075 -Node: Rev4 Optional Procedures581808 -Node: Multi-argument / and -582277 -Node: Multi-argument Apply582687 -Node: Rationalize583024 -Node: Promises584186 -Node: Dynamic-Wind584632 -Node: Eval585900 -Node: Values589245 -Node: SRFI590060 -Node: SRFI-1591550 -Node: Session Support596110 -Node: Repl596684 -Node: Quick Print597980 -Node: Debug599286 -Node: Breakpoints600193 -Node: Trace602235 -Node: System Interface605461 -Node: Directories606032 -Node: Transactions607525 -Node: CVS613036 -Node: Extra-SLIB Packages614203 -Node: About SLIB616512 -Node: Installation617485 -Node: The SLIB script623377 -Node: Porting623840 -Ref: Porting-Footnote-1608048 -Node: Coding Guidelines625404 -Node: Copyrights627818 -Node: About this manual631187 -Node: Copying This Manual632138 -Node: How to use this License for your documents664205 -Node: Index666885 +Node: Top889 +Node: The Library System2001 +Node: Feature2668 +Ref: Feature-Footnote-14767 +Node: Require5277 +Node: Library Catalogs7690 +Node: Catalog Creation9121 +Node: Catalog Vicinities11496 +Node: Compiling Scheme14256 +Node: Module Conventions14906 +Ref: Module Conventions-Footnote-116211 +Node: Module Manifests16577 +Node: Module Semantics22049 +Node: Top-level Variable References23667 +Ref: Top-level Variable References-Footnote-125626 +Node: Module Analysis26067 +Node: Universal SLIB Procedures27172 +Node: Vicinity27787 +Node: Configuration31642 +Node: Input/Output34614 +Node: System39059 +Node: Miscellany42321 +Node: Scheme Syntax Extension Packages44303 +Node: Defmacro45241 +Node: R4RS Macros47217 +Node: Macro by Example48481 +Node: Macros That Work51379 +Node: Syntactic Closures57373 +Node: Syntax-Case Macros74901 +Node: Define-Structure78832 +Node: Define-Record-Type80808 +Node: Fluid-Let81441 +Node: Binding to multiple values82411 +Node: Guarded LET* special form83253 +Node: Guarded COND Clause83605 +Node: Yasos85390 +Node: Yasos terms86202 +Node: Yasos interface87240 +Node: Setters89336 +Node: Yasos examples91995 +Node: Textual Conversion Packages94953 +Node: Precedence Parsing95806 +Node: Precedence Parsing Overview96491 +Ref: Precedence Parsing Overview-Footnote-196872 +Node: Rule Types98121 +Node: Ruleset Definition and Use99576 +Node: Token definition101959 +Node: Nud and Led Definition104567 +Node: Grammar Rule Definition107028 +Node: Format114624 +Node: Format Interface114938 +Node: Format Specification116688 +Node: Standard Formatted I/O127633 +Node: Standard Formatted Output128221 +Node: Standard Formatted Input137679 +Node: Programs and Arguments144356 +Node: Getopt144864 +Node: Command Line151411 +Node: Parameter lists154609 +Node: Getopt Parameter lists158515 +Node: Filenames161756 +Node: Batch165666 +Node: HTML173574 +Node: HTML Tables180016 +Node: HTTP and CGI186548 +Node: Parsing HTML191097 +Node: URI193604 +Node: Parsing XML198351 +Node: Printing Scheme263178 +Node: Generic-Write263643 +Node: Object-To-String265118 +Node: Pretty-Print265593 +Node: Time and Date268638 +Node: Time Zone269756 +Node: Posix Time274561 +Node: Common-Lisp Time276791 +Node: Time Infrastructure278473 +Node: NCBI-DNA278877 +Node: Schmooz280451 +Node: Mathematical Packages284754 +Node: Bit-Twiddling285509 +Node: Modular Arithmetic294513 +Node: Irrational Integer Functions296944 +Node: Irrational Real Functions297973 +Node: Prime Numbers301577 +Node: Random Numbers303281 +Node: Exact Random Numbers304123 +Node: Inexact Random Numbers306395 +Node: Discrete Fourier Transform308229 +Node: Cyclic Checksum310664 +Node: Graphing318294 +Node: Character Plotting318489 +Node: PostScript Graphing324001 +Node: Column Ranges325780 +Node: Drawing the Graph327259 +Node: Graphics Context328354 +Node: Rectangles330173 +Node: Legending331620 +Node: Legacy Plotting333849 +Node: Example Graph334861 +Node: Solid Modeling339228 +Node: Color358737 +Node: Color Data-Type359573 +Ref: Color Data-Type-Footnote-1328920 +Node: Color Spaces363964 +Ref: Color Spaces-Footnote-1338921 +Node: Spectra373883 +Node: Color Difference Metrics382648 +Node: Color Conversions385330 +Node: Color Names387474 +Node: Daylight394410 +Node: Root Finding399099 +Node: Minimizing403058 +Ref: Minimizing-Footnote-1370311 +Node: The Limit405100 +Node: Commutative Rings409970 +Node: Matrix Algebra421381 +Node: Database Packages423487 +Node: Relational Database423770 +Node: Using Databases424637 +Node: Table Operations431143 +Node: Single Row Operations432354 +Node: Match-Keys434601 +Node: Multi-Row Operations436680 +Node: Indexed Sequential Access Methods439071 +Node: Sequential Index Operations440079 +Node: Table Administration442435 +Node: Database Interpolation443302 +Node: Embedded Commands444404 +Node: Database Extension445978 +Node: Command Intrinsics448103 +Node: Define-tables Example449665 +Node: The *commands* Table451315 +Node: Command Service453593 +Node: Command Example455555 +Node: Database Macros460108 +Node: Within-database460993 +Node: Within-database Example463900 +Node: Database Browser465687 +Node: Relational Infrastructure466763 +Node: Base Table467067 +Node: The Base469575 +Node: Base Tables472693 +Node: Base Field Types474169 +Node: Composite Keys474952 +Node: Base Record Operations477006 +Node: Match Keys478734 +Node: Aggregate Base Operations479615 +Node: Base ISAM Operations480680 +Node: Catalog Representation481998 +Node: Relational Database Objects484667 +Node: Database Operations487311 +Node: Weight-Balanced Trees491020 +Node: Construction of Weight-Balanced Trees494906 +Node: Basic Operations on Weight-Balanced Trees498372 +Node: Advanced Operations on Weight-Balanced Trees501239 +Node: Indexing Operations on Weight-Balanced Trees507280 +Node: Other Packages511121 +Node: Data Structures511650 +Node: Arrays512491 +Node: Subarrays523379 +Node: Array Mapping525621 +Node: Array Interpolation528831 +Node: Association Lists530095 +Node: Byte532371 +Node: Byte/Number Conversions537964 +Node: MAT-File Format545535 +Node: Portable Image Files546814 +Node: Collections548444 +Node: Dynamic Data Type554710 +Node: Hash Tables555989 +Node: Object558577 +Node: Priority Queues566860 +Node: Queues567715 +Node: Records568960 +Node: Sorting and Searching572470 +Node: Common List Functions573163 +Node: List construction573620 +Node: Lists as sets575335 +Node: Lists as sequences581873 +Node: Destructive list operations587100 +Node: Non-List functions589778 +Node: Tree Operations590867 +Node: Chapter Ordering592560 +Node: Sorting594207 +Node: Topological Sort598492 +Node: Hashing600200 +Node: Space-Filling Curves601217 +Node: Hilbert Space-Filling Curve601521 +Node: Peano Space-Filling Curve605411 +Node: Sierpinski Curve606517 +Node: Soundex608981 +Node: String Search610579 +Node: Sequence Comparison613152 +Node: Procedures616282 +Node: Type Coercion616810 +Node: String-Case617242 +Node: String Ports619069 +Node: Line I/O619841 +Node: Multi-Processing621890 +Node: Metric Units623008 +Node: Standards Support631287 +Node: RnRS632083 +Node: With-File633306 +Node: Transcripts633582 +Node: Rev2 Procedures633916 +Node: Rev4 Optional Procedures635649 +Node: Multi-argument / and -636118 +Node: Multi-argument Apply636528 +Node: Rationalize636865 +Node: Promises638027 +Node: Dynamic-Wind638473 +Node: Eval639741 +Node: Values643086 +Node: SRFI643901 +Node: SRFI-1645988 +Node: Session Support650546 +Node: Repl651120 +Node: Quick Print652416 +Node: Debug653722 +Node: Breakpoints654629 +Node: Trace656671 +Node: System Interface659897 +Node: Directories660468 +Node: Transactions661961 +Node: CVS667472 +Node: Extra-SLIB Packages668639 +Node: About SLIB670948 +Node: Installation671733 +Node: The SLIB script677640 +Node: Porting678193 +Ref: Porting-Footnote-1639950 +Node: Coding Guidelines679757 +Node: Copyrights682171 +Node: About this manual685540 +Node: Copying This Manual686172 +Node: How to use this License for your documents707206 +Node: Index708724 End Tag Table |