diff options
Diffstat (limited to 'slib.info')
-rw-r--r-- | slib.info | 2463 |
1 files changed, 1602 insertions, 861 deletions
@@ -1,39 +1,51 @@ -This is slib.info, produced by makeinfo version 4.7 from slib.texi. +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." | + | INFO-DIR-SECTION The Algorithmic Language Scheme START-INFO-DIR-ENTRY * SLIB: (slib). Scheme Library END-INFO-DIR-ENTRY - This file documents SLIB, the portable Scheme library. - - Copyright (C) 1993 Todd R. Eigenschink -Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002 Aubrey Jaffer - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. + +File: slib.info, Node: Top, Next: The Library System, Prev: (dir), Up: (dir) + | +SLIB | +**** | - Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. +This manual is for SLIB (version 3a4, October 2006), the portable | +Scheme library. | - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that this permission notice may be stated in a -translation approved by the author. +Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, | +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. | - -File: slib.info, Node: Top, Next: The Library System, Prev: (dir), Up: (dir) + 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." | -"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. + (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." | * Menu: @@ -53,6 +65,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. | + | * Menu: * Feature:: SLIB names. @@ -279,10 +298,10 @@ the actual pathnames of files can differ from installation to installation, SLIB builds a separate catalog for each implementation it is used with. -The definition of `*slib-version*' in SLIB file `require.scm' is | -checked against the catalog association of `*slib-version*' to | +The definition of `*slib-version*' in SLIB file `require.scm' is +checked against the catalog association of `*slib-version*' to ascertain when versions have changed. It is a reasonable practice to -change the definition of `*slib-version*' whenever the library is | +change the definition of `*slib-version*' whenever the library is changed. If multiple implementations of Scheme use SLIB, remember that recompiling one `slibcat' will update only that implementation's catalog. @@ -853,7 +872,7 @@ implementations. implementation and the name of the operating system. An unspecified value is returned. - (slib:report-version) => slib "3a3" on scm "5b1" on unix | + (slib:report-version) => slib "3a4" on scm "5b1" on unix | -- Function: slib:report Displays the information of `(slib:report-version)' followed by @@ -868,15 +887,15 @@ implementations. (slib:report) => - slib "3a3" on scm "5b1" on unix | + slib "3a4" 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 *features* : + loaded slib:features : | trace alist qp sort common-list-functions macro values getopt compiled - implementation *features* : + implementation slib:features : | bignum complex real rational inexact vicinity ed getenv tmpnam abort transcript with-file @@ -1122,7 +1141,7 @@ Language changes: (r4rs)Notes.). They are provided by all SLIB implementations. -- Constant: t - Derfined as `#t'. + Defined as `#t'. | -- Constant: nil Defined as `#f'. @@ -1154,11 +1173,11 @@ File: slib.info, Node: Scheme Syntax Extension Packages, Next: Textual Convers Syntax extensions (macros) included with SLIB. * Define-Structure:: 'structure -* Define-Record-Type:: 'define-record-type, 'srfi-9 | +* Define-Record-Type:: 'define-record-type, 'srfi-9 * Fluid-Let:: 'fluid-let -* Binding to multiple values:: 'receive, 'srfi-8 | -* Guarded LET* special form:: 'and-let*, 'srfi-2 | -* Guarded COND Clause:: 'guarded-cond-clause, 'srfi-61 | +* Binding to multiple values:: 'receive, 'srfi-8 +* Guarded LET* special form:: 'and-let*, 'srfi-2 +* Guarded COND Clause:: 'guarded-cond-clause, 'srfi-61 * Yasos:: 'yasos, 'oop, 'collect @@ -2016,7 +2035,7 @@ if there is some incompatibility that is not flagged as such. File: slib.info, Node: Define-Structure, Next: Define-Record-Type, Prev: Syntax-Case Macros, Up: Scheme Syntax Extension Packages - | + 3.7 Define-Structure ==================== @@ -2069,27 +2088,27 @@ a macro `define-structure'. Here is its documentation from Gambit 4.0: File: slib.info, Node: Define-Record-Type, Next: Fluid-Let, Prev: Define-Structure, Up: Scheme Syntax Extension Packages - | -3.8 Define-Record-Type | -====================== | - | -`(require 'define-record-type)' or `(require 'srfi-9)' | - | - `http://srfi.schemers.org/srfi-9/srfi-9.html' | - | - -- Special Form: define-record-type <type-name> (<constructor-name> | - <field-tag> ...) <predicate-name> <field-spec> ... | - Where | - <field-spec> == (<field-tag> <accessor-name>) | - == (<field-tag> <accessor-name> <modifier-name>) | - | - `define-record-type' is a syntax wrapper for the SLIB `record' | - module. | - | + +3.8 Define-Record-Type +====================== + +`(require 'define-record-type)' or `(require 'srfi-9)' + + `http://srfi.schemers.org/srfi-9/srfi-9.html' + + -- Special Form: define-record-type <type-name> (<constructor-name> + <field-tag> ...) <predicate-name> <field-spec> ... + Where + <field-spec> == (<field-tag> <accessor-name>) + == (<field-tag> <accessor-name> <modifier-name>) + + `define-record-type' is a syntax wrapper for the SLIB `record' + module. + File: slib.info, Node: Fluid-Let, Next: Binding to multiple values, Prev: Define-Record-Type, Up: Scheme Syntax Extension Packages - | -3.9 Fluid-Let | + +3.9 Fluid-Let ============= `(require 'fluid-let)' @@ -2113,81 +2132,81 @@ of its corresponding VARIABLE. File: slib.info, Node: Binding to multiple values, Next: Guarded LET* special form, Prev: Fluid-Let, Up: Scheme Syntax Extension Packages - | -3.10 Binding to multiple values | -=============================== | - | -`(require 'receive)' or `(require 'srfi-8)' | - | - -- Special Form: receive formals expression body ... | - `http://srfi.schemers.org/srfi-8/srfi-8.html' | - | + +3.10 Binding to multiple values +=============================== + +`(require 'receive)' or `(require 'srfi-8)' + + -- Special Form: receive formals expression body ... + `http://srfi.schemers.org/srfi-8/srfi-8.html' + File: slib.info, Node: Guarded LET* special form, Next: Guarded COND Clause, Prev: Binding to multiple values, Up: Scheme Syntax Extension Packages - | -3.11 Guarded LET* special form | -============================== | - | -`(require 'and-let*)' or `(require 'srfi-2)' | - | - -- Macro: and-let* claws body ... | - `http://srfi.schemers.org/srfi-2/srfi-2.html' | - | + +3.11 Guarded LET* special form +============================== + +`(require 'and-let*)' or `(require 'srfi-2)' + + -- Macro: and-let* claws body ... + `http://srfi.schemers.org/srfi-2/srfi-2.html' + File: slib.info, Node: Guarded COND Clause, Next: Yasos, Prev: Guarded LET* special form, Up: Scheme Syntax Extension Packages - | -3.12 Guarded COND Clause | -======================== | - | -`(require 'guarded-cond-clause)' or `(require 'srfi-61)' | - | - `http://srfi.schemers.org/srfi-61/srfi-61.html' | - | - -- library syntax: cond <clause1> <clause2> ... | - _Syntax:_ Each <clause> should be of the form | - | - (<test> <expression1> ...) | - | - where <test> is any expression. Alternatively, a <clause> may be | - of the form | - | - (<test> => <expression>) | - | - The <clause> production in the formal syntax of Scheme as written | - by R5RS in section 7.1.3 is extended with a new option: | - | - <clause> => (<generator> <guard> => <receiver>) | - | - where <generator>, <guard>, & <receiver> are all <expression>s. | - | - Clauses of this form have the following semantics: | - <generator> is evaluated. It may return arbitrarily many | - values. <Guard> is applied to an argument list containing | - the values in order that <generator> returned. If <guard> | - returns a true value for that argument list, <receiver> is | - applied with an equivalent argument list. If <guard> returns | - a false value, however, the clause is abandoned and the next | - one is tried. | - | - The last <clause> may be an "else clause," which has the form | - | - (else <expression1> <expression2> ...). | - | -This `port->char-list' procedure accepts an input port and returns a | -list of all the characters it produces until the end. | - | - (define (port->char-list port) | - (cond ((read-char port) char? | - => (lambda (c) (cons c (port->char-list port)))) | - (else '()))) | - | - (call-with-input-string "foo" port->char-list) ==> (#\f #\o #\o) | - | + +3.12 Guarded COND Clause +======================== + +`(require 'guarded-cond-clause)' or `(require 'srfi-61)' + + `http://srfi.schemers.org/srfi-61/srfi-61.html' + + -- library syntax: cond <clause1> <clause2> ... + _Syntax:_ Each <clause> should be of the form + + (<test> <expression1> ...) + + where <test> is any expression. Alternatively, a <clause> may be + of the form + + (<test> => <expression>) + + The <clause> production in the formal syntax of Scheme as written + by R5RS in section 7.1.3 is extended with a new option: + + <clause> => (<generator> <guard> => <receiver>) + + where <generator>, <guard>, & <receiver> are all <expression>s. + + Clauses of this form have the following semantics: + <generator> is evaluated. It may return arbitrarily many + values. <Guard> is applied to an argument list containing + the values in order that <generator> returned. If <guard> + returns a true value for that argument list, <receiver> is + applied with an equivalent argument list. If <guard> returns + a false value, however, the clause is abandoned and the next + one is tried. + + The last <clause> may be an "else clause," which has the form + + (else <expression1> <expression2> ...). + +This `port->char-list' procedure accepts an input port and returns a +list of all the characters it produces until the end. + + (define (port->char-list port) + (cond ((read-char port) char? + => (lambda (c) (cons c (port->char-list port)))) + (else '()))) + + (call-with-input-string "foo" port->char-list) ==> (#\f #\o #\o) + File: slib.info, Node: Yasos, Prev: Guarded COND Clause, Up: Scheme Syntax Extension Packages - | -3.13 Yasos | -========== | + +3.13 Yasos +========== `(require 'oop)' or `(require 'yasos)' @@ -2211,8 +2230,8 @@ on LISP and Functional Programming, July 1988 [ACM #552880]. File: slib.info, Node: Yasos terms, Next: Yasos interface, Prev: Yasos, Up: Yasos -3.13.1 Terms | ------------- | +3.13.1 Terms +------------ "Object" Any Scheme data object. @@ -2242,8 +2261,8 @@ _Disclaimer:_ File: slib.info, Node: Yasos interface, Next: Setters, Prev: Yasos terms, Up: Yasos -3.13.2 Interface | ----------------- | +3.13.2 Interface +---------------- -- Syntax: define-operation `('opname self arg ...`)' DEFAULT-BODY Defines a default behavior for data objects which don't handle the @@ -2288,8 +2307,8 @@ File: slib.info, Node: Yasos interface, Next: Setters, Prev: Yasos terms, Up File: slib.info, Node: Setters, Next: Yasos examples, Prev: Yasos interface, Up: Yasos -3.13.3 Setters | --------------- | +3.13.3 Setters +-------------- "Setters" implement "generalized locations" for objects associated with some sort of mutable state. A "getter" operation retrieves a value @@ -2346,8 +2365,8 @@ through `setf'. File: slib.info, Node: Yasos examples, Prev: Setters, Up: Yasos -3.13.4 Examples | ---------------- | +3.13.4 Examples +--------------- ;;; These definitions for PRINT and SIZE are ;;; already supplied by @@ -2529,9 +2548,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.html') 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 ---------- @@ -2627,7 +2646,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 symbols 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. @@ -5792,16 +5811,18 @@ File: slib.info, Node: Mathematical Packages, Next: Database Packages, Prev: * Bit-Twiddling:: 'logical * Modular Arithmetic:: 'modular +* Irrational Integer Functions:: | +* Irrational Real Functions:: | * Prime Numbers:: 'factor * Random Numbers:: 'random -* Fast Fourier Transform:: 'fft +* Discrete Fourier Transform:: 'dft | * Cyclic Checksum:: 'crc * Graphing:: * Solid Modeling:: VRML97 * Color:: * Root Finding:: 'root * Minimizing:: 'minimize -* The Limit:: 'limit | +* The Limit:: 'limit * Commutative Rings:: 'commutative-ring * Matrix Algebra:: 'determinant @@ -5811,7 +5832,7 @@ File: slib.info, Node: Bit-Twiddling, Next: Modular Arithmetic, Prev: Mathema 5.1 Bit-Twiddling ================= -`(require 'logical)' +`(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 @@ -6037,61 +6058,45 @@ representation. Returns the integer coded by the BOOL1 ... arguments. -File: slib.info, Node: Modular Arithmetic, Next: Prime Numbers, Prev: Bit-Twiddling, Up: Mathematical Packages - +File: slib.info, Node: Modular Arithmetic, Next: Irrational Integer Functions, Prev: Bit-Twiddling, Up: Mathematical Packages + | 5.2 Modular Arithmetic ====================== `(require 'modular)' - - -- Function: mod x1 x2 - -- Function: rem x1 x2 - These procedures implement the Common-Lisp functions of the same - names. The real number X2 must be non-zero. `mod' returns `(- X1 - (* X2 (floor (/ X1 X2))))'. `rem' returns `(- X1 (* X2 (truncate - (/ X1 X2))))'. - - If X1 and X2 are integers, then `mod' behaves like `modulo' and - `rem' behaves like `remainder'. - - (mod -90 360) => 270 - (rem -90 180) => -90 - - (mod 540 360) => 180 - (rem 540 360) => 180 - - (mod (* 5/2 pi) (* 2 pi)) => 1.5707963267948965 - (rem (* -5/2 pi) (* 2 pi)) => -1.5707963267948965 - + | -- 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 n - Returns `(quotient (+ -1 n) -2)' for positive odd integer N. + -- 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: modulus->integer 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 (modulus->integer 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?' - Work as before. 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. -`negative?' - The arguments and result are treated as members of the integers - modulo `(+ 1 (* -2 MODULUS))', but with "symmetric" representation; - i.e. `(<= (- MODULUS) N MODULUS)'. +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. @@ -6122,9 +6127,151 @@ If all the arguments are fixnums the computation will use only fixnums. Returns (N2 ^ N3) mod MODULUS. -File: slib.info, Node: Prime Numbers, Next: Random Numbers, Prev: Modular Arithmetic, Up: Mathematical Packages - -5.3 Prime Numbers +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. | + | + +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. | + | + | + +File: slib.info, Node: Prime Numbers, Next: Random Numbers, Prev: Irrational Real Functions, Up: Mathematical Packages + | +5.5 Prime Numbers | ================= `(require 'factor)' @@ -6167,9 +6314,9 @@ the Solovay-Strassen primality test. See `(sort! (factor K) <)'. -File: slib.info, Node: Random Numbers, Next: Fast Fourier Transform, Prev: Prime Numbers, Up: Mathematical Packages - -5.4 Random Numbers +File: slib.info, Node: Random Numbers, Next: Discrete Fourier Transform, Prev: Prime Numbers, Up: Mathematical Packages + | +5.6 Random Numbers | ================== A pseudo-random number generator is only as good as the tests it passes. @@ -6191,7 +6338,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.4.1 Exact Random Numbers +5.6.1 Exact Random Numbers | -------------------------- `(require 'random)' @@ -6243,7 +6390,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.4.2 Inexact Random Numbers +5.6.2 Inexact Random Numbers | ---------------------------- `(require 'random-inexact)' @@ -6287,21 +6434,58 @@ File: slib.info, Node: Inexact Random Numbers, Prev: Exact Random Numbers, Up squares of the numbers is returned. -File: slib.info, Node: Fast Fourier Transform, Next: Cyclic Checksum, Prev: Random Numbers, Up: Mathematical Packages - -5.5 Fast Fourier Transform -========================== +File: slib.info, Node: Discrete Fourier Transform, Next: Cyclic Checksum, Prev: Random Numbers, Up: Mathematical Packages + | +5.7 Discrete Fourier Transform | +============================== | -`(require 'fft)' +`(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 `(expt 2 n)' numbers. `fft' returns an array - of complex numbers comprising the "Discrete Fourier Transform" of - 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. + -- Function: fft-1 array prot | -- Function: fft-1 array - `fft-1' returns an 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. @@ -6316,9 +6500,9 @@ File: slib.info, Node: Fast Fourier Transform, Next: Cyclic Checksum, Prev: R 1.0 -61.23031769111886e-18+1.0i -1.0 61.23031769111886e-18-1.0i) -File: slib.info, Node: Cyclic Checksum, Next: Graphing, Prev: Fast Fourier Transform, Up: Mathematical Packages - -5.6 Cyclic Checksum +File: slib.info, Node: Cyclic Checksum, Next: Graphing, Prev: Discrete Fourier Transform, Up: Mathematical Packages + | +5.8 Cyclic Checksum | =================== `(require 'crc)' Cyclic Redundancy Checks using Galois field GF(2) @@ -6506,7 +6690,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.7 Graphing +5.9 Graphing | ============ * Menu: @@ -6517,7 +6701,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.7.1 Character Plotting +5.9.1 Character Plotting | ------------------------ `(require 'charplot)' @@ -6630,7 +6814,7 @@ File: slib.info, Node: Character Plotting, Next: PostScript Graphing, Prev: G File: slib.info, Node: PostScript Graphing, Prev: Character Plotting, Up: Graphing -5.7.2 PostScript Graphing +5.9.2 PostScript Graphing | ------------------------- `(require 'eps-graph)' @@ -6681,7 +6865,7 @@ first ELT argument to the last. File: slib.info, Node: Column Ranges, Next: Drawing the Graph, Prev: PostScript Graphing, Up: PostScript Graphing -5.7.2.1 Column Ranges +5.9.2.1 Column Ranges | ..................... A "range" is a list of two numbers, the minimum and the maximum. Ranges @@ -6722,7 +6906,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.7.2.2 Drawing the Graph +5.9.2.2 Drawing the Graph | ......................... -- Function: plot-column array x-column y-column proc3s @@ -6780,7 +6964,7 @@ The glyphs and drawing styles available are: File: slib.info, Node: Graphics Context, Next: Rectangles, Prev: Drawing the Graph, Up: PostScript Graphing -5.7.2.3 Graphics Context +5.9.2.3 Graphics Context | ........................ -- Function: in-graphic-context arg ... @@ -6833,7 +7017,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.7.2.4 Rectangles +5.9.2.4 Rectangles | .................. A "rectangle" is a list of 4 numbers; the first two elements are the x @@ -6873,7 +7057,7 @@ elements are the width and height of the rectangle. File: slib.info, Node: Legending, Next: Legacy Plotting, Prev: Rectangles, Up: PostScript Graphing -5.7.2.5 Legending +5.9.2.5 Legending | ................. -- Function: title-top title subtitle @@ -6909,13 +7093,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 x-coord text tick-height - Draws a horizontal ruler with X coordinate X-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 right side of X-COORD; and TEXT and - numeric legends are on the left. If TICK-HEIGHT is negative, then - the ticks are -TICK-HEIGHT long on the left side of X-COORD; and - TEXT and numeric legends are on the right. + 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. @@ -6934,7 +7118,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.7.2.6 Legacy Plotting +5.9.2.6 Legacy Plotting | ....................... -- Variable: graph:dimensions @@ -6948,11 +7132,11 @@ File: slib.info, Node: Legacy Plotting, Next: Example Graph, Prev: Legending, range X1 to X2. If the optional integer argument NPTS is supplied, it specifies the number of points to evaluate FUNC at. - -- Function: x1 x2 npts func1 func2 ... | - Creates and displays an encapsulated PostScript graph of the | - one-argument functions FUNC1, FUNC2, ... over the range X1 to X2 | - at NPTS points. | - | + -- Function: x1 x2 npts func1 func2 ... + Creates and displays an encapsulated PostScript graph of the + one-argument functions FUNC1, FUNC2, ... over the range X1 to X2 + at NPTS points. + -- Function: plot coords x-label y-label COORDS is a list or vector of coordinates, lists of x and y coordinates. X-LABEL and Y-LABEL are strings with which to label @@ -6961,7 +7145,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.7.2.7 Example Graph +5.9.2.7 Example Graph | ..................... The file `am1.5.html', a table of solar irradiance, is fetched with @@ -7063,8 +7247,8 @@ scales. File: slib.info, Node: Solid Modeling, Next: Color, Prev: Graphing, Up: Mathematical Packages -5.8 Solid Modeling -================== +5.10 Solid Modeling | +=================== | `(require 'solid)' @@ -7274,6 +7458,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:cylinder radius height appearance -- Function: solid:cylinder radius height Returns a right cylinder with dimensions `(abs RADIUS)' and `(abs @@ -7330,6 +7519,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:basrelief width height depth colorray appearance -- Function: solid:basrelief width height depth appearance -- Function: solid:basrelief width height depth @@ -7485,8 +7683,8 @@ Spatial Transformations File: slib.info, Node: Color, Next: Root Finding, Prev: Solid Modeling, Up: Mathematical Packages -5.9 Color -========= +5.11 Color | +========== | `http://swiss.csail.mit.edu/~jaffer/Color' @@ -7508,8 +7706,8 @@ encountered in practice and the literature. File: slib.info, Node: Color Data-Type, Next: Color Spaces, Prev: Color, Up: Color -5.9.1 Color Data-Type ---------------------- +5.11.1 Color Data-Type | +---------------------- | `(require 'color)' @@ -7563,8 +7761,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.9.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. @@ -7607,8 +7805,8 @@ sRGB #x<RRGGBB> syntactically valid notation for a color, then `string->color' returns #f. -5.9.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 @@ -7642,8 +7840,8 @@ device-dependent RGBi and RGB spaces of Xlib. File: slib.info, Node: Color Spaces, Next: Spectra, Prev: Color Data-Type, Up: Color -5.9.2 Color Spaces ------------------- +5.11.2 Color Spaces | +------------------- | Measurement-based Color Spaces .............................. @@ -7909,8 +8107,8 @@ ICC.1:1998-09: File: slib.info, Node: Spectra, Next: Color Difference Metrics, Prev: Color Spaces, Up: Color -5.9.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 @@ -8123,8 +8321,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.9.4 Color Difference Metrics ------------------------------- +5.11.4 Color Difference Metrics | +------------------------------- | `(require 'color-space)' @@ -8194,8 +8392,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.9.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 @@ -8265,8 +8463,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.9.6 Color Names ------------------ +5.11.6 Color Names | +------------------ | `(require 'color-names)' @@ -8431,8 +8629,8 @@ program, then you must include its license with your program: File: slib.info, Node: Daylight, Prev: Color Names, Up: Color -5.9.7 Daylight --------------- +5.11.7 Daylight | +--------------- | `(require 'daylight)' @@ -8529,15 +8727,15 @@ turbidity values less than 1.3. File: slib.info, Node: Root Finding, Next: Minimizing, Prev: Color, Up: Mathematical Packages -5.10 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: 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 @@ -8554,7 +8752,7 @@ File: slib.info, Node: Root Finding, Next: Minimizing, Prev: Color, Up: Math (ash 1 (quotient (integer-length y) 2)))) (integer-sqrt 15) => 4 - | + -- Function: newton:find-root f df/dx x0 prec Given real valued procedures F, DF/DX of one (real) argument, initial real value X0 for which DF/DX(X0) is non-zero, and @@ -8623,8 +8821,8 @@ 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.11 Minimizing + +5.13 Minimizing | =============== `(require 'minimize)' @@ -8670,108 +8868,108 @@ 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.12 The Limit | -============== | - | - -- library procedure: limit proc x1 x2 k | - -- library procedure: limit proc x1 x2 | - PROC must be a procedure taking a single inexact real argument. K | - is the number of points on which PROC will be called; it defaults | - to 8. | - | - If X1 is finite, then PROC must be continuous on the half-open | - interval: | - | - ( X1 .. X1+X2 ] | - | - And X2 should be chosen small enough so that PROC is expected to | - be monotonic or constant on arguments between X1 and X1 + X2. | - | - `Limit' computes the limit of PROC as its argument approaches X1 | - from X1 + X2. `Limit' returns a real number or real infinity or | - `#f'. | - | - If X1 is not finite, then X2 must be a finite nonzero real with | - the same sign as X1; in which case `limit' returns: | - | - `(limit (lambda (x) (proc (/ x))) 0.0 (/ X2) K)' | - | - `Limit' examines the magnitudes of the differences between | - successive values returned by PROC called with a succession of | - numbers from X1+X2/K to X1. | - | - If the magnitudes of differences are monotonically decreasing, then | - then the limit is extrapolated from the degree n polynomial passing | - through the samples returned by PROC. | - | - If the magnitudes of differences are increasing as fast or faster | - than a hyperbola matching at X1+X2, then a real infinity with sign | - the same as the differences is returned. | - | - If the magnitudes of differences are increasing more slowly than | - the hyperbola matching at X1+X2, then the limit is extrapolated | - from the quadratic passing through the three samples closest to X1. | - | - If the magnitudes of differences are not monotonic or are not | - completely within one of the above categories, then #f is returned. | - | - ;; constant | - (limit (lambda (x) (/ x x)) 0 1.0e-9) ==> 1.0 | - (limit (lambda (x) (expt 0 x)) 0 1.0e-9) ==> 0.0 | - (limit (lambda (x) (expt 0 x)) 0 -1.0e-9) ==> +inf.0 | - ;; linear | - (limit + 0 976.5625e-6) ==> 0.0 | - (limit - 0 976.5625e-6) ==> 0.0 | - ;; vertical point of inflection | - (limit sqrt 0 1.0e-18) ==> 0.0 | + +5.14 The Limit | +============== + + -- library procedure: limit proc x1 x2 k + -- library procedure: limit proc x1 x2 + PROC must be a procedure taking a single inexact real argument. K + is the number of points on which PROC will be called; it defaults + to 8. + + If X1 is finite, then PROC must be continuous on the half-open + interval: + + ( X1 .. X1+X2 ] + + And X2 should be chosen small enough so that PROC is expected to + be monotonic or constant on arguments between X1 and X1 + X2. + + `Limit' computes the limit of PROC as its argument approaches X1 + from X1 + X2. `Limit' returns a real number or real infinity or + `#f'. + + If X1 is not finite, then X2 must be a finite nonzero real with + the same sign as X1; in which case `limit' returns: + + `(limit (lambda (x) (proc (/ x))) 0.0 (/ X2) K)' + + `Limit' examines the magnitudes of the differences between + successive values returned by PROC called with a succession of + numbers from X1+X2/K to X1. + + If the magnitudes of differences are monotonically decreasing, then + then the limit is extrapolated from the degree n polynomial passing + through the samples returned by PROC. + + If the magnitudes of differences are increasing as fast or faster + than a hyperbola matching at X1+X2, then a real infinity with sign + the same as the differences is returned. + + If the magnitudes of differences are increasing more slowly than + the hyperbola matching at X1+X2, then the limit is extrapolated + from the quadratic passing through the three samples closest to X1. + + If the magnitudes of differences are not monotonic or are not + completely within one of the above categories, then #f is returned. + + ;; constant + (limit (lambda (x) (/ x x)) 0 1.0e-9) ==> 1.0 + (limit (lambda (x) (expt 0 x)) 0 1.0e-9) ==> 0.0 + (limit (lambda (x) (expt 0 x)) 0 -1.0e-9) ==> +inf.0 + ;; linear + (limit + 0 976.5625e-6) ==> 0.0 + (limit - 0 976.5625e-6) ==> 0.0 + ;; vertical point of inflection + (limit sqrt 0 1.0e-18) ==> 0.0 (limit (lambda (x) (* x (log x))) 0 1.0e-9) ==> -102.70578127633066e-12 (limit (lambda (x) (/ x (log x))) 0 1.0e-9) ==> 96.12123142321669e-15 - ;; limits tending to infinity | - (limit + +inf.0 1.0e9) ==> +inf.0 | - (limit + -inf.0 -1.0e9) ==> -inf.0 | - (limit / 0 1.0e-9) ==> +inf.0 | - (limit / 0 -1.0e-9) ==> -inf.0 | - (limit (lambda (x) (/ (log x) x)) 0 1.0e-9) ==> -inf.0 | - (limit (lambda (x) (/ (magnitude (log x)) x)) 0 -1.0e-9) | - ==> -inf.0 | - ;; limit doesn't exist | - (limit sin +inf.0 1.0e9) ==> #f | - (limit (lambda (x) (sin (/ x))) 0 1.0e-9) ==> #f | - (limit (lambda (x) (sin (/ x))) 0 -1.0e-9) ==> #f | - (limit (lambda (x) (/ (log x) x)) 0 -1.0e-9) ==> #f | - ;; conditionally convergent - return #f | - (limit (lambda (x) (/ (sin x) x)) +inf.0 1.0e222) | - ==> #f | - ;; asymptotes | - (limit / -inf.0 -1.0e222) ==> 0.0 | - (limit / +inf.0 1.0e222) ==> 0.0 | - (limit (lambda (x) (expt x x)) 0 1.0e-18) ==> 1.0 | - (limit (lambda (x) (sin (/ x))) +inf.0 1.0e222) ==> 0.0 | - (limit (lambda (x) (/ (+ (exp (/ x)) 1))) 0 1.0e-9) | - ==> 0.0 | - (limit (lambda (x) (/ (+ (exp (/ x)) 1))) 0 -1.0e-9) | - ==> 1.0 | - (limit (lambda (x) (real-part (expt (tan x) (cos x)))) (/ pi 2) 1.0e-9) | - ==> 1.0 | - ;; This example from the 1979 Macsyma manual grows so rapidly | - ;; that x2 must be less than 41. It correctly returns e^2. | - (limit (lambda (x) (expt (+ x (exp x) (exp (* 2 x))) (/ x))) +inf.0 40) | - ==> 7.3890560989306504 | - ;; LIMIT can calculate the proper answer when evaluation | - ;; of the function at the limit point does not: | + ;; limits tending to infinity + (limit + +inf.0 1.0e9) ==> +inf.0 + (limit + -inf.0 -1.0e9) ==> -inf.0 + (limit / 0 1.0e-9) ==> +inf.0 + (limit / 0 -1.0e-9) ==> -inf.0 + (limit (lambda (x) (/ (log x) x)) 0 1.0e-9) ==> -inf.0 + (limit (lambda (x) (/ (magnitude (log x)) x)) 0 -1.0e-9) + ==> -inf.0 + ;; limit doesn't exist + (limit sin +inf.0 1.0e9) ==> #f + (limit (lambda (x) (sin (/ x))) 0 1.0e-9) ==> #f + (limit (lambda (x) (sin (/ x))) 0 -1.0e-9) ==> #f + (limit (lambda (x) (/ (log x) x)) 0 -1.0e-9) ==> #f + ;; conditionally convergent - return #f + (limit (lambda (x) (/ (sin x) x)) +inf.0 1.0e222) + ==> #f + ;; asymptotes + (limit / -inf.0 -1.0e222) ==> 0.0 + (limit / +inf.0 1.0e222) ==> 0.0 + (limit (lambda (x) (expt x x)) 0 1.0e-18) ==> 1.0 + (limit (lambda (x) (sin (/ x))) +inf.0 1.0e222) ==> 0.0 + (limit (lambda (x) (/ (+ (exp (/ x)) 1))) 0 1.0e-9) + ==> 0.0 + (limit (lambda (x) (/ (+ (exp (/ x)) 1))) 0 -1.0e-9) + ==> 1.0 + (limit (lambda (x) (real-part (expt (tan x) (cos x)))) (/ pi 2) 1.0e-9) + ==> 1.0 + ;; This example from the 1979 Macsyma manual grows so rapidly + ;; that x2 must be less than 41. It correctly returns e^2. + (limit (lambda (x) (expt (+ x (exp x) (exp (* 2 x))) (/ x))) +inf.0 40) + ==> 7.3890560989306504 + ;; LIMIT can calculate the proper answer when evaluation + ;; of the function at the limit point does not: (tan (atan +inf.0)) ==> 16.331778728383844e15 - (limit tan (atan +inf.0) -1.0e-15) ==> +inf.0 | + (limit tan (atan +inf.0) -1.0e-15) ==> +inf.0 (tan (atan +inf.0)) ==> 16.331778728383844e15 - (limit tan (atan +inf.0) 1.0e-15) ==> -inf.0 | - ((lambda (x) (expt (exp (/ -1 x)) x)) 0) ==> 1.0 | - (limit (lambda (x) (expt (exp (/ -1 x)) x)) 0 1.0e-9) | - ==> 0.0 | - | + (limit tan (atan +inf.0) 1.0e-15) ==> -inf.0 + ((lambda (x) (expt (exp (/ -1 x)) x)) 0) ==> 1.0 + (limit (lambda (x) (expt (exp (/ -1 x)) x)) 0 1.0e-9) + ==> 0.0 + File: slib.info, Node: Commutative Rings, Next: Matrix Algebra, Prev: The Limit, Up: Mathematical Packages - | -5.13 Commutative Rings | + +5.15 Commutative Rings | ====================== Scheme provides a consistent and capable set of numeric functions. @@ -8837,7 +9035,7 @@ expressions are handled similarly. `remainder', `lcm', and `gcd'; but these work only for the more restrictive Euclidean (Unique Factorization) Domain. -5.14 Rules and Rulesets | +5.16 Rules and Rulesets | ======================= The "commutative-ring" package allows control of ring properties @@ -8911,7 +9109,7 @@ involving different non-numeric elements. (lambda (exp1 exp2) (apply + (map (lambda (trm) (* trm exp2)) (cdr exp1)))))) -5.15 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 @@ -9050,7 +9248,7 @@ objects. File: slib.info, Node: Matrix Algebra, Prev: Commutative Rings, Up: Mathematical Packages -5.16 Matrix Algebra | +5.18 Matrix Algebra | =================== `(require 'determinant)' @@ -9357,7 +9555,7 @@ missing. (every (lambda (c) (memv c '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 - #\+ #\( #\ #\) #\-))) + #\+ #\( #\space #\) #\-))) | (string->list d)))) string)) @@ -11246,7 +11444,7 @@ File: slib.info, Node: Data Structures, Next: Sorting and Searching, Prev: Ot * Arrays:: 'array * Subarrays:: 'subarray * Array Mapping:: 'array-for-each -* Array Interpolation:: 'array-interpolate | +* Array Interpolation:: 'array-interpolate * Association Lists:: 'alist * Byte:: 'byte * Byte/Number Conversions:: 'byte-number @@ -11538,9 +11736,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)) | - -- Variable: subarray0 - Legacy alias for subarray. + 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 @@ -11563,7 +11765,7 @@ File: slib.info, Node: Subarrays, Next: Array Mapping, Prev: Arrays, Up: Dat File: slib.info, Node: Array Mapping, Next: Array Interpolation, Prev: Subarrays, Up: Data Structures - | + 7.1.3 Array Mapping ------------------- @@ -11618,39 +11820,39 @@ File: slib.info, Node: Array Mapping, Next: Array Interpolation, Prev: Subarr File: slib.info, Node: Array Interpolation, Next: Association Lists, Prev: Array Mapping, Up: Data Structures - | -7.1.4 Array Interpolation | -------------------------- | - | -`(require 'array-interpolate)' | - | - -- Function: interpolate-array-ref ra x1 ... xj | - RA must be an array of rank j containing numbers. | - `interpolate-array-ref' returns a value interpolated from the | - nearest j-dimensional cube of elements of RA. | - | - (interpolate-array-ref '#2A:fixZ32b((1 2 3) (4 5 6)) 1 0.1) | - ==> 4.1 | - (interpolate-array-ref '#2A:fixZ32b((1 2 3) (4 5 6)) 0.5 0.25) | - ==> 2.75 | - | - -- Procedure: resample-array! ra1 ra2 | - RA1 and RA2 must be numeric arrays of equal rank. | - `resample-array!' sets RA1 to values interpolated from RA2 such | - that the values of elements at the corners of RA1 and RA2 are | - equal. | - | - (define ra (make-array (A:fixZ32b) 2 2)) | - (resample-array! ra '#2A:fixZ32b((1 2 3) (4 5 6))) | - ra ==> #2A:fixZ32b((1 3) (4 6)) | - (define ra (make-array (A:floR64b) 3 2)) | - (resample-array! ra '#2A:fixZ32b((1 2 3) (4 5 6))) | - ra ==> #2A:floR64b((1.0 3.0) (2.5 4.5) (4.0 6.0)) | - | + +7.1.4 Array Interpolation +------------------------- + +`(require 'array-interpolate)' + + -- Function: interpolate-array-ref ra x1 ... xj + RA must be an array of rank j containing numbers. + `interpolate-array-ref' returns a value interpolated from the + nearest j-dimensional cube of elements of RA. + + (interpolate-array-ref '#2A:fixZ32b((1 2 3) (4 5 6)) 1 0.1) + ==> 4.1 + (interpolate-array-ref '#2A:fixZ32b((1 2 3) (4 5 6)) 0.5 0.25) + ==> 2.75 + + -- Procedure: resample-array! ra1 ra2 + RA1 and RA2 must be numeric arrays of equal rank. + `resample-array!' sets RA1 to values interpolated from RA2 such + that the values of elements at the corners of RA1 and RA2 are + equal. + + (define ra (make-array (A:fixZ32b) 2 2)) + (resample-array! ra '#2A:fixZ32b((1 2 3) (4 5 6))) + ra ==> #2A:fixZ32b((1 3) (4 6)) + (define ra (make-array (A:floR64b) 3 2)) + (resample-array! ra '#2A:fixZ32b((1 2 3) (4 5 6))) + ra ==> #2A:floR64b((1.0 3.0) (2.5 4.5) (4.0 6.0)) + File: slib.info, Node: Association Lists, Next: Byte, Prev: Array Interpolation, Up: Data Structures - | -7.1.5 Association Lists | + +7.1.5 Association Lists ----------------------- `(require 'alist)' @@ -11706,7 +11908,7 @@ tables for improved performance. File: slib.info, Node: Byte, Next: Byte/Number Conversions, Prev: Association Lists, Up: Data Structures -7.1.6 Byte | +7.1.6 Byte ---------- `(require 'byte)' @@ -11752,6 +11954,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). | + | -- Procedure: bytes-reverse! bytes Reverses the order of byte-array BYTES. @@ -11810,24 +12022,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'. -`substring-read!' and `substring-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: substring-read! string start end port - -- Procedure: substring-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. - `substring-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: substring-write string start end port - -- Function: substring-write string start end - `substring-write' writes `(abs (- START END))' bytes to - output-port PORT. The first byte written is index START of - STRING. `substring-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'. @@ -11835,7 +12047,7 @@ and END determines the order of writing. File: slib.info, Node: Byte/Number Conversions, Next: MAT-File Format, Prev: Byte, Up: Data Structures -7.1.7 Byte/Number Conversions | +7.1.7 Byte/Number Conversions ----------------------------- `(require 'byte-number)' @@ -11877,8 +12089,8 @@ determines the signedness of the number. calculates and returns the value of BYTES interpreted as a big-endian IEEE 4-byte (32-bit) number. - (bytes->ieee-float (bytes 0 0 0 0)) => 0.0 | - (bytes->ieee-float (bytes #x80 0 0 0)) => -0.0 | + (bytes->ieee-float (bytes 0 0 0 0)) => 0.0 + (bytes->ieee-float (bytes #x80 0 0 0)) => -0.0 (bytes->ieee-float (bytes #x40 0 0 0)) => 2.0 (bytes->ieee-float (bytes #x40 #xd0 0 0)) => 6.5 (bytes->ieee-float (bytes #xc0 #xd0 0 0)) => -6.5 @@ -11887,8 +12099,8 @@ determines the signedness of the number. (bytes->ieee-float (bytes 0 #x40 0 0)) => 5.877471754111437e-39 (bytes->ieee-float (bytes 0 0 0 1)) => 1.401298464324817e-45 - (bytes->ieee-float (bytes #xff #x80 0 0)) => -inf.0 | - (bytes->ieee-float (bytes #x7f #x80 0 0)) => +inf.0 | + (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 -- Function: bytes->ieee-double bytes @@ -11897,8 +12109,8 @@ determines the signedness of the number. big-endian IEEE 8-byte (64-bit) number. (bytes->ieee-double (bytes 0 0 0 0 0 0 0 0)) => 0.0 - (bytes->ieee-double (bytes #x80 0 0 0 0 0 0 0)) => -0.0 | - (bytes->ieee-double (bytes #x40 0 0 0 0 0 0 0)) => 2.0 | + (bytes->ieee-double (bytes #x80 0 0 0 0 0 0 0)) => -0.0 + (bytes->ieee-double (bytes #x40 0 0 0 0 0 0 0)) => 2.0 (bytes->ieee-double (bytes #x40 #x1A 0 0 0 0 0 0)) => 6.5 (bytes->ieee-double (bytes #xC0 #x1A 0 0 0 0 0 0)) => -6.5 @@ -11906,8 +12118,8 @@ determines the signedness of the number. (bytes->ieee-double (bytes 0 4 0 0 0 0 0 0)) => 5.562684646268003e-309 (bytes->ieee-double (bytes 0 0 0 0 0 0 0 1)) => 4.0e-324 - (bytes->ieee-double (bytes #xFF #xF0 0 0 0 0 0 0)) => -inf.0 | - (bytes->ieee-double (bytes #x7F #xF0 0 0 0 0 0 0)) => +inf.0 | + (bytes->ieee-double (bytes #xFF #xF0 0 0 0 0 0 0)) => -inf.0 + (bytes->ieee-double (bytes #x7F #xF0 0 0 0 0 0 0)) => +inf.0 (bytes->ieee-double (bytes #x7F #xF8 0 0 0 0 0 0)) => 0/0 -- Function: ieee-float->bytes x @@ -11932,8 +12144,8 @@ determines the signedness of the number. Returns a 8-element byte-array encoding the IEEE double-precision floating-point of X. - (bytes->list (ieee-double->bytes 0.0)) => (0 0 0 0 0 0 0 0) | - (bytes->list (ieee-double->bytes -0.0)) => (128 0 0 0 0 0 0 0) | + (bytes->list (ieee-double->bytes 0.0)) => (0 0 0 0 0 0 0 0) + (bytes->list (ieee-double->bytes -0.0)) => (128 0 0 0 0 0 0 0) (bytes->list (ieee-double->bytes 2.0)) => (64 0 0 0 0 0 0 0) (bytes->list (ieee-double->bytes 6.5)) => (64 26 0 0 0 0 0 0) (bytes->list (ieee-double->bytes -6.5)) => (192 26 0 0 0 0 0 0) @@ -11945,8 +12157,8 @@ determines the signedness of the number. (bytes->list (ieee-double->bytes 4.0e-324)) => ( 0 0 0 0 0 0 0 1) - (bytes->list (ieee-double->bytes -inf.0)) => (255 240 0 0 0 0 0 0) | - (bytes->list (ieee-double->bytes +inf.0)) => (127 240 0 0 0 0 0 0) | + (bytes->list (ieee-double->bytes -inf.0)) => (255 240 0 0 0 0 0 0) + (bytes->list (ieee-double->bytes +inf.0)) => (127 240 0 0 0 0 0 0) (bytes->list (ieee-double->bytes 0/0)) => (127 248 0 0 0 0 0 0) Byte Collation Order @@ -11993,7 +12205,7 @@ enables the full range of numbers as keys in File: slib.info, Node: MAT-File Format, Next: Portable Image Files, Prev: Byte/Number Conversions, Up: Data Structures -7.1.8 MAT-File Format | +7.1.8 MAT-File Format --------------------- `(require 'matfile)' @@ -12024,7 +12236,7 @@ awaits a sample file. File: slib.info, Node: Portable Image Files, Next: Collections, Prev: MAT-File Format, Up: Data Structures -7.1.9 Portable Image Files | +7.1.9 Portable Image Files -------------------------- `(require 'pnm)' @@ -12073,8 +12285,8 @@ File: slib.info, Node: Portable Image Files, Next: Collections, Prev: MAT-Fil File: slib.info, Node: Collections, Next: Dynamic Data Type, Prev: Portable Image Files, Up: Data Structures -7.1.10 Collections | ------------------- | +7.1.10 Collections +------------------ `(require 'collect)' @@ -12242,7 +12454,7 @@ operations. File: slib.info, Node: Dynamic Data Type, Next: Hash Tables, Prev: Collections, Up: Data Structures -7.1.11 Dynamic Data Type | +7.1.11 Dynamic Data Type ------------------------ `(require 'dynamic)' @@ -12277,7 +12489,7 @@ File: slib.info, Node: Dynamic Data Type, Next: Hash Tables, Prev: Collection File: slib.info, Node: Hash Tables, Next: Object, Prev: Dynamic Data Type, Up: Data Structures -7.1.12 Hash Tables | +7.1.12 Hash Tables ------------------ `(require 'hash-table)' @@ -12342,7 +12554,7 @@ should be `eq?', `eqv?', `equal?', `=', `char=?', `char-ci=?', File: slib.info, Node: Object, Next: Priority Queues, Prev: Hash Tables, Up: Data Structures -7.1.13 Macroless Object System | +7.1.13 Macroless Object System ------------------------------ `(require 'object)' @@ -12351,7 +12563,7 @@ File: slib.info, Node: Object, Next: Priority Queues, Prev: Hash Tables, Up: (whumeniu@datap.ca). Conceptual Tributes: *Note Yasos::, MacScheme's %object, CLOS, Lack of R4RS macros. -7.1.14 Concepts | +7.1.14 Concepts --------------- OBJECT @@ -12381,7 +12593,7 @@ PREDICATE A object's method asscociated with a generic-predicate. Returns `#t'. -7.1.15 Procedures | +7.1.15 Procedures ----------------- -- Function: make-object ancestor ... @@ -12421,7 +12633,7 @@ PREDICATE GENERIC-METHOD. If no associated method exists an error is flagged. -7.1.16 Examples | +7.1.16 Examples --------------- (require 'object) @@ -12480,7 +12692,7 @@ PREDICATE (imigrate! self) self) -7.1.16.1 Inverter Documentation | +7.1.16.1 Inverter Documentation ............................... Inheritance: @@ -12493,7 +12705,7 @@ Inheritance: <inverter>::invert <inverter>::inverter? -7.1.16.2 Number Documention | +7.1.16.2 Number Documention ........................... Inheritance @@ -12504,7 +12716,7 @@ Inheritance <number>::value <number>::set-value! -7.1.16.3 Inverter code | +7.1.16.3 Inverter code ...................... (require 'object) @@ -12568,7 +12780,7 @@ Inheritance File: slib.info, Node: Priority Queues, Next: Queues, Prev: Object, Up: Data Structures -7.1.17 Priority Queues | +7.1.17 Priority Queues ---------------------- `(require 'priority-queue)' @@ -12595,7 +12807,7 @@ Algorithms' by T. Cormen, C. Leiserson, R. Rivest. 1989 MIT Press. File: slib.info, Node: Queues, Next: Records, Prev: Priority Queues, Up: Data Structures -7.1.18 Queues | +7.1.18 Queues ------------- `(require 'queue)' @@ -12639,7 +12851,7 @@ rear, and removed from the front (i.e., they are what are often called File: slib.info, Node: Records, Prev: Queues, Up: Data Structures -7.1.19 Records | +7.1.19 Records -------------- `(require 'record)' @@ -13385,6 +13597,8 @@ File: slib.info, Node: Sorting, Next: Topological Sort, Prev: Chapter Orderin `(require 'sort)' + [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 @@ -13452,6 +13666,17 @@ 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, @@ -13464,66 +13689,60 @@ arguments which acts like `<'. For example, 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))) | + | + The `!' variants sort in place; `sort!' returns its SEQUENCE argument. | + | -- Function: sorted? sequence less? + -- 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, vector, or - string. + pair. It is an error if the sequence is not a list or array | + (including vectors and strings). | -- Function: merge list1 list2 less? - This merges two lists, producing a completely new list as result. - I gave serious consideration to producing a Common-LISP-compatible - version. 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. - - -- Procedure: merge! list1 list2 less? - Merges two lists, re-using the pairs of LIST1 and LIST2 to build - the result. If the code is compiled, and LESS? constructs no new - pairs, no pairs at all will be allocated. The first pair of the - result will be either the first pair of LIST1 or the first pair of - LIST2, but you can't predict which. - - 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.) + -- 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: sort sequence less? - Accepts either a list, vector, or string; and returns a new - sequence which is sorted. The new sequence is the same type as - the input. Always `(sorted? (sort sequence less?) less?)'. The - original sequence is not altered in any way. The new sequence - shares its _elements_ with the old one; no elements are copied. - - -- Procedure: sort! sequence less? - Returns its sorted result in the original boxes. If the original - sequence is a list, no new storage is allocated at all. If the - original sequence is a vector or string, the sorted elements are - put back in the same vector or string. - - Some people have been confused about how to use `sort!', thinking - that it doesn't return a value. It needs to be pointed out that - (set! slist (sort! slist <)) - is the proper usage, not - (sort! slist <) - - Note that these functions do _not_ accept a CL-style `:key' argument. -A simple device for obtaining the same expressiveness is to define - - (define (keyed less? key) - (lambda (x y) (less? (key x) (key y)))) - and then, when you would have written - (sort a-sequence #'my-less :key #'my-key) - in Common LISP, just write - (sort! a-sequence (keyed my-less? my-key)) - in Scheme. + -- 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. | File: slib.info, Node: Topological Sort, Next: Hashing, Prev: Sorting, Up: Sorting and Searching @@ -13706,7 +13925,7 @@ of Hilbert space-filling curves. 7.2.7.3 Bitwise Lamination .......................... - | + -- Function: delaminate-list count ks Returns a list of COUNT integers comprised of the Jth bit of the integers KS where J ranges from COUNT-1 to 0. @@ -13725,28 +13944,28 @@ File: slib.info, Node: Peano Space-Filling Curve, Next: Sierpinski Curve, Pre 7.2.7.4 Peano Space-Filling Curve ................................. -`(require 'peano-fill)' | - | - -- Function: natural->peano-coordinates scalar rank | +`(require 'peano-fill)' + + -- Function: natural->peano-coordinates scalar rank Returns a list of RANK nonnegative integer coordinates corresponding to exact nonnegative integer SCALAR. The lists - returned by `natural->peano-coordinates' for SCALAR arguments 0 | + returned by `natural->peano-coordinates' for SCALAR arguments 0 and 1 will differ in the first element. - -- Function: peano-coordinates->natural coords | + -- Function: peano-coordinates->natural coords Returns an exact nonnegative integer corresponding to COORDS, a list of nonnegative integer coordinates. - -- Function: integer->peano-coordinates scalar rank | - Returns a list of RANK integer coordinates corresponding to exact | - integer SCALAR. The lists returned by | - `integer->peano-coordinates' for SCALAR arguments 0 and 1 will | - differ in the first element. | - | - -- Function: peano-coordinates->integer coords | - Returns an exact integer corresponding to COORDS, a list of integer | - coordinates. | - | + -- Function: integer->peano-coordinates scalar rank + Returns a list of RANK integer coordinates corresponding to exact + integer SCALAR. The lists returned by + `integer->peano-coordinates' for SCALAR arguments 0 and 1 will + differ in the first element. + + -- Function: peano-coordinates->integer coords + Returns an exact integer corresponding to COORDS, a list of integer + coordinates. + File: slib.info, Node: Sierpinski Curve, Prev: Peano Space-Filling Curve, Up: Space-Filling Curves @@ -14134,11 +14353,11 @@ File: slib.info, Node: Line I/O, Next: Multi-Processing, Prev: String Ports, `system->line' returns a string containing the first line of output from TMP. - `system->line' is intended to be a portable method for getting | - one-line results from programs like `pwd', `whoami', `hostname', | - `which', `identify', and `cksum'. Its behavior when called with | - programs which generate lots of output is unspecified. | - | + `system->line' is intended to be a portable method for getting + one-line results from programs like `pwd', `whoami', `hostname', + `which', `identify', and `cksum'. Its behavior when called with + programs which generate lots of output is unspecified. + File: slib.info, Node: Multi-Processing, Next: Metric Units, Prev: Line I/O, Up: Procedures @@ -14742,7 +14961,7 @@ File: slib.info, Node: SRFI, Prev: Values, Up: Standards Support Implements "Scheme Request For Implementation" (SRFI) as described at `http://srfi.schemers.org/' - | + -- Macro: cond-expand <clause1> <clause2> ... _Syntax:_ Each <clause> should be of the form @@ -14763,27 +14982,29 @@ Implements "Scheme Request For Implementation" (SRFI) as described at * Menu: -* SRFI-1:: list-processing | +* SRFI-1:: list-processing + + * SRFI-2 *Note Guarded LET* special form:: + + * SRFI-8 *Note Binding to multiple values:: + + * SRFI-9 *Note Define-Record-Type:: + + * SRFI-23 `(define error slib:error)' | - * SRFI-2 *Note Guarded LET* special form:: | - | - * SRFI-8 *Note Binding to multiple values:: | - | - * SRFI-9 *Note Define-Record-Type:: | - | * SRFI-47 *Note Arrays:: | - | + + * SRFI-63 *Note Arrays:: + * SRFI-59 *Note Vicinity:: | | - * SRFI-63 *Note Arrays:: | - | - * SRFI-60 *Note Bit-Twiddling:: | - | - * SRFI-61 *Note Guarded COND Clause:: | + * SRFI-60 *Note Bit-Twiddling:: + + * SRFI-61 *Note Guarded COND Clause:: File: slib.info, Node: SRFI-1, Prev: SRFI, Up: SRFI - | + 7.4.13.1 SRFI-1 ............... @@ -15006,7 +15227,7 @@ its list arguments. File: slib.info, Node: Session Support, Next: System Interface, Prev: Standards Support, Up: Other Packages - | + 7.5 Session Support =================== @@ -15593,10 +15814,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 3a3, released February 2006. | + SLIB 3a4, released October 2006. | Aubrey Jaffer <agj @ alum.mit.edu> - Hyperactive Software - The Maniac Inside! - `http://swiss.csail.mit.edu/~jaffer/SLIB.html' + | + Current information about SLIB can be found on SLIB's "WWW" home page: | + | + `http://swiss.csail.mit.edu/~jaffer/SLIB' | * Menu: @@ -15976,6 +16199,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:: | + | * 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. @@ -15988,16 +16216,449 @@ File: slib.info, Node: About this manual, Prev: Copyrights, Up: About SLIB package. +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. | + | + +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 | + 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. | + | + File: slib.info, Node: Index, Prev: About SLIB, Up: Top - + | Index ***** Procedure and Macro Index ************************* - -This is an alphabetical list of all the procedures and macros in SLIB. - + | * Menu: @@ -16032,6 +16693,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * a:flor32b: Arrays. (line 173) * a:flor64b: Arrays. (line 169) * abort: Session Support. (line 9) +* abs: Irrational Real Functions. | + (line 86) | * absolute-path?: URI. (line 102) * absolute-uri?: URI. (line 98) * add-command-tables: Database Extension. (line 11) @@ -16054,8 +16717,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * alist-map: Association Lists. (line 48) * alist-remover: Association Lists. (line 39) * alist-table: The Base. (line 12) -* and-let*: Guarded LET* special form. | - (line 9) | +* and-let*: Guarded LET* special form. + (line 9) * and?: Non-List functions. (line 7) * any: SRFI-1. (line 156) * any-bits-set?: Bit-Twiddling. (line 64) @@ -16078,12 +16741,14 @@ This is an alphabetical list of all the procedures and macros in SLIB. * array-rank: Arrays. (line 44) * array-ref: Arrays. (line 136) * array-set!: Arrays. (line 139) -* array-trim: Subarrays. (line 44) +* array-trim: Subarrays. (line 48) | * array:copy!: Array Mapping. (line 50) * 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) | * atom?: Non-List functions. (line 30) * batch:call-with-output-script: Batch. (line 47) * batch:command: Batch. (line 64) @@ -16098,9 +16763,9 @@ This is an alphabetical list of all the procedures and macros in SLIB. * bit-count: Bit-Twiddling. (line 74) * bit-field: Bit-Twiddling. (line 156) * bit-set?: Bit-Twiddling. (line 135) -* bitwise-and: Bit-Twiddling. (line 19) | +* bitwise-and: Bit-Twiddling. (line 19) * bitwise-if: Bit-Twiddling. (line 56) -* bitwise-ior: Bit-Twiddling. (line 28) | +* bitwise-ior: Bit-Twiddling. (line 28) * bitwise-merge: Bit-Twiddling. (line 57) * bitwise-not: Bit-Twiddling. (line 46) * bitwise-xor: Bit-Twiddling. (line 37) @@ -16120,7 +16785,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. * byte-set!: Byte. (line 18) * bytes: Byte. (line 32) * bytes->ieee-double: Byte/Number Conversions. - (line 60) | + (line 60) * bytes->ieee-float: Byte/Number Conversions. (line 41) * bytes->integer: Byte/Number Conversions. @@ -16128,8 +16793,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * bytes->list: Byte. (line 36) * bytes-copy: Byte. (line 47) * bytes-length: Byte. (line 29) -* bytes-reverse: Byte. (line 53) -* bytes-reverse!: Byte. (line 50) +* 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) @@ -16224,8 +16889,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * command:modify-table: HTML Tables. (line 87) * concatenate: SRFI-1. (line 90) * concatenate!: SRFI-1. (line 91) -* cond: Guarded COND Clause. (line 11) | -* cond-expand: SRFI. (line 12) | +* cond: Guarded COND Clause. (line 11) +* cond-expand: SRFI. (line 12) * cons*: SRFI-1. (line 22) * continue: Breakpoints. (line 20) * convert-color: Color Data-Type. (line 54) @@ -16251,10 +16916,10 @@ This is an alphabetical list of all the procedures and macros in SLIB. * ctime: Posix Time. (line 68) * current-directory: Directories. (line 9) * current-error-port: Input/Output. (line 70) -* current-input-port <1>: Byte. (line 74) +* current-input-port <1>: Byte. (line 84) | * current-input-port: Ruleset Definition and Use. (line 57) -* current-output-port: Byte. (line 66) +* current-output-port: Byte. (line 76) | * current-time: Time and Date. (line 20) * cvs-directories: CVS. (line 14) * cvs-files: CVS. (line 9) @@ -16274,7 +16939,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. * define-macro: Within-database. (line 58) * define-operation: Yasos interface. (line 7) * define-predicate: Yasos interface. (line 12) -* define-record-type: Define-Record-Type. (line 12) | +* define-record-type: Define-Record-Type. (line 12) * define-structure: Define-Structure. (line 12) * define-syntax: Macro by Example. (line 39) * define-table: Within-database. (line 26) @@ -16285,7 +16950,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. * defmacro:load: Defmacro. (line 19) * defmacro?: Defmacro. (line 27) * delaminate-list: Hilbert Space-Filling Curve. - (line 89) | + (line 89) * delay: Promises. (line 15) * delete: Destructive list operations. (line 58) @@ -16305,6 +16970,10 @@ This is an alphabetical list of all the procedures and macros in SLIB. * 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) | * diff:edit-length: Sequence Comparison. (line 64) * diff:edits: Sequence Comparison. (line 45) * diff:longest-common-subsequence: Sequence Comparison. (line 32) @@ -16338,17 +17007,17 @@ This is an alphabetical list of all the procedures and macros in SLIB. * exports<-info-index: Top-level Variable References. (line 35) * expt: Miscellany. (line 20) -* extended-euclid: Modular Arithmetic. (line 28) +* 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: Fast Fourier Transform. - (line 9) -* fft-1: Fast Fourier Transform. - (line 14) +* 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) @@ -16491,17 +17160,17 @@ This is an alphabetical list of all the procedures and macros in SLIB. * identifier?: Syntactic Closures. (line 334) * identity: Miscellany. (line 9) * ieee-byte-collate: Byte/Number Conversions. - (line 151) | + (line 151) * ieee-byte-collate!: Byte/Number Conversions. - (line 142) | + (line 142) * ieee-byte-decollate: Byte/Number Conversions. - (line 155) | + (line 155) * ieee-byte-decollate!: Byte/Number Conversions. - (line 147) | + (line 147) * ieee-double->bytes: Byte/Number Conversions. - (line 97) | + (line 97) * ieee-float->bytes: Byte/Number Conversions. - (line 79) | + (line 79) * illuminant-map: Spectra. (line 77) * illuminant-map->XYZ: Spectra. (line 82) * implementation-vicinity: Vicinity. (line 42) @@ -16516,15 +17185,21 @@ This is an alphabetical list of all the procedures and macros in SLIB. (line 30) * integer->list: Bit-Twiddling. (line 215) * integer->peano-coordinates: Peano Space-Filling Curve. - (line 19) | + (line 19) * integer-byte-collate: Byte/Number Conversions. - (line 136) | + (line 136) * integer-byte-collate!: Byte/Number Conversions. - (line 130) | + (line 130) +* integer-expt: Irrational Integer Functions. | + (line 9) | * integer-length: Bit-Twiddling. (line 88) -* integer-sqrt: Root Finding. (line 9) | +* integer-log: Irrational Integer Functions. | + (line 18) | +* integer-sqrt <1>: Root Finding. (line 9) | +* integer-sqrt: Irrational Integer Functions. | + (line 23) | * interaction-environment: Eval. (line 51) -* interpolate-array-ref: Array Interpolation. (line 9) | +* interpolate-array-ref: Array Interpolation. (line 9) * interpolate-from-table: Database Interpolation. (line 13) * intersection: Lists as sets. (line 32) @@ -16559,7 +17234,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. * light:directional: Solid Modeling. (line 122) * light:point: Solid Modeling. (line 158) * light:spot: Solid Modeling. (line 176) -* limit: The Limit. (line 7) | +* limit: The Limit. (line 7) * list*: List construction. (line 18) * list->array: Arrays. (line 88) * list->bytes: Byte. (line 40) @@ -16572,6 +17247,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * list-tail: Rev4 Optional Procedures. (line 12) * list=: SRFI-1. (line 48) +* ln: Irrational Real Functions. | + (line 77) | * load->path: Module Manifests. (line 63) * load-ciexyz: Spectra. (line 37) * load-color-dictionary: Color Names. (line 52) @@ -16640,6 +17317,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. (line 17) * make-object: Object. (line 46) * make-parameter-list: Parameter lists. (line 23) +* make-polar: Irrational Real Functions. | + (line 94) | * make-predicate!: Object. (line 72) * make-prever on base-table: Base ISAM Operations. (line 25) @@ -16651,6 +17330,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * make-random-state: Exact Random Numbers. (line 44) * make-record-type: Records. (line 12) +* make-rectangular: Irrational Real Functions. | + (line 93) | * make-relational-system: Relational Database Objects. (line 11) * make-ruleset: Commutative Rings. (line 82) @@ -16679,29 +17360,30 @@ This is an alphabetical list of all the procedures and macros in SLIB. * mdbm:report: Using Databases. (line 94) * member: SRFI-1. (line 160) * member-if: Lists as sets. (line 62) -* merge: Sorting. (line 97) -* merge!: Sorting. (line 106) +* merge: Sorting. (line 126) | +* merge!: Sorting. (line 131) | * mktime: Posix Time. (line 54) -* mod: Modular Arithmetic. (line 9) -* modular:*: Modular Arithmetic. (line 77) -* modular:+: Modular Arithmetic. (line 71) -* modular:-: Modular Arithmetic. (line 74) -* modular:expt: Modular Arithmetic. (line 83) -* modular:invert: Modular Arithmetic. (line 64) -* modular:invertable?: Modular Arithmetic. (line 60) -* modular:negate: Modular Arithmetic. (line 68) -* modular:normalize: Modular Arithmetic. (line 39) -* modulus->integer: Modular Arithmetic. (line 35) +* 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) * must-be-first: Batch. (line 128) * must-be-last: Batch. (line 133) -* natural->peano-coordinates: Peano Space-Filling Curve. | - (line 9) | +* natural->peano-coordinates: Peano Space-Filling Curve. + (line 9) * ncbi:read-dna-sequence: NCBI-DNA. (line 7) * ncbi:read-file: NCBI-DNA. (line 11) * nconc: Destructive list operations. (line 10) -* newton:find-integer-root: Root Finding. (line 13) | +* newton:find-integer-root: Root Finding. (line 13) * newton:find-root: Root Finding. (line 30) * ninth: SRFI-1. (line 65) * not-pair?: SRFI-1. (line 46) @@ -16726,7 +17408,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. * open-database on relational-system: Relational Database Objects. (line 45) * open-database!: Using Databases. (line 68) -* open-file <1>: Byte. (line 57) +* 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) @@ -16756,9 +17438,9 @@ This is an alphabetical list of all the procedures and macros in SLIB. * path->uri: URI. (line 95) * pathname->vicinity: Vicinity. (line 25) * peano-coordinates->integer: Peano Space-Filling Curve. - (line 25) | -* peano-coordinates->natural: Peano Space-Filling Curve. | - (line 15) | + (line 25) +* peano-coordinates->natural: Peano Space-Filling Curve. + (line 15) * plot <1>: Legacy Plotting. (line 11) * plot: Character Plotting. (line 17) * plot-column: Drawing the Graph. (line 7) @@ -16832,6 +17514,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * queue-push!: Queues. (line 22) * queue-rear: Queues. (line 42) * queue?: Queues. (line 16) +* quo: Irrational Real Functions. | + (line 50) | * random: Exact Random Numbers. (line 9) * random:exp: Inexact Random Numbers. @@ -16847,16 +17531,38 @@ This is an alphabetical list of all the procedures and macros in SLIB. * random:uniform: Inexact Random Numbers. (line 9) * rationalize: Rationalize. (line 9) -* read-byte: Byte. (line 69) -* read-bytes: Byte. (line 87) +* 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) -* receive: Binding to multiple values. | - (line 9) | +* 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) * record-constructor: Records. (line 22) * record-modifier: Records. (line 50) @@ -16866,7 +17572,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * reduce: Collections. (line 71) * reduce-init: Lists as sequences. (line 61) * reduce-right: SRFI-1. (line 120) -* rem: Modular Arithmetic. (line 10) +* rem: Irrational Real Functions. | + (line 51) | * remove <1>: SRFI-1. (line 135) * remove: Lists as sets. (line 153) * remove!: SRFI-1. (line 139) @@ -16881,7 +17588,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. * require <1>: Catalog Creation. (line 48) * require: Require. (line 25) * require-if: Require. (line 40) -* resample-array!: Array Interpolation. (line 19) | +* resample-array!: Array Interpolation. (line 19) * resene: Color Names. (line 129) * restrict-table on relational-database: Database Operations. (line 77) * reverse!: SRFI-1. (line 93) @@ -16943,6 +17650,10 @@ This is an alphabetical list of all the procedures and macros in SLIB. * 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) | * si:conversion-factor: Metric Units. (line 160) * singleton-wt-tree: Construction of Weight-Balanced Trees. (line 58) @@ -16966,33 +17677,35 @@ This is an alphabetical list of all the procedures and macros in SLIB. * solar-declination: Daylight. (line 21) * solar-hour: Daylight. (line 14) * solar-polar: Daylight. (line 23) -* solid:arrow: Solid Modeling. (line 399) -* solid:basrelief: Solid Modeling. (line 271) +* 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 390) -* solid:center-pile-of: Solid Modeling. (line 395) -* solid:center-row-of: Solid Modeling. (line 386) -* solid:color: Solid Modeling. (line 313) -* solid:cone: Solid Modeling. (line 230) -* solid:cylinder: Solid Modeling. (line 215) -* solid:disk: Solid Modeling. (line 223) -* solid:ellipsoid: Solid Modeling. (line 248) -* solid:font: Solid Modeling. (line 351) -* solid:polyline: Solid Modeling. (line 257) -* solid:pyramid: Solid Modeling. (line 236) -* solid:rotation: Solid Modeling. (line 418) -* solid:scale: Solid Modeling. (line 414) -* solid:sphere: Solid Modeling. (line 242) -* solid:text: Solid Modeling. (line 294) -* solid:texture: Solid Modeling. (line 330) -* solid:translation: Solid Modeling. (line 409) +* 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 119) -* sort!: Sorting. (line 126) -* sorted?: Sorting. (line 88) +* sort: Sorting. (line 138) | +* sort!: Sorting. (line 148) | +* sorted?: Sorting. (line 116) | * soundex: Soundex. (line 9) * span: SRFI-1. (line 148) * span!: SRFI-1. (line 150) @@ -17033,15 +17746,16 @@ This is an alphabetical list of all the procedures and macros in SLIB. * 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) | * 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-read!: Byte. (line 112) -* substring-write: Byte. (line 121) +* substring-move-right!: Rev2 Procedures. (line 14) | * substring?: String Search. (line 19) * substv: Tree Operations. (line 13) * sunlight-chromaticity: Daylight. (line 65) @@ -17049,7 +17763,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. * 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 32) +* 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) @@ -17149,8 +17863,8 @@ This is an alphabetical list of all the procedures and macros in SLIB. * 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 62) -* write-bytes: Byte. (line 98) +* 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) @@ -17207,7 +17921,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. * wt-tree/union: Advanced Operations on Weight-Balanced Trees. (line 25) * x-axis: Legending. (line 51) -* x1: Legacy Plotting. (line 18) | +* x1: Legacy Plotting. (line 18) * xcons: SRFI-1. (line 15) * xRGB->CIEXYZ: Color Conversions. (line 51) * xrgb->color: Color Spaces. (line 215) @@ -17222,9 +17936,7 @@ This is an alphabetical list of all the procedures and macros in SLIB. Variable Index ************** - -This is an alphabetical list of all the global variables in SLIB. - + | * Menu: @@ -17270,6 +17982,8 @@ This is an alphabetical list of all the global variables in SLIB. * graph:dimensions: Legacy Plotting. (line 7) * graphrect: Rectangles. (line 26) * leftedge: Legending. (line 22) +* modulo: Irrational Integer Functions. | + (line 29) | * most-positive-fixnum: Configuration. (line 15) * nil: Miscellany. (line 70) * number-wt-type: Construction of Weight-Balanced Trees. @@ -17277,6 +17991,10 @@ This is an alphabetical list of all the global variables in SLIB. * 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) | * rightedge: Legending. (line 23) * slib:form-feed: Configuration. (line 29) * slib:tab: Configuration. (line 26) @@ -17287,8 +18005,7 @@ This is an alphabetical list of all the global variables in SLIB. * stdout: Standard Formatted I/O. (line 22) * string-wt-type: Construction of Weight-Balanced Trees. - (line 45) -* subarray0: Subarrays. (line 41) + (line 45) | * t: Miscellany. (line 67) * tok:decimal-digits: Token definition. (line 41) * tok:lower-case: Token definition. (line 48) @@ -17304,7 +18021,7 @@ Concept and Feature Index * Menu: -* =>: Guarded COND Clause. (line 21) | +* =>: Guarded COND Clause. (line 21) * aggregate <1>: Module Semantics. (line 20) * aggregate: Library Catalogs. (line 24) * alarm: Multi-Processing. (line 10) @@ -17314,10 +18031,10 @@ Concept and Feature Index (line 23) * alist-table <2>: The Base. (line 12) * alist-table: Base Table. (line 16) -* and-let*: Guarded LET* special form. | - (line 6) | +* and-let*: Guarded LET* special form. + (line 6) * ange-ftp: URI. (line 118) -* appearance: Solid Modeling. (line 320) +* appearance: Solid Modeling. (line 334) | * array: Arrays. (line 6) * array-for-each: Array Mapping. (line 6) * association function: Association Lists. (line 17) @@ -17328,7 +18045,8 @@ Concept and Feature Index * base: URI. (line 39) * base-table: Base Table. (line 6) * batch: Batch. (line 6) -* binary: Byte. (line 56) +* bignum: Feature. (line 13) | +* binary: Byte. (line 66) | * binary trees: Weight-Balanced Trees. (line 8) * binary trees, as discrete maps: Weight-Balanced Trees. @@ -17371,6 +18089,7 @@ Concept and Feature Index * commutative-ring: Commutative Rings. (line 11) * compiled: Library Catalogs. (line 21) * compiling: Module Conventions. (line 11) +* complex: Feature. (line 13) | * Coordinated Universal Time: Posix Time. (line 13) * copyright: Copyrights. (line 6) * crc: Cyclic Checksum. (line 6) @@ -17385,17 +18104,19 @@ Concept and Feature Index * db->html: HTML Tables. (line 6) * debug <1>: Breakpoints. (line 11) * debug: Debug. (line 6) -* define-record-type: Define-Record-Type. (line 6) | +* define-record-type: Define-Record-Type. (line 6) * defmacro: Library Catalogs. (line 31) * defmacroexpand <1>: Pretty-Print. (line 88) * defmacroexpand: Defmacro. (line 48) * delim: Rule Types. (line 47) * dequeues: Queues. (line 10) * determinant: Matrix Algebra. (line 6) +* dft, Fourier-transform: Discrete Fourier Transform. | + (line 6) | * diff: Sequence Comparison. (line 6) * directory: Directories. (line 6) -* Discrete Fourier Transform: Fast Fourier Transform. - (line 11) +* Discrete Fourier Transform: Discrete Fourier Transform. | + (line 18) | * discrete maps, using binary trees: Weight-Balanced Trees. (line 52) * DrScheme: Installation. (line 103) @@ -17410,11 +18131,10 @@ Concept and Feature Index * eval: Eval. (line 6) * exchanger: Miscellany. (line 31) * factor: Prime Numbers. (line 6) -* feature <1>: About this manual. (line 13) +* 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) -* fft: Fast Fourier Transform. - (line 6) +* feature: Feature. (line 6) | * File Transfer Protocol: URI. (line 113) * file-lock: Transactions. (line 32) * filename: Filenames. (line 6) @@ -17434,7 +18154,7 @@ Concept and Feature Index * glob: Filenames. (line 6) * Gray code: Hilbert Space-Filling Curve. (line 52) -* guarded-cond-clause: Guarded COND Clause. (line 6) | +* guarded-cond-clause: Guarded COND Clause. (line 6) * Guile: Installation. (line 119) * hash: Hashing. (line 6) * hash-table: Hash Tables. (line 6) @@ -17454,7 +18174,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) | + (line 127) +* inexact: Feature. (line 13) | * infix: Rule Types. (line 19) * Info: Top-level Variable References. (line 32) @@ -17493,6 +18214,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) | * matlab: MAT-File Format. (line 6) * metric-units: Metric Units. (line 6) * minimize: Minimizing. (line 6) @@ -17527,8 +18252,8 @@ Concept and Feature Index (line 22) * pbm-raw: Portable Image Files. (line 22) -* peano-fill: Peano Space-Filling Curve. | - (line 6) | +* peano-fill: Peano Space-Filling Curve. + (line 6) * pgm: Portable Image Files. (line 26) * pgm-raw: Portable Image Files. @@ -17576,10 +18301,12 @@ Concept and Feature Index * random-inexact: Inexact Random Numbers. (line 6) * range: Column Ranges. (line 6) +* rational: Feature. (line 13) | * rationalize: Rationalize. (line 6) * read-command: Command Line. (line 6) -* receive: Binding to multiple values. | - (line 6) | +* real: Feature. (line 13) | +* receive: Binding to multiple values. + (line 6) * record: Records. (line 6) * rectangle: Rectangles. (line 6) * relational-database: Relational Database. (line 6) @@ -17635,12 +18362,22 @@ Concept and Feature Index * srfi: SRFI. (line 6) * SRFI-1: SRFI-1. (line 8) * srfi-1: SRFI-1. (line 6) -* srfi-2: Guarded LET* special form. | - (line 6) | -* srfi-61: Guarded COND Clause. (line 6) | -* srfi-8: Binding to multiple values. | - (line 6) | -* srfi-9: Define-Record-Type. (line 6) | +* 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-61: Guarded COND Clause. (line 6) +* srfi-63: SRFI. (line 41) | +* srfi-8 <1>: SRFI. (line 33) | +* srfi-8: Binding to multiple values. + (line 6) +* srfi-9 <1>: SRFI. (line 35) | +* srfi-9: Define-Record-Type. (line 6) * sRGB: Color Spaces. (line 189) * stdio: Standard Formatted I/O. (line 14) @@ -17650,7 +18387,7 @@ Concept and Feature Index * subarray: Subarrays. (line 6) * sun: Daylight. (line 6) * sunlight: Daylight. (line 6) -* symmetric: Modular Arithmetic. (line 54) +* symmetric: Modular Arithmetic. (line 38) | * syntactic-closures <1>: Syntactic Closures. (line 6) * syntactic-closures: Library Catalogs. (line 46) * syntax tree: Precedence Parsing Overview. @@ -17706,238 +18443,242 @@ Concept and Feature Index Tag Table: -Node: Top1038 -Node: The Library System1818 -Node: Feature2115 -Ref: Feature-Footnote-14358 -Node: Require4694 -Node: Library Catalogs7107 -Node: Catalog Creation8538 -Node: Catalog Vicinities10959 -Node: Compiling Scheme13719 -Node: Module Conventions14369 -Ref: Module Conventions-Footnote-115790 -Node: Module Manifests16040 -Node: Module Semantics21512 -Node: Top-level Variable References23130 -Ref: Top-level Variable References-Footnote-125205 -Node: Module Analysis25530 -Node: Universal SLIB Procedures26635 -Node: Vicinity27250 -Node: Configuration31105 -Node: Input/Output34071 -Node: System37476 -Node: Miscellany40627 -Node: Scheme Syntax Extension Packages42714 -Node: Defmacro43747 -Node: R4RS Macros45723 -Node: Macro by Example46987 -Node: Macros That Work49885 -Node: Syntactic Closures55879 -Node: Syntax-Case Macros73407 -Node: Define-Structure77338 -Node: Define-Record-Type79393 -Node: Fluid-Let80880 -Node: Binding to multiple values81995 -Node: Guarded LET* special form82859 -Node: Guarded COND Clause83733 -Node: Yasos87706 -Node: Yasos terms88735 -Node: Yasos interface89907 -Node: Setters92129 -Node: Yasos examples94918 -Node: Textual Conversion Packages98004 -Node: Precedence Parsing98805 -Node: Precedence Parsing Overview99490 -Ref: Precedence Parsing Overview-Footnote-195777 -Node: Rule Types101126 -Node: Ruleset Definition and Use102581 -Node: Token definition104965 -Node: Nud and Led Definition107573 -Node: Grammar Rule Definition110034 -Node: Format117630 -Node: Format Interface117885 -Node: Format Specification119635 -Node: Standard Formatted I/O130580 -Node: Standard Formatted Output131168 -Node: Standard Formatted Input140626 -Node: Programs and Arguments147303 -Node: Getopt147811 -Node: Command Line154358 -Node: Parameter lists157556 -Node: Getopt Parameter lists161462 -Node: Filenames164703 -Node: Batch168613 -Node: HTML176437 -Node: HTML Tables182879 -Node: HTTP and CGI189411 -Node: Parsing HTML193960 -Node: URI196467 -Node: Printing Scheme201139 -Node: Generic-Write201458 -Node: Object-To-String202874 -Node: Pretty-Print203293 -Node: Time and Date206278 -Node: Time Zone207335 -Node: Posix Time212077 -Node: Common-Lisp Time214245 -Node: Time Infrastructure215871 -Node: NCBI-DNA216222 -Node: Schmooz217570 -Node: Mathematical Packages221806 -Node: Bit-Twiddling222539 -Node: Modular Arithmetic230610 -Node: Prime Numbers233491 -Node: Random Numbers235188 -Node: Exact Random Numbers236026 -Node: Inexact Random Numbers238298 -Node: Fast Fourier Transform240132 -Node: Cyclic Checksum241044 -Node: Graphing248670 -Node: Character Plotting248865 -Node: PostScript Graphing254377 -Node: Column Ranges256156 -Node: Drawing the Graph257635 -Node: Graphics Context258730 -Node: Rectangles260549 -Node: Legending261996 -Node: Legacy Plotting264225 -Node: Example Graph265438 -Node: Solid Modeling269805 -Node: Color288722 -Node: Color Data-Type289556 -Ref: Color Data-Type-Footnote-1288023 -Node: Color Spaces293941 -Ref: Color Spaces-Footnote-1298022 -Node: Spectra303858 -Node: Color Difference Metrics312621 -Node: Color Conversions315301 -Node: Color Names317443 -Node: Daylight324377 -Node: Root Finding329064 -Node: Minimizing333343 -Ref: Minimizing-Footnote-1329543 -Node: The Limit335464 -Node: Commutative Rings343411 -Node: Matrix Algebra355056 -Node: Database Packages356262 -Node: Relational Database356545 -Node: Using Databases357412 -Node: Table Operations363918 -Node: Single Row Operations365129 -Node: Match-Keys367372 -Node: Multi-Row Operations369451 -Node: Indexed Sequential Access Methods371842 -Node: Sequential Index Operations372850 -Node: Table Administration375206 -Node: Database Interpolation376073 -Node: Embedded Commands377175 -Node: Database Extension378749 -Node: Command Intrinsics380874 -Node: Define-tables Example382436 -Node: The *commands* Table384086 -Node: Command Service386364 -Node: Command Example388326 -Node: Database Macros392879 -Node: Within-database393764 -Node: Within-database Example396671 -Node: Database Browser398458 -Node: Relational Infrastructure399534 -Node: Base Table399838 -Node: The Base402346 -Node: Base Tables405464 -Node: Base Field Types406940 -Node: Composite Keys407723 -Node: Base Record Operations409777 -Node: Match Keys411505 -Node: Aggregate Base Operations412386 -Node: Base ISAM Operations413451 -Node: Catalog Representation414769 -Node: Relational Database Objects417438 -Node: Database Operations420082 -Node: Weight-Balanced Trees423791 -Node: Construction of Weight-Balanced Trees427677 -Node: Basic Operations on Weight-Balanced Trees431143 -Node: Advanced Operations on Weight-Balanced Trees434010 -Node: Indexing Operations on Weight-Balanced Trees440051 -Node: Other Packages443892 -Node: Data Structures444421 -Node: Arrays445291 -Node: Subarrays453978 -Node: Array Mapping456083 -Node: Array Interpolation458572 -Node: Association Lists461008 -Node: Byte463419 -Node: Byte/Number Conversions468737 -Node: MAT-File Format476441 -Node: Portable Image Files477778 -Node: Collections479461 -Node: Dynamic Data Type485715 -Node: Hash Tables487049 -Node: Object489698 -Node: Priority Queues498377 -Node: Queues499289 -Node: Records500600 -Node: Sorting and Searching504175 -Node: Common List Functions504868 -Node: List construction505325 -Node: Lists as sets507040 -Node: Lists as sequences513578 -Node: Destructive list operations518805 -Node: Non-List functions521483 -Node: Tree Operations522572 -Node: Chapter Ordering524265 -Node: Sorting525912 -Node: Topological Sort531753 -Node: Hashing533461 -Node: Space-Filling Curves534478 -Node: Hilbert Space-Filling Curve534782 -Node: Peano Space-Filling Curve538751 -Node: Sierpinski Curve540450 -Node: Soundex542914 -Node: String Search544512 -Node: Sequence Comparison547085 -Node: Procedures550215 -Node: Type Coercion550743 -Node: String-Case551175 -Node: String Ports553002 -Node: Line I/O553774 -Node: Multi-Processing555954 -Node: Metric Units557072 -Node: Standards Support565351 -Node: RnRS566147 -Node: With-File567370 -Node: Transcripts567646 -Node: Rev2 Procedures567980 -Node: Rev4 Optional Procedures569713 -Node: Multi-argument / and -570182 -Node: Multi-argument Apply570592 -Node: Rationalize570929 -Node: Promises572091 -Node: Dynamic-Wind572537 -Node: Eval573805 -Node: Values577150 -Node: SRFI577965 -Node: SRFI-1580198 -Node: Session Support584837 -Node: Repl585490 -Node: Quick Print586786 -Node: Debug588092 -Node: Breakpoints588999 -Node: Trace591041 -Node: System Interface594267 -Node: Directories594838 -Node: Transactions596331 -Node: CVS601842 -Node: Extra-SLIB Packages603009 -Node: About SLIB605318 -Node: Installation606070 -Node: The SLIB script611962 -Node: Porting612425 -Ref: Porting-Footnote-1599966 -Node: Coding Guidelines613989 -Node: Copyrights616403 -Node: About this manual619772 -Node: Index620323 +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 End Tag Table |