summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:34 -0800
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:34 -0800
commit237c6e380aebdcbc70bd1c9ecf7d3f6effca2752 (patch)
tree9832fbdd6fbeedf3fc7f0e7923fe20b7d35b1499
parent5145dd3aa0c02c9fc496d1432fc4410674206e1d (diff)
downloadslib-237c6e380aebdcbc70bd1c9ecf7d3f6effca2752.tar.gz
slib-237c6e380aebdcbc70bd1c9ecf7d3f6effca2752.zip
Import Upstream version 3a3upstream/3a3
-rw-r--r--ANNOUNCE155
-rw-r--r--ChangeLog113
-rw-r--r--DrScheme.init30
-rw-r--r--FAQ4
-rw-r--r--Makefile22
-rw-r--r--README4
-rw-r--r--RScheme.init42
-rw-r--r--STk.init30
-rw-r--r--Template.scm44
-rw-r--r--alistab.scm2
-rw-r--r--batch.scm8
-rw-r--r--bigloo.init38
-rw-r--r--bytenumb.scm45
-rw-r--r--bytenumb.txi25
-rw-r--r--chez.init36
-rw-r--r--db2html.scm2
-rw-r--r--dirs.scm16
-rw-r--r--elk.init42
-rw-r--r--gambit.init58
-rw-r--r--grapheps.scm53
-rw-r--r--grapheps.txi5
-rw-r--r--guile.init110
-rw-r--r--http-cgi.scm6
-rw-r--r--jscheme.init39
-rw-r--r--limit.scm129
-rw-r--r--limit.texi100
-rw-r--r--lineio.scm5
-rw-r--r--lineio.txi5
-rw-r--r--linterp.scm90
-rw-r--r--linterp.txi36
-rw-r--r--macscheme.init28
-rw-r--r--matfile.scm7
-rw-r--r--mitscheme.init30
-rw-r--r--mkclrnam.scm2
-rw-r--r--mklibcat.scm9
-rw-r--r--peanosfc.scm51
-rw-r--r--peanosfc.txi24
-rw-r--r--phil-spc.scm77
-rw-r--r--phil-spc.txi28
-rw-r--r--prec.scm2
-rw-r--r--pscheme.init26
-rw-r--r--require.scm10
-rw-r--r--root.scm28
-rw-r--r--scheme2c.init46
-rw-r--r--scheme48.init30
-rw-r--r--scsh.init30
-rw-r--r--slib.info10142
-rw-r--r--slib.spec106
-rw-r--r--slib.texi218
-rw-r--r--srfi-2.txi9
-rw-r--r--srfi-61.scm49
-rw-r--r--srfi-8.txi9
-rw-r--r--srfi.scm9
-rw-r--r--srfi.txi9
-rw-r--r--t3.init26
-rw-r--r--top-refs.scm8
-rw-r--r--transact.scm22
-rw-r--r--umbscheme.init44
-rw-r--r--version.txi4
-rw-r--r--vscm.init42
60 files changed, 6680 insertions, 5739 deletions
diff --git a/ANNOUNCE b/ANNOUNCE
index ec4e57b..b30a287 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,84 +1,99 @@
-This message announces the availability of Scheme Library release slib3a2.
+This message announces the availability of Scheme Library release slib3a3.
-It has been too long since the last release. Many bugs have been
-fixed; and support for several implementations (especially Guile,
-Scheme48) has been significantly improved. New in slib3a2:
-
- peanosfc.scm: Peano space filling curve.
-
- logical.scm: (logand, logior, logxor): Take one or more arguments.
- Refactored to match SRFI-60.
-
- All uses of CREATE-ARRAY replaced by MAKE-ARRAY (SRFI-63).
- All uses of ARRAY-SHAPE replaced with ARRAY-DIMENSIONS (SRFI-63).
-
- * subarray.scm (subarray, array-trim): Rewrote for all arrays being
- 0-based.
-
- * arraymap.scm (array-map!, array-for-each, array-index-map!):
- Use of ARRAY-DIMENSIONS replaces use of ARRAY-SHAPE.
- (make-shared-array): converted.
-
- * array.scm: Made compatible with SRFI-63.
- (equal?): Replaces array=?.
-
- pnm.scm: Finished implementation; handles 16-bit color.
-
- * colorspc.scm (read-normalized-illuminant, illuminant-map)
- (illuminant-map->XYZ): Added.
- (wavelength->CIEXYZ, XYZ:normalize, XYZ:normalize-colors)
- (temperature->CIEXYZ, spectrum->CIEXYZ, wavelength->CIEXYZ):
- Removed; use chromaticity functions instead.
- (read-cie-illuminant): Added.
-
- * ciesia.dat: Added CIE Standard Illuminant A relative spectral
- power distribution 300 nm - 830 nm at 5 nm intervals.
-
- * ciesid65.dat: Added CIE Standard Illuminant D65 relative
- spectral power distribution 300 nm - 830 nm at 5 nm intervals.
-
- * daylight.scm (sunlight-chromaticity): Replaces sunlight-CIEXYZ.
-
- * solid.scm (scene:sun, scene:overcast): Use chromaticity to
- normalize XYZ values.
- (solid:polyline): Added.
- (solid:cylinder): Negative radius for invisible side.
+SLIB is a portable Scheme library providing compatibiliy and utility
+functions for all standard Scheme implementations.
- * format.scm: Made reentrant; restored. Call slib:error for errors.
+SLIB supports the Bigloo, Chez, DrScheme, ELK, GAMBIT, Jscheme,
+MacScheme, MITScheme, PocketScheme, RScheme, Scheme->C, Scheme48, SCM,
+SCSH, T3.1, UMB-Scheme, and VSCM implementations.
- * dbutil.scm (close-database): Don't lock immutable dbs.
+SLIB is free software. It has a Permissive-Non-Warranty license
+(http://www.swiss.ai.mit.edu/~jaffer/SLIB_COPYING.txt).
- * transact.scm (word-lock:certificate): Test file's existence
- before OPEN-FILE.
+Documentation and distributions in several formats are linked from
+SLIB's home page:
- vet.scm (vet-slib): Accept file arguments to include in vetting.
+ http://swissnet.ai.mit.edu/~jaffer/SLIB.html
- * vscm.init, umbscheme.init, scsh.init, macscheme.init,
- guile.init, gambit.init, elk.init, chez.init, STk.init,
- RScheme.init, Template.scm, pscheme.init, t3.init, scheme48.init,
- scheme2c.init, s48-0_57.init, mitscheme.init, bigloo.init
- (*features*): Regularized order and content.
+Links to distributions of SLIB and related softwares are at the end of
+this message.
-=-=-
+slib3a3 news:
+
+Multi-dimensional linear interpolation and resampling of arrays are
+added. Case-folding of symbols is removed from SLIB. It should work
+with implementations which are case-sensitive when reading symbols.
+
+ * grapheps.scm (graph:plot): Plot multiple traces from array.
+ (functions->array): Generalizes graph:plot-function.
+
+ * root.scm (integer-sqrt): Changed to algorithm attributed to
+ Bradley Lucier by Steve VanDevender.
+ * slib.texi (Root Finding): integer-sqrt changed to floor of sqrt.
+
+ * linterp.scm (interpolate-array-ref, resample-array!): Added.
+
+ * bytenumb.scm (bytes->ieee-float, bytes->ieee-double)
+ (ieee-float->bytes, ieee-double->bytes): Fixed for -0.0.
+ * bytenumb.scm (ieee-float->bytes, ieee-double->bytes): Handle 0/0
+ in srfi-70 arithmetic.
+
+ * guile.init (slib:load, slib:load-from-path): Adapted patch from
+ Thomas Bushnell BSG for loading into SLIB module.
+ * guile.init (home-vicinity): Check for getenv first.
+ (*features*): Fixed array, system, etc.
+ (system->line): Fixed return status (thanks to Rob Browning).
+ (guile:wrap-case-insensitive): Removed; sources now case clean.
+ * guile.init (system->line): Added features line-i/o and hash.
+ (implementation-vicinity): Fixed to parent directory of ice-9.
+ * guile.init (sub-vicinity): Downcased software-type symbols.
+
+ * dirs.scm, transact.scm, batch.scm, prec.scm,
+ Template.scm, *.init: Downcased all software-type symbols.
+ * require.scm, mklibcat.scm, mkclrnam.scm, alistab.scm, Makefile:
+ Downcased *slib-version* symbol.
+
+ * top-refs.scm (top-refs:expression): Check for lists before
+ walking CASE and COND clauses (srfi-61.scm macro broke it).
+
+ * http-cgi.scm (query-alist->parameter-list): Fixed order of nary
+ fields.
+ * http-cgi.scm (http:status-line): Changed to HTTP-1.0; works
+ better in MS-Windows.
+ * db2html.scm (command:make-editable-table): Boolean "arity".
+
+ * peanosfc.scm (peano-coordinates->natural)
+ (natural->peano-coordinates): Non-negative versions.
+ * phil-spc.scm (hilbert-coordinates->integer): nbits calculation
+ was missing (incorrectly used rank).
+ (bitwise-laminate, bitwise-delaminate): Removed unused functions.
+
+ * slib.texi (SRFI): Added table mapping SRFI to feature.
+ (Scheme Syntax Extension Packages): Moved most SRFIs here.
+ * srfi.scm: Removed comments about copyright.
+ * mklibcat.scm (and-let*, receive, define-record-type)
+ (guarded-cond-clause): Added aliases for srfi-2, srfi-8, srfi-9,
+ and srfi-61.
+ * Makefile (srfiles): Most srfi-* moved from txiscms.
+ (srfiles): Added srfi-61.
+
+ * slib.spec: Updated from RedHat version from Jindrich Novy.
+ * slib.spec (%post): Commented out install-info.
+ * slib.spec (install): Make slib executable.
+ * slib.spec: Fixed for rpmbuild version 4.3.1
+ * Makefile (rpm): Program name changed to rpmbuild.
+
+From: Ivan Shmakov
+ * srfi-61.scm (cond): Added extension.
-SLIB is a portable Scheme library providing compatibiliy and utility
-functions for all standard Scheme implementations.
-
-SLIB includes initialization files for Bigloo, Chez, DrScheme, ELK,
-GAMBIT, Jscheme, MacScheme, MITScheme, PocketScheme, RScheme,
-Scheme->C, Scheme48, SCM, SCSH, T3.1, UMB-Scheme, and VSCM.
-
-Documentation includes a manifest, installation instructions, and
-coding guidelines for the library. Documentation of each library
-package is supplied. SLIB Documentation is online at:
-
- http://swissnet.ai.mit.edu/~jaffer/SLIB.html
+ -=-=-
SLIB is available from:
- http://swissnet.ai.mit.edu/ftpdir/scm/slib3a2.zip
- http://swissnet.ai.mit.edu/ftpdir/scm/slib-3a2-1.noarch.rpm
- swissnet.ai.mit.edu:/pub/scm/slib3a2.zip
- swissnet.ai.mit.edu:/pub/scm/slib-3a2-1.noarch.rpm
+ http://swissnet.ai.mit.edu/ftpdir/scm/slib3a3.zip
+ http://swissnet.ai.mit.edu/ftpdir/scm/slib-3a3-1.noarch.rpm
+ swissnet.ai.mit.edu:/pub/scm/slib3a3.zip
+ swissnet.ai.mit.edu:/pub/scm/slib-3a3-1.noarch.rpm
SLIB-PSD is a portable debugger for Scheme (requires emacs editor):
http://swissnet.ai.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz
diff --git a/ChangeLog b/ChangeLog
index b59767d..31bec12 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,116 @@
+2006-02-13 Aubrey Jaffer <jaffer@aubrey>
+
+ * require.scm (*slib-version*): Bumped from 3a2 to 3a3.
+
+2006-02-02 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * grapheps.scm (graph:plot): Plot multiple traces from array.
+ (functions->array): Generalizes graph:plot-function.
+
+2006-01-16 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * guile.init (slib:load, slib:load-from-path): Adapted patch from
+ Thomas Bushnell BSG for loading into SLIB module.
+
+ * top-refs.scm (top-refs:expression): Check for lists before
+ walking CASE and COND clauses (srfi-61.scm macro broke it).
+
+2006-01-09 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * http-cgi.scm (query-alist->parameter-list): Fixed order of nary
+ fields.
+
+2006-01-05 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * db2html.scm (command:make-editable-table): Boolean "arity".
+
+ * http-cgi.scm (http:status-line): Changed to HTTP-1.0; works
+ better in MS-Windows.
+
+2005-12-01 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * require.scm, mklibcat.scm, mkclrnam.scm, alistab.scm, Makefile:
+ Downcased *slib-version* symbol.
+
+ * guile.init (home-vicinity): Check for getenv first.
+ (*features*): Fixed array, system, etc.
+ (system->line): Fixed return status (thanks to Rob Browning).
+ (guile:wrap-case-insensitive): Removed; sources now case clean.
+
+ * dirs.scm, transact.scm, batch.scm, prec.scm,
+ Template.scm, *.init: Downcased all software-type symbols.
+
+2005-11-26 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * guile.init (system->line): Added features line-i/o and hash.
+ (implementation-vicinity): Fixed to parent directory of ice-9.
+
+2005-11-01 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * peanosfc.scm (peano-coordinates->natural)
+ (natural->peano-coordinates): Non-negative versions.
+
+2005-10-29 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * bytenumb.scm (bytes->ieee-float, bytes->ieee-double)
+ (ieee-float->bytes, ieee-double->bytes): Fixed for -0.0.
+
+2005-10-25 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * bytenumb.scm (ieee-float->bytes, ieee-double->bytes): Handle 0/0
+ in srfi-70 arithmetic.
+
+2005-10-18 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * slib.texi (SRFI): Added table mapping SRFI to feature.
+ (Scheme Syntax Extension Packages): Moved most SRFIs here.
+
+ * mklibcat.scm (and-let*, receive, define-record-type)
+ (guarded-cond-clause): Added aliases for srfi-2, srfi-8, srfi-9,
+ and srfi-61.
+
+ * srfi.scm: Removed comments about copyright.
+
+ * slib.spec (%post): Commented out install-info.
+
+ * Makefile (srfiles): Most srfi-* moved from txiscms.
+ (srfiles): Added srfi-61.
+
+2005-10-17 Ivan Shmakov
+
+ * srfi-61.scm (cond): Added extension.
+
+ * mklibcat.scm (srfi-61): Added.
+
+2005-10-16 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * slib.texi (Root Finding): integer-sqrt changed to floor of sqrt.
+
+ * root.scm (integer-sqrt): Changed to algorithm attributed to
+ Bradley Lucier by Steve VanDevender.
+
+2005-09-25 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * slib.spec: Updated from RedHat version from Jindrich Novy.
+
+ * guile.init (sub-vicinity): Downcased software-type symbols.
+
+2005-08-16 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * slib.texi (The Limit): Added.
+
+2005-08-09 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * slib.texi (Array Mapping): Added.
+
+ * linterp.scm (interpolate-array-ref, resample-array!): Added.
+
+2005-07-28 Aubrey Jaffer <agj@alum.mit.edu>
+
+ * phil-spc.scm (hilbert-coordinates->integer): nbits calculation
+ was missing (incorrectly used rank).
+ (bitwise-laminate, bitwise-delaminate): Removed unused functions.
+
2005-06-22 Aubrey Jaffer <agj@alum.mit.edu>
* slib.spec (install): Make slib executable.
diff --git a/DrScheme.init b/DrScheme.init
index 8cce2e9..ca4ec17 100644
--- a/DrScheme.init
+++ b/DrScheme.init
@@ -9,16 +9,16 @@
;@
(define (software-type)
(case (system-type)
- [(unix macosx) 'UNIX]
- [(windows) 'MS-DOS]
- [(macos) 'MACOS]
+ [(unix macosx) 'unix]
+ [(windows) 'ms-dos]
+ [(macos) 'macos]
[else (system-type)]))
;@
(define in-vicinity string-append)
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -26,12 +26,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -50,7 +50,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -60,10 +60,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
diff --git a/FAQ b/FAQ
index 38b1a53..a1ceaf6 100644
--- a/FAQ
+++ b/FAQ
@@ -1,4 +1,4 @@
-FAQ (Frequently Asked Questions and answers) for SLIB Scheme Library (slib3a2).
+FAQ (Frequently Asked Questions and answers) for SLIB Scheme Library (slib3a3).
Written by Aubrey Jaffer (http://swissnet.ai.mit.edu/~jaffer).
INTRODUCTION AND GENERAL INFORMATION
@@ -46,7 +46,7 @@ Several times a year.
[] What is the latest version?
-The version as of this writing is slib3a2. The latest documentation
+The version as of this writing is slib3a3. The latest documentation
is available online at:
http://swissnet.ai.mit.edu/~jaffer/SLIB.html
diff --git a/Makefile b/Makefile
index 9b85c33..82f6c73 100644
--- a/Makefile
+++ b/Makefile
@@ -16,8 +16,8 @@ srcdir.mk: .. Makefile
#srcdir=$(HOME)/slib/
include srcdir.mk
-VERSION = 3a2
-RELEASE = 1
+VERSION = 3a3
+RELEASE = 2
rpm_prefix=/usr/src/redhat/
prefix = /usr/local/
@@ -90,14 +90,14 @@ lfiles = sort.scm comlist.scm logical.scm
revfiles = sc4opt.scm sc4sc3.scm sc2.scm mularg.scm mulapply.scm \
trnscrpt.scm withfile.scm dynwind.scm promise.scm \
values.scm eval.scm null.scm
-afiles = charplot.scm root.scm cring.scm selfset.scm \
+afiles = charplot.scm root.scm cring.scm selfset.scm limit.scm \
timecore.scm psxtime.scm cltime.scm timezone.scm tzfile.scm
bfiles = fluidlet.scm object.scm recobj.scm yasyn.scm collect.scm collectx.scm
scfiles = r4rsyn.scm scmacro.scm synclo.scm synrul.scm synchk.scm \
repl.scm macwork.scm mwexpand.scm mwdenote.scm mwsynrul.scm
scafiles = scainit.scm scaglob.scm scamacr.scm scaoutp.scm scaexpp.scm \
structure.scm
-srfiles = srfi-9.scm
+srfiles = srfi-2.scm srfi-8.scm srfi-9.scm srfi-61.scm
efiles = record.scm dynamic.scm process.scm hash.scm \
wttree.scm wttest.scm sierpinski.scm soundex.scm simetrix.scm
rfiles = rdms.scm alistab.scm paramlst.scm \
@@ -109,28 +109,28 @@ gfiles = colorspc.scm cie1931.xyz cie1964.xyz resenecolours.txt saturate.txt \
txiscms =grapheps.scm glob.scm getparam.scm \
vet.scm top-refs.scm hashtab.scm chap.scm comparse.scm\
alist.scm ratize.scm modular.scm dirs.scm priorque.scm queue.scm\
- srfi.scm srfi-1.scm srfi-2.scm srfi-8.scm\
+ srfi.scm srfi-1.scm\
pnm.scm http-cgi.scm htmlform.scm html4each.scm db2html.scm uri.scm\
fft.scm solid.scm random.scm randinex.scm obj2str.scm ncbi-dna.scm\
minimize.scm factor.scm determ.scm daylight.scm colornam.scm\
mkclrnam.scm color.scm subarray.scm dbutil.scm array.scm transact.scm\
arraymap.scm phil-spc.scm lineio.scm differ.scm cvs.scm tree.scm\
coerce.scm byte.scm bytenumb.scm matfile.scm tsort.scm manifest.scm\
- peanosfc.scm
+ peanosfc.scm linterp.scm
txifiles =grapheps.txi glob.txi getparam.txi\
vet.txi top-refs.txi hashtab.txi chap.txi comparse.txi\
alist.txi ratize.txi modular.txi dirs.txi priorque.txi queue.txi\
- srfi.txi srfi-1.txi srfi-2.txi srfi-8.txi\
+ srfi.txi srfi-1.txi\
pnm.txi http-cgi.txi htmlform.txi html4each.txi db2html.txi uri.txi\
fft.txi solid.txi random.txi randinex.txi obj2str.txi ncbi-dna.txi\
minimize.txi factor.txi determ.txi daylight.txi colornam.txi\
mkclrnam.txi color.txi subarray.txi dbutil.txi array.txi transact.txi\
arraymap.txi phil-spc.txi lineio.txi differ.txi cvs.txi tree.txi\
coerce.txi byte.txi bytenumb.txi matfile.txi tsort.txi manifest.txi\
- peanosfc.txi
+ peanosfc.txi linterp.txi
% = `echo $(txiscms) | sed 's%.scm%.txi%g'`
-texifiles = schmooz.texi indexes.texi object.texi format.texi
+texifiles = schmooz.texi indexes.texi object.texi format.texi limit.texi
docfiles = ANNOUNCE README COPYING FAQ slib.1 slib.info slib.texi version.txi\
ChangeLog $(texifiles) $(txifiles)
mkfiles = Makefile require.scm Template.scm syncase.sh mklibcat.scm \
@@ -362,7 +362,7 @@ $(dest)slib-psd.tar.gz: psdtemp/slib
new:
echo `date -I` \ Aubrey Jaffer \ \<`whoami`@`hostname`\>> change
echo>> change
- echo \ \* require.scm \(*SLIB-VERSION*\): Bumped from $(VERSION) to $(ver).>>change
+ echo \ \* require.scm \(*slib-version*\): Bumped from $(VERSION) to $(ver).>>change
echo>> change
cat ChangeLog >> change
mv -f change ChangeLog
@@ -386,7 +386,7 @@ new:
$(DOSCM)dist/mkdisk.bat
$(CHPAT) $(VERSION) $(ver) README slib.texi require.scm Makefile \
$(htmldir)SLIB.html slib.spec scheme48.init
- cvs commit -lm '(*SLIB-VERSION*): Bumped from $(VERSION) to $(ver).'
+ cvs commit -lm '(*slib-version*): Bumped from $(VERSION) to $(ver).'
cvs tag -lF slib$(ver)
tagfiles = README version.txi slib.texi $(texifiles) \
diff --git a/README b/README
index 1dd6441..44dc7b7 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This directory contains the distribution of Scheme Library slib3a2.
+This directory contains the distribution of Scheme Library slib3a3.
Slib conforms to Revised^5 Report on the Algorithmic Language Scheme
and the IEEE P1178 specification. Slib supports Unix and similar
systems, VMS, and MS-DOS.
@@ -74,6 +74,7 @@ The maintainer can be reached at agj @ alum.mit.edu.
`factor.scm' has factor.
`root.scm' has Newton's and Laguerre's methods for finding roots.
`minimize.scm' has Golden Section Search for minimum value.
+ `limit.scm' computes one-sided limits.
`cring.scm' extend + and * to custom commutative rings.
`selfset.scm' sets single letter identifiers to their symbols.
`determ.scm' compute determinant of list of lists.
@@ -157,6 +158,7 @@ The maintainer can be reached at agj @ alum.mit.edu.
`process.scm' has multi-processing primitives.
`array.scm' has multi-dimensional arrays.
`subarray.scm' has subarray and accessory procedures.
+ `linterp.scm' has interpolate-array-ref and resample-array!.
`arraymap.scm' has array-map!, array-for-each, and array-indexes.
`sort.scm' has sorted?, sort, sort!, merge, and merge!.
diff --git a/RScheme.init b/RScheme.init
index d04e4dc..292b963 100644
--- a/RScheme.init
+++ b/RScheme.init
@@ -9,7 +9,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -33,9 +33,9 @@
(define (implementation-vicinity)
(case (software-type)
- ((UNIX) "/usr/local/lib/rs/0.7.1/")
- ((VMS) "scheme$src:")
- ((MS-DOS) "C:\\scheme\\")))
+ ((unix) "/usr/local/lib/rs/0.7.1/")
+ ((vms) "scheme$src:")
+ ((ms-dos) "C:\\scheme\\")))
;;; (library-vicinity) should be defined to be the pathname of the
;;; directory where files of Scheme library functions reside.
@@ -48,9 +48,9 @@
;; Use this path if your scheme does not support GETENV
;; or if SCHEME_LIBRARY_PATH is not set.
(case (software-type)
- ((UNIX) "/usr/lib/slib/")
- ((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/lib/slib/")
+ ((vms) "lib$scheme:")
+ ((ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -61,7 +61,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -71,7 +71,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -79,12 +79,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -103,7 +103,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -113,10 +113,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -361,7 +361,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/STk.init b/STk.init
index d09074d..ad04130 100644
--- a/STk.init
+++ b/STk.init
@@ -7,7 +7,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -42,7 +42,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -52,7 +52,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -60,12 +60,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -84,7 +84,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -94,10 +94,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -312,7 +312,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/Template.scm b/Template.scm
index b35f8e5..d24f984 100644
--- a/Template.scm
+++ b/Template.scm
@@ -4,8 +4,8 @@
;;; This code is in the public domain.
;;@ (software-type) should be set to the generic operating system type.
-;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+;;; unix, vms, macos, amiga and ms-dos are supported.
+(define (software-type) 'unix)
;;@ (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -25,9 +25,9 @@
;;; implementation reside.
(define (implementation-vicinity)
(case (software-type)
- ((UNIX) "/usr/local/src/scheme/")
- ((VMS) "scheme$src:")
- ((MS-DOS) "C:\\scheme\\")))
+ ((unix) "/usr/local/src/scheme/")
+ ((vms) "scheme$src:")
+ ((ms-dos) "C:\\scheme\\")))
;;@ (library-vicinity) should be defined to be the pathname of the
;;; directory where files of Scheme library functions reside.
@@ -39,9 +39,9 @@
;; Use this path if your scheme does not support GETENV
;; or if SCHEME_LIBRARY_PATH is not set.
(case (software-type)
- ((UNIX) "/usr/local/lib/slib/")
- ((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/local/lib/slib/")
+ ((vms) "lib$scheme:")
+ ((ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -52,7 +52,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -63,7 +63,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -71,12 +71,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -95,7 +95,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -105,10 +105,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -364,7 +364,7 @@
;;@ Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/alistab.scm b/alistab.scm
index e8999bf..f8a5f70 100644
--- a/alistab.scm
+++ b/alistab.scm
@@ -61,7 +61,7 @@
(else #f)))
(lambda (port)
(display (string-append
- ";;; \"" outfile "\" SLIB " *SLIB-VERSION*
+ ";;; \"" outfile "\" SLIB " *slib-version*
" alist-table database -*-scheme-*-")
port)
(newline port) (newline port)
diff --git a/batch.scm b/batch.scm
index 8c122af..0219562 100644
--- a/batch.scm
+++ b/batch.scm
@@ -32,7 +32,7 @@
(lambda (str) 1)))
(define system:success?
(case (software-type)
- ((VMS) (lambda (int) (eqv? 1 int)))
+ ((vms) (lambda (int) (eqv? 1 int)))
(else zero?)))
;;(trace system system:success? exit quit slib:exit)
@@ -471,7 +471,7 @@
)
;@
(define *operating-system*
- (cond ((and (eq? 'UNIX (software-type)) (provided? 'system))
+ (cond ((and (eq? 'unix (software-type)) (provided? 'system))
(let* ((file-name (tmpnam))
(uname (and (system (string-append "uname > " file-name))
(call-with-input-file file-name read)))
@@ -480,11 +480,11 @@
(cond ((and ustr
(> (string-length ustr) 5)
(string-ci=? "cygwin" (substring ustr 0 6)))
- 'GNU-WIN32)
+ 'gnu-win32)
((and ustr
(> (string-length ustr) 4)
(string-ci=? "mingw" (substring ustr 0 5)))
- 'GNU-WIN32)
+ 'gnu-win32)
(ustr uname)
(else (software-type)))))
(else (software-type))))
diff --git a/bigloo.init b/bigloo.init
index af34546..eb607bb 100644
--- a/bigloo.init
+++ b/bigloo.init
@@ -5,7 +5,7 @@
;;@ (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;@ (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -26,8 +26,8 @@
;;; implementation reside.
(define (implementation-vicinity)
(case (software-type)
- ((UNIX) (string-append *default-lib-dir* "/"))
- ((MS-DOS) "C:\\scheme\\")
+ ((unix) (string-append *default-lib-dir* "/"))
+ ((ms-dos) "C:\\scheme\\")
(else "")))
;;@ (library-vicinity) should be defined to be the pathname of the
@@ -40,12 +40,12 @@
;; Use this path if your scheme does not support GETENV
;; or if SCHEME_LIBRARY_PATH is not set.
(case (software-type)
- ((UNIX) (cond ((directory? "/usr/share/slib/")
+ ((unix) (cond ((directory? "/usr/share/slib/")
"/usr/share/slib/")
((directory? "/usr/local/lib/slib/")
"/usr/local/lib/slib/")
(else "")))
- ((MS-DOS) "C:\\SLIB\\")
+ ((ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -56,7 +56,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -66,7 +66,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -74,12 +74,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -98,7 +98,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -108,10 +108,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -355,7 +355,7 @@
;;@ Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/bytenumb.scm b/bytenumb.scm
index 7febf64..cb9b5c5 100644
--- a/bytenumb.scm
+++ b/bytenumb.scm
@@ -103,11 +103,11 @@
(idx (+ -2 len) (+ -1 idx)))
((<= idx 1)
(set! F (/ (+ (logand #x7F (byte-ref bytes 1)) (/ F 256)) 128))
- (cond ((< 0 E 255) (* (if S -1 1) (expt 2 (- E 127)) (+ 1 F)))
+ (cond ((< 0 E 255) (* (if S (- one) one) (expt 2 (- E 127)) (+ 1 F)))
((zero? E)
(if (zero? F)
(if S (- zero) zero)
- (* (if S -1 1) (expt 2 -126) F)))
+ (* (if S (- one) one) (expt 2 -126) F)))
;; E must be 255
((not (zero? F)) (/ zero zero))
(else (/ (if S (- one) one) zero))))))
@@ -117,6 +117,8 @@
;; 0 1 8 9 31
;;@example
+;;(bytes->ieee-float (bytes 0 0 0 0)) @result{} 0.0
+;;(bytes->ieee-float (bytes #x80 0 0 0)) @result{} -0.0
;;(bytes->ieee-float (bytes #x40 0 0 0)) @result{} 2.0
;;(bytes->ieee-float (bytes #x40 #xd0 0 0)) @result{} 6.5
;;(bytes->ieee-float (bytes #xc0 #xd0 0 0)) @result{} -6.5
@@ -125,8 +127,8 @@
;;(bytes->ieee-float (bytes 0 #x40 0 0)) @result{} 5.877471754111437e-39
;;(bytes->ieee-float (bytes 0 0 0 1)) @result{} 1.401298464324817e-45
;;
-;;(bytes->ieee-float (bytes #xff #x80 0 0)) @result{} -1/0
-;;(bytes->ieee-float (bytes #x7f #x80 0 0)) @result{} 1/0
+;;(bytes->ieee-float (bytes #xff #x80 0 0)) @result{} -inf.0
+;;(bytes->ieee-float (bytes #x7f #x80 0 0)) @result{} +inf.0
;;(bytes->ieee-float (bytes #x7f #x80 0 1)) @result{} 0/0
;;@end example
@@ -147,11 +149,11 @@
(idx (+ -2 len) (+ -1 idx)))
((<= idx 1)
(set! F (/ (+ (logand #x0F (byte-ref bytes 1)) (/ F 256)) 16))
- (cond ((< 0 E 2047) (* (if S -1 1) (expt 2 (- E 1023)) (+ 1 F)))
+ (cond ((< 0 E 2047) (* (if S (- one) one) (expt 2 (- E 1023)) (+ 1 F)))
((zero? E)
(if (zero? F)
(if S (- zero) zero)
- (* (if S -1 1) (expt 2 -1022) F)))
+ (* (if S (- one) one) (expt 2 -1022) F)))
;; E must be 2047
((not (zero? F)) (/ zero zero))
(else (/ (if S (- one) one) zero))))))
@@ -162,7 +164,8 @@
;;@example
;;(bytes->ieee-double (bytes 0 0 0 0 0 0 0 0)) @result{} 0.0
-;;(bytes->ieee-double (bytes #x40 0 0 0 0 0 0 0)) @result{} 2
+;;(bytes->ieee-double (bytes #x80 0 0 0 0 0 0 0)) @result{} -0.0
+;;(bytes->ieee-double (bytes #x40 0 0 0 0 0 0 0)) @result{} 2.0
;;(bytes->ieee-double (bytes #x40 #x1A 0 0 0 0 0 0)) @result{} 6.5
;;(bytes->ieee-double (bytes #xC0 #x1A 0 0 0 0 0 0)) @result{} -6.5
;;
@@ -170,8 +173,8 @@
;;(bytes->ieee-double (bytes 0 4 0 0 0 0 0 0)) @result{} 5.562684646268003e-309
;;(bytes->ieee-double (bytes 0 0 0 0 0 0 0 1)) @result{} 4.0e-324
;;
-;;(bytes->ieee-double (bytes #xFF #xF0 0 0 0 0 0 0)) @result{} -1/0
-;;(bytes->ieee-double (bytes #x7F #xF0 0 0 0 0 0 0)) @result{} 1/0
+;;(bytes->ieee-double (bytes #xFF #xF0 0 0 0 0 0 0)) @result{} -inf.0
+;;(bytes->ieee-double (bytes #x7F #xF0 0 0 0 0 0 0)) @result{} +inf.0
;;(bytes->ieee-double (bytes #x7F #xF8 0 0 0 0 0 0)) @result{} 0/0
;;@end example
@@ -183,11 +186,11 @@
(exactify (if (provided? 'inexact) inexact->exact identity)))
(lambda (flt)
(define byts (make-bytes 4 0))
- (define S (negative? flt))
+ (define S (and (real? flt) (negative? (if (zero? flt) (/ flt) flt))))
(define (scale flt scl)
(cond ((zero? scl) (out (/ flt 2) scl))
- ((zero? flt) byts)
- ((>= flt 16)
+ ((zero? flt) (if S (byte-set! byts 0 #x80)) byts)
+ ((or (not (real? flt)) (>= flt 16))
(let ((flt/16 (/ flt 16)))
(cond ((= flt/16 flt)
(byte-set! byts 0 (if S #xFF #x7F))
@@ -211,6 +214,8 @@
(byte-set! byts idx val)))
(scale (abs flt) 127))))
;;@example
+;;(bytes->list (ieee-float->bytes 0.0)) @result{} (0 0 0 0)
+;;(bytes->list (ieee-float->bytes -0.0)) @result{} (128 0 0 0)
;;(bytes->list (ieee-float->bytes 2.0)) @result{} (64 0 0 0)
;;(bytes->list (ieee-float->bytes 6.5)) @result{} (64 208 0 0)
;;(bytes->list (ieee-float->bytes -6.5)) @result{} (192 208 0 0)
@@ -219,8 +224,8 @@
;;(bytes->list (ieee-float->bytes 5.877471754111438e-39)) @result{} ( 0 64 0 0)
;;(bytes->list (ieee-float->bytes 1.401298464324817e-45)) @result{} ( 0 0 0 1)
;;
-;;(bytes->list (ieee-float->bytes -1/0)) @result{} (255 128 0 0)
-;;(bytes->list (ieee-float->bytes 1/0)) @result{} (127 128 0 0)
+;;(bytes->list (ieee-float->bytes -inf.0)) @result{} (255 128 0 0)
+;;(bytes->list (ieee-float->bytes +inf.0)) @result{} (127 128 0 0)
;;(bytes->list (ieee-float->bytes 0/0)) @result{} (127 128 0 1)
;;@end example
@@ -233,11 +238,11 @@
(exactify (if (provided? 'inexact) inexact->exact identity)))
(lambda (flt)
(define byts (make-bytes 8 0))
- (define S (negative? flt))
+ (define S (and (real? flt) (negative? (if (zero? flt) (/ flt) flt))))
(define (scale flt scl)
(cond ((zero? scl) (out (/ flt 2) scl))
- ((zero? flt) byts)
- ((>= flt 16)
+ ((zero? flt) (if S (byte-set! byts 0 #x80)) byts)
+ ((or (not (real? flt)) (>= flt 16))
(let ((flt/16 (/ flt 16)))
(cond ((= flt/16 flt)
(byte-set! byts 0 (if S #xFF #x7F))
@@ -261,6 +266,8 @@
(byte-set! byts idx val)))
(scale (abs flt) 1023))))
;;@example
+;;(bytes->list (ieee-double->bytes 0.0)) @result{} (0 0 0 0 0 0 0 0)
+;;(bytes->list (ieee-double->bytes -0.0)) @result{} (128 0 0 0 0 0 0 0)
;;(bytes->list (ieee-double->bytes 2.0)) @result{} (64 0 0 0 0 0 0 0)
;;(bytes->list (ieee-double->bytes 6.5)) @result{} (64 26 0 0 0 0 0 0)
;;(bytes->list (ieee-double->bytes -6.5)) @result{} (192 26 0 0 0 0 0 0)
@@ -272,8 +279,8 @@
;;(bytes->list (ieee-double->bytes 4.0e-324))
;; @result{} ( 0 0 0 0 0 0 0 1)
;;
-;;(bytes->list (ieee-double->bytes -1/0)) @result{} (255 240 0 0 0 0 0 0)
-;;(bytes->list (ieee-double->bytes 1/0)) @result{} (127 240 0 0 0 0 0 0)
+;;(bytes->list (ieee-double->bytes -inf.0)) @result{} (255 240 0 0 0 0 0 0)
+;;(bytes->list (ieee-double->bytes +inf.0)) @result{} (127 240 0 0 0 0 0 0)
;;(bytes->list (ieee-double->bytes 0/0)) @result{} (127 248 0 0 0 0 0 0)
;;@end example
diff --git a/bytenumb.txi b/bytenumb.txi
index 9be7630..97f9b26 100644
--- a/bytenumb.txi
+++ b/bytenumb.txi
@@ -53,6 +53,8 @@ value of @var{bytes} interpreted as a big-endian IEEE 4-byte (32-bit) number.
@end defun
@example
+(bytes->ieee-float (bytes 0 0 0 0)) @result{} 0.0
+(bytes->ieee-float (bytes #x80 0 0 0)) @result{} -0.0
(bytes->ieee-float (bytes #x40 0 0 0)) @result{} 2.0
(bytes->ieee-float (bytes #x40 #xd0 0 0)) @result{} 6.5
(bytes->ieee-float (bytes #xc0 #xd0 0 0)) @result{} -6.5
@@ -61,8 +63,8 @@ value of @var{bytes} interpreted as a big-endian IEEE 4-byte (32-bit) number.
(bytes->ieee-float (bytes 0 #x40 0 0)) @result{} 5.877471754111437e-39
(bytes->ieee-float (bytes 0 0 0 1)) @result{} 1.401298464324817e-45
-(bytes->ieee-float (bytes #xff #x80 0 0)) @result{} -1/0
-(bytes->ieee-float (bytes #x7f #x80 0 0)) @result{} 1/0
+(bytes->ieee-float (bytes #xff #x80 0 0)) @result{} -inf.0
+(bytes->ieee-float (bytes #x7f #x80 0 0)) @result{} +inf.0
(bytes->ieee-float (bytes #x7f #x80 0 1)) @result{} 0/0
@end example
@@ -75,7 +77,8 @@ value of @var{bytes} interpreted as a big-endian IEEE 8-byte (64-bit) number.
@example
(bytes->ieee-double (bytes 0 0 0 0 0 0 0 0)) @result{} 0.0
-(bytes->ieee-double (bytes #x40 0 0 0 0 0 0 0)) @result{} 2
+(bytes->ieee-double (bytes #x80 0 0 0 0 0 0 0)) @result{} -0.0
+(bytes->ieee-double (bytes #x40 0 0 0 0 0 0 0)) @result{} 2.0
(bytes->ieee-double (bytes #x40 #x1A 0 0 0 0 0 0)) @result{} 6.5
(bytes->ieee-double (bytes #xC0 #x1A 0 0 0 0 0 0)) @result{} -6.5
@@ -83,8 +86,8 @@ value of @var{bytes} interpreted as a big-endian IEEE 8-byte (64-bit) number.
(bytes->ieee-double (bytes 0 4 0 0 0 0 0 0)) @result{} 5.562684646268003e-309
(bytes->ieee-double (bytes 0 0 0 0 0 0 0 1)) @result{} 4.0e-324
-(bytes->ieee-double (bytes #xFF #xF0 0 0 0 0 0 0)) @result{} -1/0
-(bytes->ieee-double (bytes #x7F #xF0 0 0 0 0 0 0)) @result{} 1/0
+(bytes->ieee-double (bytes #xFF #xF0 0 0 0 0 0 0)) @result{} -inf.0
+(bytes->ieee-double (bytes #x7F #xF0 0 0 0 0 0 0)) @result{} +inf.0
(bytes->ieee-double (bytes #x7F #xF8 0 0 0 0 0 0)) @result{} 0/0
@end example
@@ -96,6 +99,8 @@ floating-point of @var{x}.
@end defun
@example
+(bytes->list (ieee-float->bytes 0.0)) @result{} (0 0 0 0)
+(bytes->list (ieee-float->bytes -0.0)) @result{} (128 0 0 0)
(bytes->list (ieee-float->bytes 2.0)) @result{} (64 0 0 0)
(bytes->list (ieee-float->bytes 6.5)) @result{} (64 208 0 0)
(bytes->list (ieee-float->bytes -6.5)) @result{} (192 208 0 0)
@@ -104,8 +109,8 @@ floating-point of @var{x}.
(bytes->list (ieee-float->bytes 5.877471754111438e-39)) @result{} ( 0 64 0 0)
(bytes->list (ieee-float->bytes 1.401298464324817e-45)) @result{} ( 0 0 0 1)
-(bytes->list (ieee-float->bytes -1/0)) @result{} (255 128 0 0)
-(bytes->list (ieee-float->bytes 1/0)) @result{} (127 128 0 0)
+(bytes->list (ieee-float->bytes -inf.0)) @result{} (255 128 0 0)
+(bytes->list (ieee-float->bytes +inf.0)) @result{} (127 128 0 0)
(bytes->list (ieee-float->bytes 0/0)) @result{} (127 128 0 1)
@end example
@@ -117,6 +122,8 @@ floating-point of @var{x}.
@end defun
@example
+(bytes->list (ieee-double->bytes 0.0)) @result{} (0 0 0 0 0 0 0 0)
+(bytes->list (ieee-double->bytes -0.0)) @result{} (128 0 0 0 0 0 0 0)
(bytes->list (ieee-double->bytes 2.0)) @result{} (64 0 0 0 0 0 0 0)
(bytes->list (ieee-double->bytes 6.5)) @result{} (64 26 0 0 0 0 0 0)
(bytes->list (ieee-double->bytes -6.5)) @result{} (192 26 0 0 0 0 0 0)
@@ -128,8 +135,8 @@ floating-point of @var{x}.
(bytes->list (ieee-double->bytes 4.0e-324))
@result{} ( 0 0 0 0 0 0 0 1)
-(bytes->list (ieee-double->bytes -1/0)) @result{} (255 240 0 0 0 0 0 0)
-(bytes->list (ieee-double->bytes 1/0)) @result{} (127 240 0 0 0 0 0 0)
+(bytes->list (ieee-double->bytes -inf.0)) @result{} (255 240 0 0 0 0 0 0)
+(bytes->list (ieee-double->bytes +inf.0)) @result{} (127 240 0 0 0 0 0 0)
(bytes->list (ieee-double->bytes 0/0)) @result{} (127 248 0 0 0 0 0 0)
@end example
diff --git a/chez.init b/chez.init
index 5216cec..ad01b3f 100644
--- a/chez.init
+++ b/chez.init
@@ -8,7 +8,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -40,9 +40,9 @@
;; Use this path if your scheme does not support GETENV
;; or if SCHEME_LIBRARY_PATH is not set.
(case (software-type)
- ((UNIX) "/usr/local/lib/slib/")
- ((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/local/lib/slib/")
+ ((vms) "lib$scheme:")
+ ((ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -53,7 +53,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -63,7 +63,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -71,12 +71,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -95,7 +95,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -105,10 +105,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -357,7 +357,7 @@
;;; file suffix.
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/db2html.scm b/db2html.scm
index 8ad97e1..9b4709f 100644
--- a/db2html.scm
+++ b/db2html.scm
@@ -356,7 +356,7 @@
(case (string-ref dstr len)
((#\*) 'nary)
((#\+) 'nary1)
- (else 'single)))
+ (else (if (eq? 'boolean type) 'boolean 'single))))
(case (string-ref dstr len)
((#\* #\+)
(set! type (string->symbol (substring dstr 0 len)))
diff --git a/dirs.scm b/dirs.scm
index 0592021..4c5769f 100644
--- a/dirs.scm
+++ b/dirs.scm
@@ -33,12 +33,12 @@
;;If @0 cannot be supported by the platform, then #f is returned.
(define current-directory
(case (software-type)
- ;;((AMIGA) )
- ;;((MACOS THINKC) )
- ((MS-DOS WINDOWS ATARIST OS/2) (lambda () (system->line "cd")))
- ;;((NOSVE) )
- ((UNIX COHERENT PLAN9) (lambda () (system->line "pwd")))
- ;;((VMS) )
+ ;;((amiga) )
+ ;;((macos thinkc) )
+ ((ms-dos windows atarist os/2) (lambda () (system->line "cd")))
+ ;;((nosve) )
+ ((unix coherent plan9) (lambda () (system->line "pwd")))
+ ;;((vms) )
(else #f)))
;;@body
@@ -49,9 +49,9 @@
(define (dir:lister dirname tmp)
(case (software-type)
- ((UNIX COHERENT PLAN9)
+ ((unix coherent plan9)
(zero? (system (string-append "ls '" dirname "' > " tmp))))
- ((MS-DOS WINDOWS OS/2 ATARIST)
+ ((ms-dos windows os/2 atarist)
(zero? (system (string-append "DIR /B \"" dirname "\" > " tmp))))
(else (slib:error (software-type) 'list?))))
diff --git a/elk.init b/elk.init
index f495e5c..7d8fa54 100644
--- a/elk.init
+++ b/elk.init
@@ -16,7 +16,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -37,9 +37,9 @@
;;; implementation reside.
(define (implementation-vicinity)
(case (software-type)
- ((UNIX) "/usr/share/elk/")
- ((VMS) "scheme$src:")
- ((MS-DOS) "C:\\scheme\\")))
+ ((unix) "/usr/share/elk/")
+ ((vms) "scheme$src:")
+ ((ms-dos) "C:\\scheme\\")))
;;; (library-vicinity) should be defined to be the pathname of the
;;; directory where files of Scheme library functions reside.
@@ -52,9 +52,9 @@
(or (getenv "SCHEME_LIBRARY_PATH")
;; Uses this path if SCHEME_LIBRARY_PATH is not defined.
(case (software-type)
- ((UNIX) "/usr/local/lib/slib/")
- ((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/local/lib/slib/")
+ ((vms) "lib$scheme:")
+ ((ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -65,7 +65,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -75,7 +75,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -83,12 +83,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -107,7 +107,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -117,10 +117,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -400,7 +400,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/gambit.init b/gambit.init
index d50edae..5ca0d67 100644
--- a/gambit.init
+++ b/gambit.init
@@ -13,8 +13,8 @@
;;; gsi should be invoked with -:s option to Ignore case when reading
;;; symbols (per R5RS).
-(define (software-type) 'MACOS) ; for MacGambit.
-(define (software-type) 'UNIX) ; for Unix platforms.
+(define (software-type) 'macos) ; for MacGambit.
+(define (software-type) 'unix) ; for Unix platforms.
(define (scheme-implementation-type) 'gambit)
@@ -35,11 +35,11 @@
;;; implementation reside.
(define implementation-vicinity
(case (software-type)
- ((UNIX) (lambda () "/usr/local/share/gambc/"))
- ((VMS) (lambda () "scheme$src:"))
- ((MS-DOS) (lambda () "C:\\scheme\\"))
- ((WINDOWS) (lambda () "c:/scheme/"))
- ((MACOS)
+ ((unix) (lambda () "/usr/local/share/gambc/"))
+ ((vms) (lambda () "scheme$src:"))
+ ((ms-dos) (lambda () "C:\\scheme\\"))
+ ((windows) (lambda () "c:/scheme/"))
+ ((macos)
(let ((arg0 (list-ref (argv) 0)))
(let loop ((i (- (string-length arg0) 1)))
(cond ((negative? i) "")
@@ -61,11 +61,11 @@
;; Use this path if your scheme does not support GETENV
;; or if SCHEME_LIBRARY_PATH is not set.
(case (software-type)
- ((UNIX) "/usr/local/lib/slib/")
- ((MACOS) (string-append (implementation-vicinity) "slib:"))
- ((AMIGA) "dh0:scm/Library/")
- ((VMS) "lib$scheme:")
- ((WINDOWS MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/local/lib/slib/")
+ ((macos) (string-append (implementation-vicinity) "slib:"))
+ ((amiga) "dh0:scm/Library/")
+ ((vms) "lib$scheme:")
+ ((windows ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -76,22 +76,22 @@
(let ((home (getenv "HOME")))
(if home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
(else home))
(case (software-type)
- ((VMS) "~:")
- ((WINDOWS) "~/")
- ((MACOS) "~:")
+ ((vms) "~:")
+ ((windows) "~/")
+ ((macos) "~:")
(else #f)))))
;@
(define in-vicinity string-append)
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -99,12 +99,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -123,7 +123,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -133,10 +133,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -391,7 +391,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/grapheps.scm b/grapheps.scm
index 677ae34..d64262f 100644
--- a/grapheps.scm
+++ b/grapheps.scm
@@ -477,22 +477,42 @@
idx 1))))
(create-postscript-graph
tmp (or graph:dimensions '(600 300))
- (whole-page) (setup-plot (column-range data 0) (column-range data 1))
+ (whole-page)
+ (setup-plot (column-range data 0)
+ (apply combine-ranges
+ (do ((idx (+ -1 (cadr (array-dimensions data))) (+ -1 idx))
+ (lst '() (cons (column-range data idx) lst)))
+ ((< idx 1) lst))))
(outline-rect plotrect)
(x-axis) (y-axis)
- (plot-column data 0 1 (if histogram? 'bargraph 'line))
+ (do ((idx (+ -1 (cadr (array-dimensions data))) (+ -1 idx))
+ (lst '() (cons
+ (plot-column data 0 idx (if histogram? 'bargraph 'line))
+ lst)))
+ ((< idx 1) lst))
(rule-vertical leftedge ylabel 10)
(rule-horizontal bottomedge xlabel 10)))
-(define (graph:plot-function tmp func vlo vhi . npts)
- (set! npts (if (null? npts) 200 (car npts)))
- (let ((dats (make-array (A:floR64b) npts 2)))
- (array-index-map! (make-shared-array dats (lambda (idx) (list idx 0)) npts)
+(define (functions->array vlo vhi npts . funcs)
+ (let ((dats (make-array (A:floR32b) npts (+ 1 (length funcs)))))
+ (define jdx 1)
+ (array-index-map! (make-shared-array dats
+ (lambda (idx) (list idx 0))
+ npts)
(lambda (idx)
(+ vlo (* (- vhi vlo) (/ idx (+ -1 npts))))))
- (array-map! (make-shared-array dats (lambda (idx) (list idx 1)) npts)
- func
- (make-shared-array dats (lambda (idx) (list idx 0)) npts))
+ (for-each (lambda (func)
+ (array-map!
+ (make-shared-array dats (lambda (idx) (list idx jdx)) npts)
+ func
+ (make-shared-array dats (lambda (idx) (list idx 0)) npts))
+ (set! jdx (+ 1 jdx)))
+ funcs)
+ dats))
+
+(define (graph:plot-function tmp func vlo vhi . npts)
+ (set! npts (if (null? npts) 200 (car npts)))
+ (let ((dats (functions->array vlo vhi npts func)))
(graph:plot tmp dats "" "")))
;;@body
@@ -507,6 +527,11 @@
;;over the range @2 to @3. If the optional integer argument @4 is
;;supplied, it specifies the number of points to evaluate @1 at.
;;
+;;@defunx x1 x2 npts func1 func2 ...
+;;Creates and displays an encapsulated PostScript graph of the
+;;one-argument functions @var{func1}, @var{func2}, ... over the range
+;;@var{x1} to @var{x2} at @var{npts} points.
+;;
;;@defunx plot coords x-label y-label
;;@var{coords} is a list or vector of coordinates, lists of x and y
;;coordinates. @var{x-label} and @var{y-label} are strings with which
@@ -514,13 +539,15 @@
(define (plot . args)
(call-with-tmpnam
(lambda (tmp)
- (if (procedure? (car args))
- (apply graph:plot-function tmp args)
- (apply graph:plot tmp args))
+ (cond ((procedure? (car args))
+ (apply graph:plot-function tmp args))
+ ((array? (car args))
+ (apply graph:plot tmp args))
+ (else (let ((dats (apply functions->array args)))
+ (graph:plot tmp dats "" ""))))
(system (string-append "gv '" tmp "'")))
".eps"))
-
;;@node Example Graph, , Legacy Plotting, PostScript Graphing
;;@subsubsection Example Graph
diff --git a/grapheps.txi b/grapheps.txi
index b0acc81..afa5ede 100644
--- a/grapheps.txi
+++ b/grapheps.txi
@@ -391,6 +391,11 @@ encapsulated PostScript graph of the function of one argument @var{func}
over the range @var{x1} to @var{x2}. If the optional integer argument @var{npts} is
supplied, it specifies the number of points to evaluate @var{func} at.
+@defunx x1 x2 npts func1 func2 ...
+Creates and displays an encapsulated PostScript graph of the
+one-argument functions @var{func1}, @var{func2}, ... over the range
+@var{x1} to @var{x2} at @var{npts} points.
+
@defunx plot coords x-label y-label
@var{coords} is a list or vector of coordinates, lists of x and y
coordinates. @var{x-label} and @var{y-label} are strings with which
diff --git a/guile.init b/guile.init
index a488998..76f1f0e 100644
--- a/guile.init
+++ b/guile.init
@@ -45,9 +45,9 @@
;;; the directory where any auxillary files to your Scheme
;;; implementation reside.
(define implementation-vicinity
- (let* ((path (or (%search-load-path "slib/require.scm")
- (error "Could not find slib/require.scm in " %load-path)))
- (vic (substring path 0 (- (string-length path) 16))))
+ (let* ((path (or (%search-load-path "ice-9/q.scm")
+ (error "Could not find ice-9/q.scm in " %load-path)))
+ (vic (substring path 0 (- (string-length path) 11))))
(lambda () vic)))
;;; (library-vicinity) should be defined to be the pathname of the
@@ -66,7 +66,7 @@
;;; directory, the directory which typically contains files which
;;; customize a computer environment for a user.
(define (home-vicinity)
- (let ((home (getenv "HOME")))
+ (let ((home (and (defined? 'getenv) (getenv "HOME"))))
(and home
(case (software-type)
((unix coherent ms-dos) ;V7 unix has a / on HOME
@@ -79,7 +79,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
;@
(define vicinity:suffix?
@@ -111,7 +111,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -121,10 +121,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -190,6 +190,7 @@
;STRING-NULL?, APPEND!, 1+,
;-1+, <?, <=?, =?, >?, >=?
;;; object-hash ;has OBJECT-HASH
+ hash ;HASH, HASHV, HASHQ
full-continuation ;can return multiple times
;;; ieee-floating-point ;conforms to IEEE Standard 754-1985
@@ -206,6 +207,7 @@
;;; record ;has user defined data structures
string-port ;has CALL-WITH-INPUT-STRING and
;CALL-WITH-OUTPUT-STRING
+ line-i/o
;;; sort
;;; pretty-print
;;; object->string
@@ -213,7 +215,7 @@
;;; trace ;has macros: TRACE and UNTRACE
;;; compiler ;has (COMPILER)
;;; ed ;(ED) is editor
-;;; system ;posix (system <string>)
+ system ;posix (system <string>)
;;; getenv ;posix (getenv <string>)
;;; program-arguments ;returns list of strings (argv)
;;; current-time ;returns time in seconds since 1/1/1970
@@ -223,6 +225,8 @@
logical
random ;Random numbers
+ array
+ array-for-each
)
(if (defined? 'getenv)
@@ -233,22 +237,10 @@
'(current-time)
'())
- (if (defined? 'system)
- '(system)
- '())
-
- (if (defined? 'array?)
- '(array)
- '())
-
(if (defined? 'char-ready?)
'(char-ready?)
'())
- (if (defined? 'array-for-each)
- '(array-for-each)
- '())
-
*features*))
;;; (OUTPUT-PORT-WIDTH <port>)
@@ -277,16 +269,17 @@
(+ 128 (or (status:term-sig st)
(status:stop-sig st)))))))
-;;; (TMPNAM) makes a temporary file name.
-;;(define tmpnam (let ((cntr 100))
-;; (lambda () (set! cntr (+ 1 cntr))
-;; (string-append "slib_" (number->string cntr)))))
-
-;;; (FILE-EXISTS? <string>)
-;;(define (file-exists? f) #f)
+;;; for line-i/o
+(use-modules (ice-9 popen))
+(define (system->line command . tmp)
+ (let ((ipip (open-input-pipe command)))
+ (define line (read-line ipip))
+ (let ((status (close-pipe ipip)))
+ (and (or (eqv? 0 (status:exit-val status))
+ (status:term-sig status)
+ (status:stop-sig status))
+ (if (eof-object? line) "" line)))))
-;;; (DELETE-FILE <string>)
-;;(define (delete-file f) #f)
(define delete-file
(let ((guile-core-delete-file delete-file))
(lambda (filename)
@@ -354,29 +347,44 @@
;;; Here for backward compatability
;;(define scheme-file-suffix
;; (let ((suffix (case (software-type)
-;; ((NOSVE) "_scm")
+;; ((nosve) "_scm")
;; (else ".scm"))))
;; (lambda () suffix)))
-(define (guile:wrap-case-insensitive proc)
- (lambda args
- (save-module-excursion
- (lambda ()
- (set-current-module slib-module)
- (let ((old (read-options)))
- (dynamic-wind
- (lambda () (read-enable 'case-insensitive))
- (lambda () (apply proc args))
- (lambda () (read-options old))))))))
+;;; (define (guile:wrap-case-insensitive proc)
+;;; (lambda args
+;;; (save-module-excursion
+;;; (lambda ()
+;;; (set-current-module slib-module)
+;;; (let ((old (read-options)))
+;;; (dynamic-wind
+;;; (lambda () (read-enable 'case-insensitive))
+;;; (lambda () (apply proc args))
+;;; (lambda () (read-options old))))))))
-(define read (guile:wrap-case-insensitive read))
+;;; (define read (guile:wrap-case-insensitive read))
;;; (SLIB:LOAD-SOURCE "foo") should load "foo.scm" or with whatever
;;; suffix all the module files in SLIB have. See feature 'SOURCE.
-(define slib:load
- (let ((load-file (guile:wrap-case-insensitive load)))
- (lambda (<pathname>)
- (load-file (string-append <pathname> (scheme-file-suffix))))))
+;;; (define slib:load
+;;; (let ((load-file (guile:wrap-case-insensitive load)))
+;;; (lambda (<pathname>)
+;;; (load-file (string-append <pathname> (scheme-file-suffix))))))
+(define (slib:load-helper loader)
+ (lambda (name)
+ (save-module-excursion
+ (lambda ()
+ (set-current-module slib-module)
+ (let ((errinfo (catch 'system-error
+ (lambda () (loader name) #f)
+ (lambda args args))))
+ (if (and errinfo
+ (catch 'system-error
+ (lambda () (loader (string-append name ".scm")) #f)
+ (lambda args args)))
+ (apply throw errinfo)))))))
+(define slib:load (slib:load-helper load))
+(define slib:load-from-path (slib:load-helper load-from-path))
(define slib:load-source slib:load)
@@ -524,9 +532,9 @@
(define A:floR32b ar32)
(define A:floR16b ar32)
;; decimal flonums
-(define A:flor128d ar64)
-(define A:flor64d ar64)
-(define A:flor32d ar32)
+(define A:floR128d ar64)
+(define A:floR64d ar64)
+(define A:floR32d ar32)
;; fixnums
(define A:fixZ64b as64)
(define A:fixZ32b as32)
diff --git a/http-cgi.scm b/http-cgi.scm
index 1dd1c07..f8f9793 100644
--- a/http-cgi.scm
+++ b/http-cgi.scm
@@ -90,7 +90,7 @@
(else #f)))
(define (http:status-line status-code reason)
- (sprintf #f "HTTP/1.1 %d %s%s" status-code reason http:crlf))
+ (sprintf #f "HTTP/1.0 %d %s%s" status-code reason http:crlf))
;;@body Returns a string containing lines for each element of @1; the
;;@code{car} of which is followed by @samp{: }, then the @code{cdr}.
@@ -126,7 +126,7 @@
(sprintf
#f
"<A HREF=http://swiss.csail.mit.edu/~jaffer/SLIB.html>SLIB</A> %s server"
- (if (getenv "SERVER_PROTOCOL") "CGI/1.1" "HTTP/1.1"))))
+ (if (getenv "SERVER_PROTOCOL") "CGI/1.0" "HTTP/1.0"))))
(string-append (http:status-line status-code reason-phrase)
(http:content
'(("Content-Type" . "text/html"))
@@ -389,7 +389,7 @@
(coerce->list value (list-ref types opt-pos)))
(else
(list (coerce value (list-ref types opt-pos)))))))))))
- alist)
+ (reverse alist))
parameter-list))
;;@args rdb command-table
diff --git a/jscheme.init b/jscheme.init
index 88c1623..95caa8d 100644
--- a/jscheme.init
+++ b/jscheme.init
@@ -21,11 +21,10 @@
;;@ (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-;; (define (software-type) 'UNIX)
(define (software-type)
(if (.startsWith (System.getProperty "os.name") "Windows")
- 'MS-DOS
- 'UNIX))
+ 'ms-dos
+ 'unix))
;;@ (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -45,7 +44,7 @@
;;; implementation reside.
(define implementation-vicinity
(let ((implvic (case (software-type)
- ((MS-DOS) "C:\\TEMP\\")
+ ((ms-dos) "C:\\TEMP\\")
(else "/tmp/"))))
(lambda () implvic)))
@@ -72,9 +71,9 @@
;; Use this path if your scheme does not support GETENV
;; or if SCHEME_LIBRARY_PATH is not set.
(case (software-type)
- ((UNIX) "/usr/local/lib/slib/")
- ((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/local/lib/slib/")
+ ((vms) "lib$scheme:")
+ ((ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -85,7 +84,7 @@
(define home (or (getenv "HOME") (getenv "user.home")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -95,7 +94,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -103,12 +102,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -127,7 +126,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -137,10 +136,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
diff --git a/limit.scm b/limit.scm
new file mode 100644
index 0000000..8c67e8f
--- /dev/null
+++ b/limit.scm
@@ -0,0 +1,129 @@
+;;; "limit.scm" Scheme Implementation of one-side limit algorithm.
+;Copyright 2005 Aubrey Jaffer
+;
+;Permission to copy this software, to modify it, to redistribute it,
+;to distribute modified versions, and to use it for any purpose is
+;granted, subject to the following restrictions and understandings.
+;
+;1. Any copy made of this software must include this copyright notice
+;in full.
+;
+;2. I have made no warranty or representation that the operation of
+;this software will be error-free, and I am under no obligation to
+;provide any services, by way of maintenance, update, or otherwise.
+;
+;3. In conjunction with products arising from the use of this
+;material, there shall be no use of my name in any advertising,
+;promotional, or sales literature without prior written consent in
+;each case.
+
+;;@code{(require 'limit)}
+
+(define (inv-root f1 f2 f3 prec)
+ (define f1^2 (* f1 f1))
+ (define f2^2 (* f2 f2))
+ (define f3^2 (expt f3 2))
+ (require 'root) ; SLIB
+ (newton:find-root (lambda (f0)
+ (+ (- (* (expt f0 2) f1))
+ (* f0 f1^2)
+ (* (- (* 2 (expt f0 2)) (* 3 f1^2)) f2)
+ (* (+ (- (* 2 f0)) (* 3 f1)) f2^2)
+ (* (- (+ (- (expt f0 2)) (* 2 f1^2)) f2^2)
+ f3)
+ (* (+ (- f0 (* 2 f1)) f2) f3^2)))
+ (lambda (f0)
+ (+ (- (+ (* -2 f0 f1) f1^2 (* 4 f0 f2))
+ (* 2 f2^2)
+ (* 2 f0 f3))
+ f3^2))
+ f1
+ prec))
+
+(define (invintp f1 f2 f3)
+ (define f1^2 (* f1 f1))
+ (define f2^2 (* f2 f2))
+ (define f3^2 (expt f3 2))
+ (let ((c (+ (* -3 f1^2 f2)
+ (* 3 f1 f2^2)
+ (* (- (* 2 f1^2) f2^2) f3)
+ (* (- f2 (* 2 f1)) f3^2)))
+ (b (+ (- f1^2 (* 2 f2^2)) f3^2))
+ (a (- (* 2 f2) f1 f3)))
+ (define disc (- (* b b) (* 4 a c)))
+ ;;(printf "discriminant: %g\n" disc)
+ (if (negative? (real-part disc))
+ (/ b -2 a)
+ (let ((sqrt-disc (sqrt disc)))
+ (define root+ (/ (- sqrt-disc b) 2 a))
+ (define root- (/ (+ sqrt-disc b) -2 a))
+ (if (< (magnitude (- root+ f1)) (magnitude (- root- f1)))
+ root+
+ root-)))))
+
+(define (extrapolate-0 fs)
+ (define n (length fs))
+ (define (choose n k)
+ (do ((kdx 1 (+ 1 kdx))
+ (prd 1 (/ (* (- n kdx -1) prd) kdx)))
+ ((> kdx k) prd)))
+ (do ((k 1 (+ 1 k))
+ (lst fs (cdr lst))
+ (L 0 (+ (* -1 (expt -1 k) (choose n k) (car lst)) L)))
+ ((null? lst) L)))
+
+(define (sequence->limit proc sequence)
+ (define lval (proc (car sequence)))
+ (if (finite? lval)
+ (let ((val (proc (cadr sequence))))
+ (define h_n*nsamps (* (length sequence) (magnitude (- val lval))))
+ (if (finite? val)
+ (let loop ((sequence (cddr sequence))
+ (fxs (list val lval))
+ (trend #f)
+ (ldelta (- val lval))
+ (jdx (+ -1 (length sequence))))
+ (cond ((null? sequence)
+ (case trend
+ ((diverging) (and (real? val) (/ ldelta 0.0)))
+ ((bounded) (invintp val lval (caddr fxs)))
+ (else (cond ((zero? ldelta) val)
+ ((not (real? val)) #f)
+ (else (extrapolate-0 fxs))))))
+ (else
+ (set! lval val)
+ (set! val (proc (car sequence)))
+ ;;(printf "f(%12g)=%12g; delta=%12g hyp=%12g j=%3d %s\n" (car sequence) val (- val lval) (/ h_n*nsamps jdx) jdx (or trend ""))
+ (if (finite? val)
+ (let ((delta (- val lval)))
+ (define h_j (/ h_n*nsamps jdx))
+ (cond ((case trend
+ ((converging) (<= (magnitude delta) h_j))
+ ((bounded) (<= (magnitude ldelta) (magnitude delta)))
+ ((diverging) (>= (magnitude delta) h_j))
+ (else #f))
+ (loop (cdr sequence) (cons val fxs) trend delta (+ -1 jdx)))
+ (trend #f)
+ (else
+ (loop (cdr sequence) (cons val fxs)
+ (cond ((> (magnitude delta) h_j) 'diverging)
+ ((< (magnitude ldelta) (magnitude delta)) 'bounded)
+ (else 'converging))
+ delta (+ -1 jdx)))))
+ (and (eq? trend 'diverging) val)))))
+ (and (real? val) val)))
+ (and (real? lval) lval)))
+
+(define (limit proc x1 x2 . k)
+ (set! k (if (null? k) 8 (car k)))
+ (cond ((not (finite? x2)) (slib:error 'limit 'infinite 'x2 x2))
+ ((not (finite? x1))
+ (or (positive? (* x1 x2)) (slib:error 'limit 'start 'mismatch x1 x2))
+ (limit (lambda (x) (proc (/ x))) 0.0 (/ x2) k))
+ ((= x1 (+ x1 x2)) (slib:error 'limit 'null 'range x1 (+ x1 x2)))
+ (else (let ((dec (/ x2 k)))
+ (do ((x (+ x1 x2 0.0) (- x dec))
+ (cnt (+ -1 k) (+ -1 cnt))
+ (lst '() (cons x lst)))
+ ((negative? cnt)
+ (sequence->limit proc (reverse lst))))))))
diff --git a/limit.texi b/limit.texi
new file mode 100644
index 0000000..ee1f416
--- /dev/null
+++ b/limit.texi
@@ -0,0 +1,100 @@
+
+@deffn {library procedure} limit proc x1 x2 k
+@deffnx {library procedure} limit proc x1 x2
+
+@var{Proc} must be a procedure taking a single inexact real argument.
+@var{K} is the number of points on which @var{proc} will be called; it
+defaults to 8.
+
+If @var{x1} is finite, then @var{Proc} must be continuous on the
+half-open interval:
+
+ ( @var{x1} .. @var{x1}+@var{x2} ]
+
+And @var{x2} should be chosen small enough so that @var{proc} is
+expected to be monotonic or constant on arguments between @var{x1} and
+@var{x1} + @var{x2}.
+
+@code{Limit} computes the limit of @var{proc} as its argument
+approaches @var{x1} from @var{x1} + @var{x2}.
+@code{Limit} returns a real number or real infinity or @samp{#f}.
+
+If @var{x1} is not finite, then @var{x2} must be a finite nonzero real
+with the same sign as @var{x1}; in which case @code{limit} returns:
+
+@code{(limit (lambda (x) (proc (/ x))) 0.0 (/ @var{x2}) @var{k})}
+
+@code{Limit} examines the magnitudes of the differences between
+successive values returned by @var{proc} called with a succession of
+numbers from @var{x1}+@var{x2}/@var{k} to @var{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 @var{proc}.
+
+If the magnitudes of differences are increasing as fast or faster than
+a hyperbola matching at @var{x1}+@var{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 @var{x1}+@var{x2}, then the limit is
+extrapolated from the quadratic passing through the three samples
+closest to @var{x1}.
+
+If the magnitudes of differences are not monotonic or are not
+completely within one of the above categories, then #f is returned.
+@end deffn
+
+@example
+;; 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:
+(tan (atan +inf.0)) ==> 16.331778728383844e15
+(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
+@end example
diff --git a/lineio.scm b/lineio.scm
index 9b5d641..2b18cf2 100644
--- a/lineio.scm
+++ b/lineio.scm
@@ -75,6 +75,11 @@
;;a temporary file. @0 calls @code{system} with @1 as argument,
;;redirecting stdout to file @2. @0 returns a string containing the
;;first line of output from @2.
+;;
+;;@0 is intended to be a portable method for getting one-line results
+;;from programs like @code{pwd}, @code{whoami}, @code{hostname},
+;;@code{which}, @code{identify}, and @code{cksum}. Its behavior when
+;;called with programs which generate lots of output is unspecified.
(define (system->line command . tmp)
(require 'filename)
(cond ((null? tmp)
diff --git a/lineio.txi b/lineio.txi
index 52d17b8..9fbe92f 100644
--- a/lineio.txi
+++ b/lineio.txi
@@ -46,5 +46,10 @@ which case it defaults to the value returned by
a temporary file. @code{system->line} calls @code{system} with @var{command} as argument,
redirecting stdout to file @var{tmp}. @code{system->line} returns a string containing the
first line of output from @var{tmp}.
+
+@code{system->line} is intended to be a portable method for getting one-line results
+from programs like @code{pwd}, @code{whoami}, @code{hostname},
+@code{which}, @code{identify}, and @code{cksum}. Its behavior when
+called with programs which generate lots of output is unspecified.
@end defun
diff --git a/linterp.scm b/linterp.scm
new file mode 100644
index 0000000..5be2b36
--- /dev/null
+++ b/linterp.scm
@@ -0,0 +1,90 @@
+;;; "linterp.scm" Interpolate array access.
+;Copyright 2005 Aubrey Jaffer
+;
+;Permission to copy this software, to modify it, to redistribute it,
+;to distribute modified versions, and to use it for any purpose is
+;granted, subject to the following restrictions and understandings.
+;
+;1. Any copy made of this software must include this copyright notice
+;in full.
+;
+;2. I have made no warranty or representation that the operation of
+;this software will be error-free, and I am under no obligation to
+;provide any services, by way of maintenance, update, or otherwise.
+;
+;3. In conjunction with products arising from the use of this
+;material, there shall be no use of my name in any advertising,
+;promotional, or sales literature without prior written consent in
+;each case.
+
+;;@code{(require 'array-interpolate)}
+
+(require 'array)
+(require 'subarray)
+(require 'array-for-each)
+
+;;@args ra x1 ... xj
+;;
+;;@1 must be an array of rank j containing numbers. @0 returns a
+;;value interpolated from the nearest j-dimensional cube of elements
+;;of @1.
+;;
+;;@example
+;;(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
+;;@end example
+(define (interpolate-array-ref ra . xs)
+ (define (mix rat x1 x2) (+ (* (- 1 rat) x1) (* rat x2)))
+ (define (iar ra xs dims)
+ (define x1 (car xs))
+ (define b1 (car dims))
+ (define idx (inexact->exact (floor (car xs))))
+ (define dim-1 (+ -1 (car dims)))
+ (set! xs (cdr xs))
+ (set! dims (cdr dims))
+ (cond ((<= x1 0) (if (null? xs)
+ (array-ref ra 0)
+ (iar (subarray ra idx) xs dims)))
+ ((>= x1 dim-1) (if (null? xs)
+ (array-ref ra dim-1)
+ (iar (subarray ra dim-1) xs dims)))
+ ((integer? x1) (if (null? xs)
+ (array-ref ra idx)
+ (iar (subarray ra idx) xs dims)))
+ ((null? xs) (mix (- x1 idx)
+ (array-ref ra idx)
+ (array-ref ra (+ 1 idx))))
+ (else (mix (- x1 idx)
+ (iar (subarray ra idx) xs dims)
+ (iar (subarray ra (+ 1 idx)) xs dims)))))
+ (if (null? xs)
+ (array-ref ra)
+ (iar ra xs (array-dimensions ra))))
+
+;;@args ra1 ra2
+;;
+;;@1 and @2 must be numeric arrays of equal rank. @0 sets @1 to
+;;values interpolated from @2 such that the values of elements at the
+;;corners of @1 and @2 are equal.
+;;
+;;@example
+;;(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))
+;;@end example
+(define (resample-array! ra1 ra2)
+ (define scales (map (lambda (rd1 rd2)
+ (if (<= rd1 1)
+ 0
+ (/ (+ -1 rd2) (+ -1 rd1))))
+ (array-dimensions ra1)
+ (array-dimensions ra2)))
+ (array-index-map! ra1
+ (lambda idxs
+ (apply interpolate-array-ref ra2
+ (map * scales idxs)))))
diff --git a/linterp.txi b/linterp.txi
new file mode 100644
index 0000000..14861f6
--- /dev/null
+++ b/linterp.txi
@@ -0,0 +1,36 @@
+@code{(require 'array-interpolate)}
+
+
+@defun interpolate-array-ref ra x1 @dots{} xj
+
+
+@var{ra} must be an array of rank j containing numbers. @code{interpolate-array-ref} returns a
+value interpolated from the nearest j-dimensional cube of elements
+of @var{ra}.
+
+@example
+(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
+@end example
+@end defun
+
+
+@deffn {Procedure} resample-array! ra1 ra2
+
+
+@var{ra1} and @var{ra2} must be numeric arrays of equal rank. @code{resample-array!} sets @var{ra1} to
+values interpolated from @var{ra2} such that the values of elements at the
+corners of @var{ra1} and @var{ra2} are equal.
+
+@example
+(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))
+@end example
+@end deffn
+
diff --git a/macscheme.init b/macscheme.init
index 60ee387..8edfc00 100644
--- a/macscheme.init
+++ b/macscheme.init
@@ -7,7 +7,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'MACOS)
+(define (software-type) 'macos)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -40,7 +40,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -48,12 +48,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -72,7 +72,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -82,10 +82,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -343,7 +343,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/matfile.scm b/matfile.scm
index a7a96a6..49c603b 100644
--- a/matfile.scm
+++ b/matfile.scm
@@ -122,7 +122,8 @@
(else (slib:error 'p 'type d-prot)))
mrows ncols))
((text) (make-array "." mrows ncols))
- ((sparse) (slib:error 'sparse '?)))))
+ ((sparse) (slib:error 'sparse '?))))
+ (d-endn*leng (* -1 d-endn d-leng)))
(do ((idx 0 (+ 1 idx)))
((>= idx namlen))
(string-set! namstr idx (read-char port)))
@@ -133,7 +134,7 @@
((>= jdx ncols))
(do ((idx 0 (+ 1 idx)))
((>= idx mrows))
- (array-set! mat (d-conv (read-bytes (* d-endn d-leng) port))
+ (array-set! mat (d-conv (read-bytes d-endn*leng port))
idx jdx)))
(if imagf
(do ((jdx 0 (+ 1 jdx)))
@@ -141,7 +142,7 @@
(do ((idx 0 (+ 1 idx)))
((>= idx mrows))
(array-set! mat
- (+ (* (d-conv (read-bytes (* d-endn d-leng) port))
+ (+ (* (d-conv (read-bytes d-endn*leng port))
+i)
(array-ref mat idx jdx))
idx jdx))))
diff --git a/mitscheme.init b/mitscheme.init
index 9768155..6283230 100644
--- a/mitscheme.init
+++ b/mitscheme.init
@@ -9,7 +9,7 @@
;;; (software-type) should be set to the generic operating system type.
(define (software-type)
- (if (eq? 'unix microcode-id/operating-system) 'UNIX 'MS-DOS))
+ (if (eq? 'unix microcode-id/operating-system) 'unix 'ms-dos))
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -56,8 +56,8 @@
(or (getenv "SCHEME_LIBRARY_PATH")
;; Use this path if your scheme does not support GETENV.
(case (software-type)
- ((MS-DOS) "c:\\slib\\")
- ((UNIX) "/usr/local/lib/slib/")
+ ((ms-dos) "c:\\slib\\")
+ ((unix) "/usr/local/lib/slib/")
(else "")))))
(lambda () library-path)))
@@ -72,7 +72,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -80,12 +80,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -104,7 +104,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -114,10 +114,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
diff --git a/mkclrnam.scm b/mkclrnam.scm
index 3e0c553..3360a41 100644
--- a/mkclrnam.scm
+++ b/mkclrnam.scm
@@ -60,7 +60,7 @@
(require 'filename)
(call-with-tmpnam
(lambda (file)
- (system (string-append "wget -c -O" file " -USLIB" *SLIB-VERSION* " " url))
+ (system (string-append "wget -c -O" file " -USLIB" *slib-version* " " url))
(apply file->color-dictionary file table-name rdb))))
(define (load-rgb-txt path color-table)
diff --git a/mklibcat.scm b/mklibcat.scm
index 2047f86..d26c821 100644
--- a/mklibcat.scm
+++ b/mklibcat.scm
@@ -80,6 +80,7 @@
(modular "modular")
(factor "factor")
(primes factor)
+ (limit "limit")
(eps-graph "grapheps")
(charplot "charplot")
(sort "sort")
@@ -133,6 +134,7 @@
(array "array")
(subarray "subarray")
(array-for-each "arraymap")
+ (array-interpolate "linterp")
(repl "repl")
(process "process")
(chapter-order "chap")
@@ -208,17 +210,22 @@
(srfi-0 srfi)
(srfi defmacro "srfi")
(srfi-1 "srfi-1")
+ (and-let* srfi-2)
(srfi-2 defmacro "srfi-2")
+ (receive srfi-8)
(srfi-8 macro "srfi-8")
+ (define-record-type srfi-9)
(srfi-9 macro "srfi-9")
(srfi-47 array)
(srfi-63 array)
(srfi-60 logical)
+ (guarded-cond-clause srfi-61)
+ (srfi-61 macro "srfi-61")
(new-catalog "mklibcat")
))))
(let* ((req (in-vicinity (library-vicinity)
(string-append "require" (scheme-file-suffix)))))
- (write* (cons '*SLIB-VERSION* (or (slib:version req) *SLIB-VERSION*))))
+ (write* (cons '*slib-version* (or (slib:version req) *slib-version*))))
(display* ")")
(let ((load-if-exists
diff --git a/peanosfc.scm b/peanosfc.scm
index 4a4039a..5cac088 100644
--- a/peanosfc.scm
+++ b/peanosfc.scm
@@ -19,17 +19,20 @@
(require 'array)
+;;@code{(require 'peano-fill)}
+;;@ftindex peano-fill
+
;;; A. R. Butz.
;;; Space filling curves and mathematical programming.
;;; Information and Control, 12:314-330, 1968.
-(define (integer->tet-array scalar rank)
+(define (natural->tet-array scalar rank)
(do ((tets '() (cons (modulo scl 3) tets))
(scl scalar (quotient scl 3)))
((zero? scl)
(let* ((len (length tets))
(depth (quotient (+ len rank -1) rank)))
- (define tra (make-array (A:fixN8b 0) rank depth))
+ (define tra (make-array (A:fixZ8b 0) rank depth))
(set! tets (reverse tets))
(do ((idx (+ -1 depth) (+ -1 idx)))
((negative? idx))
@@ -40,7 +43,7 @@
(set! tets (cdr tets))))))
tra))))
-(define (tet-array->integer tra)
+(define (tet-array->natural tra)
(define rank (car (array-dimensions tra)))
(define depth (cadr (array-dimensions tra)))
(define val 0)
@@ -88,22 +91,54 @@
(do ((idx (+ -1 idx) (+ -1 idx)))
((negative? idx))
(set! tpar (+ (array-ref tra rdx idx) tpar)))
- (array-set! tra (if (odd? tpar) (- 2 v_ij) v_ij) rdx idx)
+ (if (odd? tpar) (array-set! tra (- 2 v_ij) rdx idx))
(set! parity (modulo (+ parity v_ij) 2))))))
;;@body
;;Returns a list of @2 nonnegative integer coordinates corresponding
;;to exact nonnegative integer @1. The lists returned by @0 for @1
;;arguments 0 and 1 will differ in the first element.
-(define (integer->peano-coordinates scalar rank)
- (define tra (integer->tet-array scalar rank))
+(define (natural->peano-coordinates scalar rank)
+ (define tra (natural->tet-array scalar rank))
(peano-flip! tra)
(tet-array->coordinates tra))
;;@body
;;Returns an exact nonnegative integer corresponding to @1, a list of
;;nonnegative integer coordinates.
-(define (peano-coordinates->integer coords)
+(define (peano-coordinates->natural coords)
(define tra (coordinates->tet-array coords))
(peano-flip! tra)
- (tet-array->integer tra))
+ (tet-array->natural tra))
+
+;;@body
+;;Returns a list of @2 integer coordinates corresponding to exact
+;;integer @1. The lists returned by @0 for @1 arguments 0 and 1 will
+;;differ in the first element.
+(define (integer->peano-coordinates scalar rank)
+ (define three^rank (expt 3 rank))
+ (do ((edx 1 (* edx three^rank))
+ (m 0 (+ 1 m)))
+ ((>= (quotient edx 2) (abs scalar))
+ (let ((tra (natural->tet-array (+ scalar (quotient edx 2)) rank))
+ (offset (quotient (expt 3 m) 2)))
+ (peano-flip! tra)
+ (map (lambda (k) (* (if (odd? m) -1 1) (- k offset)))
+ (tet-array->coordinates tra))))))
+
+;;@body
+;;Returns an exact integer corresponding to @1, a list of integer
+;;coordinates.
+(define (peano-coordinates->integer coords)
+ (define cobs (apply max (map abs coords)))
+ (let loop ((xpo 1))
+ (define offset (quotient (expt 3 xpo) 2))
+ (if (>= offset cobs)
+ (let ((tra (coordinates->tet-array
+ (map (lambda (elt) (+ elt offset))
+ coords))))
+ (peano-flip! tra)
+ ((if (odd? xpo) - +)
+ (- (tet-array->natural tra)
+ (quotient (expt 3 (* (length coords) xpo)) 2))))
+ (loop (+ 1 xpo)))))
diff --git a/peanosfc.txi b/peanosfc.txi
index 10cc256..5550ebb 100644
--- a/peanosfc.txi
+++ b/peanosfc.txi
@@ -1,15 +1,33 @@
+@code{(require 'peano-fill)}
+@ftindex peano-fill
-@defun integer->peano-coordinates scalar rank
+
+@defun natural->peano-coordinates scalar rank
Returns a list of @var{rank} nonnegative integer coordinates corresponding
-to exact nonnegative integer @var{scalar}. The lists returned by @code{integer->peano-coordinates} for @var{scalar}
+to exact nonnegative integer @var{scalar}. The lists returned by @code{natural->peano-coordinates} for @var{scalar}
arguments 0 and 1 will differ in the first element.
@end defun
-@defun peano-coordinates->integer coords
+@defun peano-coordinates->natural coords
Returns an exact nonnegative integer corresponding to @var{coords}, a list of
nonnegative integer coordinates.
@end defun
+
+@defun integer->peano-coordinates scalar rank
+
+Returns a list of @var{rank} integer coordinates corresponding to exact
+integer @var{scalar}. The lists returned by @code{integer->peano-coordinates} for @var{scalar} arguments 0 and 1 will
+differ in the first element.
+@end defun
+
+
+@defun peano-coordinates->integer coords
+
+Returns an exact integer corresponding to @var{coords}, a list of integer
+coordinates.
+@end defun
+
diff --git a/phil-spc.scm b/phil-spc.scm
index 65863da..ec0bc0f 100644
--- a/phil-spc.scm
+++ b/phil-spc.scm
@@ -1,5 +1,5 @@
; "phil-spc.scm": Hilbert space filling mapping
-; Copyright (C) 2003 Aubrey Jaffer
+; Copyright (C) 2003, 2005 Aubrey Jaffer
;
;Permission to copy this software, to modify it, to redistribute it,
;to distribute modified versions, and to use it for any purpose is
@@ -95,21 +95,28 @@
;;of non-negative integer coordinates.
(define (hilbert-coordinates->integer coords . nbits)
(define rank (length coords))
- (let ((lst (delaminate-list rank (map integer->gray-code coords)))
- (rnkhib (ash 1 (+ -1 rank))))
- (define (loop lst rotation flipbit scalar)
- (if (null? lst)
- (gray-code->integer scalar)
- (let ((chnk (rotate-bit-field (logxor flipbit (car lst))
- (- rotation) 0 rank)))
- (loop (cdr lst)
- (modulo (+ (log2-binary-factors chnk) 2 rotation) rank)
- (ash 1 rotation)
- (logior (logxor rnkhib chnk) (ash scalar rank))))))
- (loop (cdr lst)
- (modulo (+ (log2-binary-factors (car lst)) 2) rank)
- 1
- (car lst))))
+ (set! nbits (if (null? nbits)
+ (* (quotient (+ -1 rank (integer-length (apply max coords)))
+ rank)
+ rank)
+ (car nbits)))
+ (if (zero? nbits)
+ 0
+ (let ((lst (delaminate-list nbits (map integer->gray-code coords)))
+ (rnkhib (ash 1 (+ -1 rank))))
+ (define (loop lst rotation flipbit scalar)
+ (if (null? lst)
+ (gray-code->integer scalar)
+ (let ((chnk (rotate-bit-field (logxor flipbit (car lst))
+ (- rotation) 0 rank)))
+ (loop (cdr lst)
+ (modulo (+ (log2-binary-factors chnk) 2 rotation) rank)
+ (ash 1 rotation)
+ (logior (logxor rnkhib chnk) (ash scalar rank))))))
+ (loop (cdr lst)
+ (modulo (+ (log2-binary-factors (car lst)) 2) rank)
+ 1
+ (car lst)))))
;;@subsubsection Gray code
;;
@@ -183,44 +190,6 @@
;;@subsubsection Bitwise Lamination
;;@cindex lamination
-;;@args k1 @dots{}
-;;Returns an integer composed of the bits of @var{k1} @dots{} interlaced
-;;in argument order. Given @var{k1}, @dots{} @var{kn}, the n low-order
-;;bits of the returned value will be the lowest-order bit of each
-;;argument.
-;;
-;;@args count k
-;;Returns a list of @var{count} integers comprised of every @var{count}h
-;;bit of the integer @var{k}.
-;;
-;;@example
-;;(map (lambda (k) (number->string k 2))
-;; (bitwise-delaminate 4 #x7654))
-;; @result{} ("0" "1111" "1100" "1010")
-;;(number->string (bitwise-laminate 0 #b1111 #b1100 #b1010) 16)
-;; @result{} "7654"
-;@end example
-;;
-;;For any non-negative integers @var{k} and @var{count}:
-;;@example
-;;(eqv? k (bitwise-laminate (bitwise-delaminate count k)))
-;;@end example
-(define (bitwise-laminate . ks)
- (define nks (length ks))
- (define nbs (apply max (map integer-length ks)))
- (do ((kdx (+ -1 nbs) (+ -1 kdx))
- (ibs 0 (+ (list->integer (map (lambda (k) (logbit? kdx k)) ks))
- (arithmetic-shift ibs nks))))
- ((negative? kdx) ibs)))
-(define (bitwise-delaminate count k)
- (define nbs (* count (+ 1 (quotient (integer-length k) count))))
- (do ((kdx (- nbs count) (- kdx count))
- (lst (vector->list (make-vector count 0))
- (map (lambda (k bool) (+ (if bool 1 0) (arithmetic-shift k 1)))
- lst
- (integer->list (arithmetic-shift k (- kdx)) count))))
- ((negative? kdx) lst)))
-
;;@body
;;
;;Returns a list of @var{count} integers comprised of the @var{j}th
diff --git a/phil-spc.txi b/phil-spc.txi
index ac1743c..62b1bae 100644
--- a/phil-spc.txi
+++ b/phil-spc.txi
@@ -110,34 +110,6 @@ corresponding predicate of @var{k1} and @var{k2}.
@cindex lamination
-@defun bitwise-laminate k1 @dots{}
-@defunx bitwise-delaminate count k
-
-Returns an integer composed of the bits of @var{k1} @dots{} interlaced
-in argument order. Given @var{k1}, @dots{} @var{kn}, the n low-order
-bits of the returned value will be the lowest-order bit of each
-argument.
-
-
-@defunx bitwise-laminate count k
-Returns a list of @var{count} integers comprised of every @var{count}h
-bit of the integer @var{k}.
-
-@example
-(map (lambda (k) (number->string k 2))
- (bitwise-delaminate 4 #x7654))
- @result{} ("0" "1111" "1100" "1010")
-(number->string (bitwise-laminate 0 #b1111 #b1100 #b1010) 16)
- @result{} "7654"
-@end example
-
-For any non-negative integers @var{k} and @var{count}:
-@example
-(eqv? k (bitwise-laminate (bitwise-delaminate count k)))
-@end example
-@end defun
-
-
@defun delaminate-list count ks
diff --git a/prec.scm b/prec.scm
index 3d57318..02b7136 100644
--- a/prec.scm
+++ b/prec.scm
@@ -432,7 +432,7 @@
;;; On MS-DOS systems, <ctrl>-Z (26) needs to be ignored in order to
;;; avoid problems at end of files.
(case (software-type)
- ((MS-DOS)
+ ((ms-dos)
(if (not (char-whitespace? (integer->char 26)))
(prec:define-grammar (tok:char-group 0 (integer->char 26) #f))
)))
diff --git a/pscheme.init b/pscheme.init
index a4012d2..bc7a5e5 100644
--- a/pscheme.init
+++ b/pscheme.init
@@ -30,7 +30,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -38,12 +38,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -62,7 +62,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -72,10 +72,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -316,7 +316,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/require.scm b/require.scm
index ec97d7a..c8e8711 100644
--- a/require.scm
+++ b/require.scm
@@ -17,7 +17,7 @@
;promotional, or sales literature without prior written consent in
;each case.
;@
-(define *SLIB-VERSION* "3a2")
+(define *slib-version* "3a3")
;;;; MODULES
;@
@@ -28,11 +28,11 @@
(let ((expr (and (file-exists? path)
(call-with-input-file path (lambda (port) (read port))))))
(and (list? expr) (= 3 (length expr))
- (eq? (car expr) 'define) (eq? (cadr expr) '*SLIB-VERSION*)
+ (eq? (car expr) 'define) (eq? (cadr expr) '*slib-version*)
(string? (caddr expr)) (caddr expr))))
(define (catalog/require-version-match? slibcat)
- (let* ((apair (assq '*SLIB-VERSION* slibcat))
+ (let* ((apair (assq '*slib-version* slibcat))
(req (in-vicinity (library-vicinity)
(string-append "require" (scheme-file-suffix))))
(reqvers (slib:version req)))
@@ -40,7 +40,7 @@
(slib:warn "can't find " req) #f)
((not apair) #f)
((not (equal? reqvers (cdr apair))) #f)
- ((not (equal? reqvers *SLIB-VERSION*))
+ ((not (equal? reqvers *slib-version*))
(slib:warn "The loaded " req " is stale.")
#t)
(else #t))))
@@ -245,7 +245,7 @@
(define slib:report-version
(lambda ()
(report:print
- 'SLIB *SLIB-VERSION* 'on (scheme-implementation-type)
+ 'SLIB *slib-version* 'on (scheme-implementation-type)
(scheme-implementation-version) 'on (software-type))))
(define slib:report-locations
diff --git a/root.scm b/root.scm
index 0a56bc9..3cfdc19 100644
--- a/root.scm
+++ b/root.scm
@@ -40,11 +40,31 @@
(next-fx (f next-x)))
(cond ((>= (abs next-fx) (abs fx)) x)
(else (loop next-x next-fx)))))))))))
+
+;;(define (integer-sqrt y)
+;; (newton:find-integer-root (lambda (x) (- (* x x) y))
+;; (lambda (x) (* 2 x))
+;; (ash 1 (quotient (integer-length y) 2))))
+
+;;;; http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/code/math/isqrt/isqrt.txt
+;;; Akira Kurihara
+;;; School of Mathematics
+;;; Japan Women's University
;@
-(define (integer-sqrt y)
- (newton:find-integer-root (lambda (x) (- (* x x) y))
- (lambda (x) (* 2 x))
- (ash 1 (quotient (integer-length y) 2))))
+(define (integer-sqrt n)
+ (cond ((> n 24) (let* ((length/4 (quotient (- (integer-length n) 1) 4))
+ (sqrt-top (integer-sqrt (ash n (* -2 length/4))))
+ (init-value (ash sqrt-top length/4))
+ (q (quotient n init-value))
+ (iterated-value (quotient (+ init-value q) 2)))
+ (if (odd? q) iterated-value
+ (let ((m (- iterated-value init-value)))
+ (if (< (remainder n init-value) (* m m))
+ (- iterated-value 1)
+ iterated-value)))))
+ ((> n 15) 4) ((> n 8) 3) ((> n 3) 2) ((> n 0) 1) ((> n -1) 0)
+ (else (slib:error 'integer-sqrt n))))
+
;@
(define (newton:find-root f df/dx x_0 prec)
(if (and (negative? prec) (integer? prec))
diff --git a/scheme2c.init b/scheme2c.init
index 057dc76..1bfbde4 100644
--- a/scheme2c.init
+++ b/scheme2c.init
@@ -13,7 +13,7 @@
;; Of course, if you make serious use of library functions you'll want
;; to compile them and use Scheme->C modules.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -31,18 +31,18 @@
(define (implementation-vicinity)
(case (software-type)
- ((UNIX) "/usr/local/lib/scheme/")
- ((VMS) "scheme$src:")
- ((MS-DOS) "C:\\scheme\\")))
+ ((unix) "/usr/local/lib/scheme/")
+ ((vms) "scheme$src:")
+ ((ms-dos) "C:\\scheme\\")))
;;; (library-vicinity) should be defined to be the pathname of the
;;; directory where files of Scheme library functions reside.
(define library-vicinity
(let ((library-path
(case (software-type)
- ((UNIX) "/usr/local/lib/slib/")
- ((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/local/lib/slib/")
+ ((vms) "lib$scheme:")
+ ((ms-dos) "C:\\SLIB\\")
(else ""))))
(lambda () library-path)))
@@ -53,7 +53,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -63,7 +63,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -71,12 +71,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -95,7 +95,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -105,10 +105,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -229,13 +229,13 @@
;;; (FILE-EXISTS? <string>)
(define (file-exists? f)
(case (software-type)
- ((UNIX) (zero? (system (string-append "test -f " f))))
+ ((unix) (zero? (system (string-append "test -f " f))))
(else (slib:error "FILE-EXISTS? not defined for " software-type))))
;;; (DELETE-FILE <string>)
(define (delete-file f)
(case (software-type)
- ((UNIX) (zero? (system (string-append "rm " f))))
+ ((unix) (zero? (system (string-append "rm " f))))
(else (slib:error "DELETE-FILE not defined for " software-type))))
;;; FORCE-OUTPUT flushes any pending output on optional arg output port
@@ -400,7 +400,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/scheme48.init b/scheme48.init
index 8f91d54..0a91cf9 100644
--- a/scheme48.init
+++ b/scheme48.init
@@ -52,7 +52,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -100,7 +100,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -108,12 +108,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -132,7 +132,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -142,10 +142,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -422,7 +422,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(case (software-type)
- ((NOSVE) (lambda () "_scm"))
+ ((nosve) (lambda () "_scm"))
(else (lambda () ".scm"))))
;;; (SLIB:LOAD-SOURCE "foo") should load "foo.scm" or with whatever
@@ -487,5 +487,5 @@
,collect
,batch off
-,dump slib.image "(slib 3a2)"
+,dump slib.image "(slib 3a3)"
,exit
diff --git a/scsh.init b/scsh.init
index 82b24d4..8ce55d8 100644
--- a/scsh.init
+++ b/scsh.init
@@ -5,7 +5,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -39,7 +39,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -49,7 +49,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -57,12 +57,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -81,7 +81,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -91,10 +91,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -345,7 +345,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/slib.info b/slib.info
index 4bc04e2..5585c44 100644
--- a/slib.info
+++ b/slib.info
@@ -1,4 +1,4 @@
-This is slib.info, produced by makeinfo version 4.7 from slib.texi. |
+This is slib.info, produced by makeinfo version 4.7 from slib.texi.
INFO-DIR-SECTION The Algorithmic Language Scheme
START-INFO-DIR-ENTRY
@@ -50,8 +50,8 @@ implementation, user, or directory.

File: slib.info, Node: The Library System, Next: Universal SLIB Procedures, Prev: Top, Up: Top
-1 The Library System |
-******************** |
+1 The Library System
+********************
* Menu:
@@ -65,8 +65,8 @@ File: slib.info, Node: The Library System, Next: Universal SLIB Procedures, P

File: slib.info, Node: Feature, Next: Require, Prev: The Library System, Up: The Library System
-1.1 Feature |
-=========== |
+1.1 Feature
+===========
SLIB denotes "features" by symbols. SLIB maintains a list of features
supported by a Scheme "session". The set of features provided by a
@@ -91,12 +91,12 @@ these numeric features which are appropriate.
Other features correspond to the presence of packages of Scheme
procedures or syntax (macros).
- -- Function: provided? feature |
+ -- Function: provided? feature
Returns `#t' if FEATURE is present in the current Scheme session;
otherwise `#f'. More specifically, `provided?' returns `#t' if
- the symbol FEATURE is the `software-type', the |
- `scheme-implementation-type' (1), or if FEATURE has been provided |
- by a module already loaded; and `#f' otherwise. |
+ the symbol FEATURE is the `software-type', the
+ `scheme-implementation-type' (1), or if FEATURE has been provided
+ by a module already loaded; and `#f' otherwise.
In some implementations `provided?' tests whether a module has
been `require'd by any module or in any thread; other
@@ -113,37 +113,37 @@ procedures or syntax (macros).
The generalization of `provided?' for arbitrary features and catalog is
`feature-eval':
- -- Function: feature-eval expression provided? |
+ -- Function: feature-eval expression provided?
Evaluates `and', `or', and `not' forms in EXPRESSION, using the
values returned by calling PROVIDED? on the leaf symbols.
`feature-eval' returns the boolean result of the logical
combinations.
- -- Procedure: provide feature |
+ -- Procedure: provide feature
Informs SLIB that FEATURE is supported in this session.
(provided? 'foo) => #f
(provide 'foo)
(provided? 'foo) => #t
- ---------- Footnotes ---------- |
- |
- (1) scheme-implementation-type is the name symbol of the running |
-Scheme implementation (RScheme, |STk|, Bigloo, chez, Elk, gambit, |
-guile, JScheme, MacScheme, MITScheme, Pocket-Scheme, Scheme48, |
-Scheme->C, Scheme48, Scsh, T, umb-scheme, or Vscm). Dependence on |
-scheme-implementation-type is almost always the wrong way to do things. |
- |
+ ---------- Footnotes ----------
+
+ (1) scheme-implementation-type is the name symbol of the running
+Scheme implementation (RScheme, |STk|, Bigloo, chez, Elk, gambit,
+guile, JScheme, MacScheme, MITScheme, Pocket-Scheme, Scheme48,
+Scheme->C, Scheme48, Scsh, T, umb-scheme, or Vscm). Dependence on
+scheme-implementation-type is almost always the wrong way to do things.
+

File: slib.info, Node: Require, Next: Library Catalogs, Prev: Feature, Up: The Library System
-1.2 Require |
-=========== |
+1.2 Require
+===========
SLIB creates and maintains a "catalog" mapping features to locations of
files introducing procedures and syntax denoted by those features.
- -- Variable: *catalog* |
+ -- Variable: *catalog*
Is an association list of features (symbols) and pathnames which
will supply those features. The pathname can be either a string
or a pair. If pathname is a pair then the first element should be
@@ -158,7 +158,7 @@ so that these feature names map to the corresponding files.
SLIB provides a form, `require', which loads the files providing the
requested feature.
- -- Procedure: require feature |
+ -- Procedure: require feature
* If `(provided? FEATURE)' is true, then `require' just returns.
* Otherwise, if FEATURE is found in the catalog, then the
@@ -173,7 +173,7 @@ There is a related form `require-if', used primarily for enabling
compilers to statically include modules which would be dynamically
loaded by interpreters.
- -- Procedure: require-if condition feature |
+ -- Procedure: require-if condition feature
Requires FEATURE if CONDITION is true.
The `random' module uses `require-if' to flag `object->string' as a
@@ -187,10 +187,10 @@ The `batch' module uses `require-if' to flag `posix-time' as a module
to load if the implementation supports large precision exact integers.
(require-if '(and bignum compiling) 'posix-time)
- |
+
The catalog can also be queried using `slib:in-catalog?'.
- -- Function: slib:in-catalog? feature |
+ -- Function: slib:in-catalog? feature
Returns a `CDR' of the catalog entry if one was found for the
symbol FEATURE in the alist `*catalog*' (and transitively through
any symbol aliases encountered). Otherwise, returns `#f'. The
@@ -199,8 +199,8 @@ The catalog can also be queried using `slib:in-catalog?'.

File: slib.info, Node: Library Catalogs, Next: Catalog Creation, Prev: Require, Up: The Library System
-1.3 Library Catalogs |
-==================== |
+1.3 Library Catalogs
+====================
Catalog files consist of one or more "association list"s. In the
circumstance where a feature symbol appears in more than one list, the
@@ -220,7 +220,7 @@ for elements of catalog lists:
`slib:load-compiled's the files <path> ....
`(FEATURE aggregate <symbol> ...)'
- `require's the features <symbol> .... |
+ `require's the features <symbol> ....
The various macro styles first `require' the named macro package, then
just load <path> or load-and-macro-expand <path> as appropriate for the
@@ -247,8 +247,8 @@ implementation.

File: slib.info, Node: Catalog Creation, Next: Catalog Vicinities, Prev: Library Catalogs, Up: The Library System
-1.4 Catalog Creation |
-==================== |
+1.4 Catalog Creation
+====================
At the start of an interactive session no catalog is present, but is
created with the first catalog inquiry (such as `(require 'random)').
@@ -279,10 +279,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.
@@ -291,14 +291,14 @@ The compilation scripts of Scheme implementations which work with SLIB
can automatically trigger catalog compilation by deleting `slibcat' or
by invoking `require' of a special feature:
- -- Procedure: require 'new-catalog |
+ -- Procedure: require 'new-catalog
This will load `mklibcat', which compiles and writes a new
`slibcat'.
Another special feature of `require' erases SLIB's catalog, forcing it
to be reloaded the next time the catalog is queried.
- -- Procedure: require #f |
+ -- Procedure: require #f
Removes SLIB's catalog information. This should be done before
saving an executable image so that, when restored, its catalog
will be loaded afresh.
@@ -306,8 +306,8 @@ to be reloaded the next time the catalog is queried.

File: slib.info, Node: Catalog Vicinities, Next: Compiling Scheme, Prev: Catalog Creation, Up: The Library System
-1.5 Catalog Vicinities |
-====================== |
+1.5 Catalog Vicinities
+======================
Each file in the table below is descibed in terms of its file-system
independent "vicinity" (*note Vicinity::). The entries of a catalog in
@@ -359,7 +359,7 @@ Copying `usercat' to many directories is inconvenient. Application
programs which aren't always run in specially prepared directories can
nonetheless register their features during initialization.
- -- Procedure: catalog:read vicinity catalog |
+ -- Procedure: catalog:read vicinity catalog
Reads file named by string CATALOG in VICINITY, resolving all
paths relative to VICINITY, and adds those feature associations to
*CATALOG*.
@@ -384,8 +384,8 @@ registering its catalog associations:

File: slib.info, Node: Compiling Scheme, Prev: Catalog Vicinities, Up: The Library System
-1.6 Compiling Scheme |
-==================== |
+1.6 Compiling Scheme
+====================
To use Scheme compilers effectively with SLIB the compiler needs to
know which SLIB modules are to be compiled and which symbols are
@@ -407,8 +407,8 @@ conventions.

File: slib.info, Node: Module Conventions, Next: Module Manifests, Prev: Compiling Scheme, Up: Compiling Scheme
-1.6.1 Module Conventions |
------------------------- |
+1.6.1 Module Conventions
+------------------------
* All the top-level `require' commands have one quoted argument and
are positioned before other Scheme definitions and expressions in
@@ -430,7 +430,7 @@ File: slib.info, Node: Module Conventions, Next: Module Manifests, Prev: Comp
or `defmacro') suffices.
;@
- (define (identity <obj>) <obj>) |
+ (define (identity <obj>) <obj>)
* Syntax (macro) definitions are grouped at the end of a module file.
@@ -454,8 +454,8 @@ latency for interpreters, it can produce headaches for compilers.

File: slib.info, Node: Module Manifests, Next: Module Semantics, Prev: Module Conventions, Up: Compiling Scheme
-1.6.2 Module Manifests |
----------------------- |
+1.6.2 Module Manifests
+----------------------
`(require 'manifest)'
@@ -465,7 +465,7 @@ It would be defined by:
(define slib:catalog (cdr (member (assq 'null *catalog*) *catalog*)))
- -- Function: file->requires file provided? catalog |
+ -- Function: file->requires file provided? catalog
Returns a list of the features `require'd by FILE assuming the
predicate PROVIDED? and association-list CATALOG.
@@ -479,7 +479,7 @@ It would be defined by:
(file->requires "obj2str.scm" provided? '())
=> (string-port)
- -- Function: feature->requires feature provided? catalog |
+ -- Function: feature->requires feature provided? catalog
Returns a list of the features `require'd by FEATURE assuming the
predicate PROVIDED? and association-list CATALOG.
@@ -495,15 +495,15 @@ It would be defined by:
=> (tree line-i/o databases parameters string-port
pretty-print common-list-functions)
- -- Function: feature->requires* feature provided? catalog |
- Returns a list of the features transitively `require'd by FEATURE |
- assuming the predicate PROVIDED? and association-list CATALOG. |
- |
- -- Function: file->requires* file provided? catalog |
- Returns a list of the features transitively `require'd by FILE |
- assuming the predicate PROVIDED? and association-list CATALOG. |
- |
- -- Function: file->loads file |
+ -- Function: feature->requires* feature provided? catalog
+ Returns a list of the features transitively `require'd by FEATURE
+ assuming the predicate PROVIDED? and association-list CATALOG.
+
+ -- Function: file->requires* file provided? catalog
+ Returns a list of the features transitively `require'd by FILE
+ assuming the predicate PROVIDED? and association-list CATALOG.
+
+ -- Function: file->loads file
Returns a list of strings naming existing files loaded (load
slib:load slib:load-source macro:load defmacro:load syncase:load
synclo:load macwork:load) by FILE or any of the files it loads.
@@ -513,7 +513,7 @@ It would be defined by:
"/usr/local/lib/slib/scaglob.scm"
"/usr/local/lib/slib/scaoutp.scm")
- -- Function: load->path exp |
+ -- Function: load->path exp
Given a `(load '<expr>)', where <expr> is a string or vicinity
stuff), `(load->path <expr>)' figures a path to the file.
`load->path' returns that path if it names an existing file;
@@ -522,24 +522,24 @@ It would be defined by:
(load->path '(in-vicinity (library-vicinity) "mklibcat"))
=> "/usr/local/lib/slib/mklibcat.scm"
- -- Function: file->definitions file definer ... |
+ -- Function: file->definitions file definer ...
Returns a list of the identifier symbols defined by SLIB (or
- SLIB-style) file FILE. The optional arguments DEFINERS should be |
- symbols signifying a defining form. If none are supplied, then |
- the symbols `define-operation', `define', `define-syntax', and |
- `defmacro' are captured. |
+ SLIB-style) file FILE. The optional arguments DEFINERS should be
+ symbols signifying a defining form. If none are supplied, then
+ the symbols `define-operation', `define', `define-syntax', and
+ `defmacro' are captured.
(file->definitions "random.scm")
=> (*random-state* make-random-state
seed->random-state copy-random-state random
random:chunk)
- -- Function: file->exports file definer ... |
+ -- Function: file->exports file definer ...
Returns a list of the identifier symbols exported (advertised) by
- SLIB (or SLIB-style) file FILE. The optional arguments DEFINERS |
- should be symbols signifying a defining form. If none are |
- supplied, then the symbols `define-operation', `define', |
- `define-syntax', and `defmacro' are captured. |
+ SLIB (or SLIB-style) file FILE. The optional arguments DEFINERS
+ should be symbols signifying a defining form. If none are
+ supplied, then the symbols `define-operation', `define',
+ `define-syntax', and `defmacro' are captured.
(file->exports "random.scm")
=> (make-random-state seed->random-state
@@ -550,12 +550,12 @@ It would be defined by:
random:normal-vector! random:normal
random:exp random:uniform)
- -- Function: feature->export-alist feature catalog |
+ -- Function: feature->export-alist feature catalog
Returns a list of lists; each sublist holding the name of the file
implementing FEATURE, and the identifier symbols exported
(advertised) by SLIB (or SLIB-style) feature FEATURE, in CATALOG.
- -- Function: feature->exports feature catalog |
+ -- Function: feature->exports feature catalog
Returns a list of all exports of FEATURE.
In the case of `aggregate' features, more than one file may have export
@@ -586,8 +586,8 @@ lists to report:

File: slib.info, Node: Module Semantics, Next: Top-level Variable References, Prev: Module Manifests, Up: Compiling Scheme
-1.6.3 Module Semantics |
----------------------- |
+1.6.3 Module Semantics
+----------------------
For the purpose of compiling Scheme code, each top-level `require'
makes the identifiers exported by its feature's module `defined' (or
@@ -620,8 +620,8 @@ to compile these constructs may be to treat `provided?' as a macro.

File: slib.info, Node: Top-level Variable References, Next: Module Analysis, Prev: Module Semantics, Up: Compiling Scheme
-1.6.4 Top-level Variable References |
------------------------------------ |
+1.6.4 Top-level Variable References
+-----------------------------------
`(require 'top-refs)'
@@ -631,11 +631,11 @@ work by traversing expressions and definitions, keeping track of
bindings encountered. It is certainly possible to foil these
functions, but they return useful information about SLIB source code.
- -- Function: top-refs obj |
+ -- Function: top-refs obj
Returns a list of the top-level variables referenced by the Scheme
expression OBJ.
- -- Function: top-refs<-file filename |
+ -- Function: top-refs<-file filename
FILENAME should be a string naming an existing file containing
Scheme source code. `top-refs<-file' returns a list of the
top-level variable references made by expressions in the file
@@ -651,13 +651,13 @@ functions, but they return useful information about SLIB source code.
The following function parses an "Info" Index. (1)
- -- Function: exports<-info-index file n ... |
+ -- Function: exports<-info-index file n ...
N ... must be an increasing series of positive integers.
`exports<-info-index' returns a list of all the identifiers
appearing in the Nth ... (info) indexes of FILE. The identifiers
have the case that the implementation's `read' uses for symbols.
Identifiers containing spaces (eg. `close-base on base-table') are
- _not_ included. #f is returned if the index is not found. |
+ _not_ included. #f is returned if the index is not found.
Each info index is headed by a `* Menu:' line. To list the
symbols in the first and third info indexes do:
@@ -676,15 +676,15 @@ in the info file. This command excerpts the SLIB index into

File: slib.info, Node: Module Analysis, Prev: Top-level Variable References, Up: Compiling Scheme
-1.6.5 Module Analysis |
---------------------- |
+1.6.5 Module Analysis
+---------------------
`(require 'vet)'
- -- Function: vet-slib file1 ... |
+ -- Function: vet-slib file1 ...
Using the procedures in the `top-refs' and `manifest' modules,
- `vet-slib' analyzes each SLIB module and FILE1, ..., reporting |
- about any procedure or macro defined whether it is: |
+ `vet-slib' analyzes each SLIB module and FILE1, ..., reporting
+ about any procedure or macro defined whether it is:
orphaned
defined, not called, not exported;
@@ -708,14 +708,14 @@ File: slib.info, Node: Module Analysis, Prev: Top-level Variable References,
errors, undocumented procedures, missing procedures, and cyclic
dependencies in SLIB.
- The optional arguments FILE1, ... provide a simple way to vet |
- prospective SLIB modules. |
- |
+ The optional arguments FILE1, ... provide a simple way to vet
+ prospective SLIB modules.
+

File: slib.info, Node: Universal SLIB Procedures, Next: Scheme Syntax Extension Packages, Prev: The Library System, Up: Top
-2 Universal SLIB Procedures |
-*************************** |
+2 Universal SLIB Procedures
+***************************
The procedures described in these sections are supported by all
implementations as part of the `*.init' files or by `require.scm'.
@@ -731,8 +731,8 @@ implementations as part of the `*.init' files or by `require.scm'.

File: slib.info, Node: Vicinity, Next: Configuration, Prev: Universal SLIB Procedures, Up: Universal SLIB Procedures
-2.1 Vicinity |
-============ |
+2.1 Vicinity
+============
A vicinity is a descriptor for a place in the file system. Vicinities
hide from the programmer the concepts of host, volume, directory, and
@@ -740,56 +740,56 @@ version. Vicinities express only the concept of a file environment
where a file name can be resolved to a file in a system independent
manner. Vicinities can even be used on "flat" file systems (which have
no directory structure) by having the vicinity express constraints on
-the file name. |
+the file name.
- All of these procedures are file-system dependent. Use of these |
-vicinity procedures can make programs file-system _in_dependent. |
+ All of these procedures are file-system dependent. Use of these
+vicinity procedures can make programs file-system _in_dependent.
-These procedures are provided by all implementations. On most systems |
-a vicinity is a string. |
- |
- -- Function: make-vicinity dirpath |
+These procedures are provided by all implementations. On most systems
+a vicinity is a string.
+
+ -- Function: make-vicinity dirpath
Returns DIRPATH as a vicinity for use as first argument to
`in-vicinity'.
- -- Function: pathname->vicinity path |
+ -- Function: pathname->vicinity path
Returns the vicinity containing PATH.
(pathname->vicinity "/usr/local/lib/scm/Link.scm")
=> "/usr/local/lib/scm/"
- -- Function: program-vicinity |
+ -- Function: program-vicinity
Returns the vicinity of the currently loading Scheme code. For an
interpreter this would be the directory containing source code.
For a compiled system (with multiple files) this would be the
directory where the object or executable files are. If no file is
- currently loading, then the result is undefined. *Warning:* |
+ currently loading, then the result is undefined. *Warning:*
`program-vicinity' can return incorrect values if your program
- escapes back into a `load' continuation. |
+ escapes back into a `load' continuation.
- -- Function: library-vicinity |
+ -- Function: library-vicinity
Returns the vicinity of the shared Scheme library.
- -- Function: implementation-vicinity |
+ -- Function: implementation-vicinity
Returns the vicinity of the underlying Scheme implementation. This
vicinity will likely contain startup code and messages and a
compiler.
- -- Function: user-vicinity |
+ -- Function: user-vicinity
Returns the vicinity of the current directory of the user. On most
systems this is `""' (the empty string).
- -- Function: home-vicinity |
- Returns the vicinity of the user's "HOME" directory, the directory which |
- typically contains files which customize a computer environment |
- for a user. If scheme is running without a user (eg. a daemon) or |
- if this concept is meaningless for the platform, then |
+ -- Function: home-vicinity
+ Returns the vicinity of the user's "HOME" directory, the directory which
+ typically contains files which customize a computer environment
+ for a user. If scheme is running without a user (eg. a daemon) or
+ if this concept is meaningless for the platform, then
`home-vicinity' returns `#f'.
- -- Function: vicinity:suffix? chr |
+ -- Function: vicinity:suffix? chr
Returns the `#t' if CHR is a vicinity suffix character; and `#f'
otherwise. Typical vicinity suffixes are `/', `:', and `\',
- -- Function: in-vicinity vicinity filename |
+ -- Function: in-vicinity vicinity filename
Returns a filename suitable for use by `slib:load',
`slib:load-source', `slib:load-compiled', `open-input-file',
`open-output-file', etc. The returned filename is FILENAME in
@@ -800,34 +800,34 @@ a vicinity is a string. |
to the value of `(user-vicinity)' is unspecified. For most systems
`in-vicinity' can be `string-append'.
- -- Function: sub-vicinity vicinity name |
+ -- Function: sub-vicinity vicinity name
Returns the vicinity of VICINITY restricted to NAME. This is used
for large systems where names of files in subsystems could
conflict. On systems with directory structure `sub-vicinity' will
return a pathname of the subdirectory NAME of VICINITY.
- -- Function: with-load-pathname path thunk |
- PATH should be a string naming a file being read or loaded. |
- `with-load-pathname' evaluates THUNK in a dynamic scope where an |
- internal variable is bound to PATH; the internal variable is used |
- for messages and `program-vicinity'. `with-load-pathname' returns |
- the value returned by THUNK. |
- |
+ -- Function: with-load-pathname path thunk
+ PATH should be a string naming a file being read or loaded.
+ `with-load-pathname' evaluates THUNK in a dynamic scope where an
+ internal variable is bound to PATH; the internal variable is used
+ for messages and `program-vicinity'. `with-load-pathname' returns
+ the value returned by THUNK.
+

File: slib.info, Node: Configuration, Next: Input/Output, Prev: Vicinity, Up: Universal SLIB Procedures
-2.2 Configuration |
-================= |
+2.2 Configuration
+=================
These constants and procedures describe characteristics of the Scheme
and underlying operating system. They are provided by all
implementations.
- -- Constant: char-code-limit |
+ -- Constant: char-code-limit
An integer 1 larger that the largest value which can be returned by
`char->integer'.
- -- Constant: most-positive-fixnum |
+ -- Constant: most-positive-fixnum
In implementations which support integers of practically unlimited
size, MOST-POSITIVE-FIXNUM is a large exact integer within the
range of exact integers that may result from computing the length
@@ -838,37 +838,37 @@ implementations.
that may result from computing the length of a list, vector, or
string.
- -- Constant: slib:tab |
+ -- Constant: slib:tab
The tab character.
- -- Constant: slib:form-feed |
+ -- Constant: slib:form-feed
The form-feed character.
- -- Function: software-type |
+ -- Function: software-type
Returns a symbol denoting the generic operating system type. For
instance, `unix', `vms', `macos', `amiga', or `ms-dos'.
- -- Function: slib:report-version |
+ -- Function: slib:report-version
Displays the versions of SLIB and the underlying Scheme
implementation and the name of the operating system. An
unspecified value is returned.
- (slib:report-version) => slib "3a2" on scm "5b1" on unix |
+ (slib:report-version) => slib "3a3" on scm "5b1" on unix |
- -- Function: slib:report |
+ -- Function: slib:report
Displays the information of `(slib:report-version)' followed by
almost all the information neccessary for submitting a problem
report. An unspecified value is returned.
- -- Function: slib:report #t |
+ -- Function: slib:report #t
provides a more verbose listing.
- -- Function: slib:report filename |
+ -- Function: slib:report filename
Writes the report to file `filename'.
(slib:report)
=>
- slib "3a2" on scm "5b1" on unix |
+ slib "3a3" on scm "5b1" on unix |
(implementation-vicinity) is "/usr/local/lib/scm/"
(library-vicinity) is "/usr/local/lib/slib/"
(scheme-file-suffix) is ".scm"
@@ -894,21 +894,21 @@ implementations.

File: slib.info, Node: Input/Output, Next: System, Prev: Configuration, Up: Universal SLIB Procedures
-2.3 Input/Output |
-================ |
+2.3 Input/Output
+================
These procedures are provided by all implementations.
- -- Function: file-exists? filename |
+ -- Function: file-exists? filename
Returns `#t' if the specified file exists. Otherwise, returns
`#f'. If the underlying implementation does not support this
feature then `#f' is always returned.
- -- Function: delete-file filename |
+ -- Function: delete-file filename
Deletes the file specified by FILENAME. If FILENAME can not be
deleted, `#f' is returned. Otherwise, `#t' is returned.
- -- Function: open-file filename modes |
+ -- Function: open-file filename modes
FILENAME should be a string naming a file. `open-file' returns a
port depending on the symbol MODES:
@@ -934,18 +934,18 @@ These procedures are provided by all implementations.
signalled. For output, if a file with the given name already
exists, the effect is unspecified.
- -- Function: port? obj |
+ -- Function: port? obj
Returns #t if OBJ is an input or output port, otherwise returns #f.
- -- Procedure: close-port port |
+ -- Procedure: close-port port
Closes the file associated with PORT, rendering the PORT incapable
of delivering or accepting characters.
`close-file' has no effect if the file has already been closed.
The value returned is unspecified.
- -- Function: call-with-open-ports proc ports ... |
- -- Function: call-with-open-ports ports ... proc |
+ -- Function: call-with-open-ports proc ports ...
+ -- Function: call-with-open-ports ports ... proc
PROC should be a procedure that accepts as many arguments as there
are PORTS passed to `call-with-open-ports'.
`call-with-open-ports' calls PROC with PORTS .... If PROC
@@ -955,30 +955,30 @@ These procedures are provided by all implementations.
to prove that the ports will never again be used for a read or
write operation.
- -- Function: tmpnam |
+ -- Function: tmpnam
Returns a pathname for a file which will likely not be used by any
other process. Successive calls to `(tmpnam)' will return
different pathnames.
- -- Function: current-error-port |
+ -- Function: current-error-port
Returns the current port to which diagnostic and error output is
directed.
- -- Procedure: force-output |
- -- Procedure: force-output port |
+ -- Procedure: force-output
+ -- Procedure: force-output port
Forces any pending output on PORT to be delivered to the output
device and returns an unspecified value. The PORT argument may be
omitted, in which case it defaults to the value returned by
`(current-output-port)'.
- -- Function: output-port-width |
- -- Function: output-port-width port |
+ -- Function: output-port-width
+ -- Function: output-port-width port
Returns the width of PORT, which defaults to
`(current-output-port)' if absent. If the width cannot be
determined 79 is returned.
- -- Function: output-port-height |
- -- Function: output-port-height port |
+ -- Function: output-port-height
+ -- Function: output-port-height port
Returns the height of PORT, which defaults to
`(current-output-port)' if absent. If the height cannot be
determined 24 is returned.
@@ -986,23 +986,23 @@ These procedures are provided by all implementations.

File: slib.info, Node: System, Next: Miscellany, Prev: Input/Output, Up: Universal SLIB Procedures
-2.4 System |
-========== |
+2.4 System
+==========
These procedures are provided by all implementations.
- -- Procedure: slib:load-source name |
+ -- Procedure: slib:load-source name
Loads a file of Scheme source code from NAME with the default
filename extension used in SLIB. For instance if the filename
extension used in SLIB is `.scm' then `(slib:load-source "foo")'
will load from file `foo.scm'.
- -- Procedure: slib:load-compiled name |
+ -- Procedure: slib:load-compiled name
On implementations which support separtely loadable compiled
modules, loads a file of compiled code from NAME with the
implementation's filename extension for compiled code appended.
- -- Procedure: slib:load name |
+ -- Procedure: slib:load name
Loads a file of Scheme source or compiled code from NAME with the
appropriate suffixes appended. If both source and compiled code
are present with the appropriate names then the implementation
@@ -1012,29 +1012,29 @@ These procedures are provided by all implementations.
If an implementation does not support compiled code then
`slib:load' will be identical to `slib:load-source'.
- -- Procedure: slib:eval obj |
+ -- Procedure: slib:eval obj
`eval' returns the value of OBJ evaluated in the current top level
environment. *Note Eval:: provides a more general evaluation
facility.
- -- Procedure: slib:eval-load filename eval |
+ -- Procedure: slib:eval-load filename eval
FILENAME should be a string. If filename names an existing file,
the Scheme source code expressions and definitions are read from
the file and EVAL called with them sequentially. The
`slib:eval-load' procedure does not affect the values returned by
`current-input-port' and `current-output-port'.
- -- Procedure: slib:warn arg1 arg2 ... |
+ -- Procedure: slib:warn arg1 arg2 ...
Outputs a warning message containing the arguments.
- -- Procedure: slib:error arg1 arg2 ... |
+ -- Procedure: slib:error arg1 arg2 ...
Outputs an error message containing the arguments, aborts
evaluation of the current form and responds in a system dependent
way to the error. Typical responses are to abort the program or
to enter a read-eval-print loop.
- -- Procedure: slib:exit n |
- -- Procedure: slib:exit |
+ -- Procedure: slib:exit n
+ -- Procedure: slib:exit
Exits from the Scheme session returning status N to the system.
If N is omitted or `#t', a success status is returned to the
system (if possible). If N is `#f' a failure is returned to the
@@ -1042,7 +1042,7 @@ These procedures are provided by all implementations.
the system (if possible). If the Scheme session cannot exit an
unspecified value is returned from `slib:exit'.
- -- Function: browse-url url |
+ -- Function: browse-url url
Web browsers have become so ubiquitous that programming languagues
should support a uniform interface to them.
@@ -1058,12 +1058,12 @@ These procedures are provided by all implementations.

File: slib.info, Node: Miscellany, Prev: System, Up: Universal SLIB Procedures
-2.5 Miscellany |
-============== |
+2.5 Miscellany
+==============
These procedures are provided by all implementations.
- -- Function: identity x |
+ -- Function: identity x
IDENTITY returns its argument.
Example:
@@ -1074,24 +1074,24 @@ These procedures are provided by all implementations.
(map identity LST)
== (copy-list LST)
- -- Function: expt n k |
- Returns N raised to the non-negative integer exponent K. |
+ -- Function: expt n k
+ Returns N raised to the non-negative integer exponent K.
- Example: |
- (expt 2 5) |
- => 32 |
- (expt -3 3) |
- => -27 |
- |
-2.5.1 Mutual Exclusion |
----------------------- |
- |
-An "exchanger" is a procedure of one argument regulating mutually exclusive |
-access to a resource. When a exchanger is called, its current content |
-is returned, while being replaced by its argument in an atomic |
+ Example:
+ (expt 2 5)
+ => 32
+ (expt -3 3)
+ => -27
+
+2.5.1 Mutual Exclusion
+----------------------
+
+An "exchanger" is a procedure of one argument regulating mutually exclusive
+access to a resource. When a exchanger is called, its current content
+is returned, while being replaced by its argument in an atomic
operation.
- -- Function: make-exchanger obj |
+ -- Function: make-exchanger obj
Returns a new exchanger with the argument OBJ as its initial
content.
@@ -1114,20 +1114,20 @@ operation.
(pop queue) => #f
-2.5.2 Legacy |
------------- |
+2.5.2 Legacy
+------------
The following procedures were present in Scheme until R4RS (*note
Language changes: (r4rs)Notes.). They are provided by all SLIB
implementations.
- -- Constant: t |
+ -- Constant: t
Derfined as `#t'.
- -- Constant: nil |
+ -- Constant: nil
Defined as `#f'.
- -- Function: last-pair l |
+ -- Function: last-pair l
Returns the last pair in the list L. Example:
(last-pair (cons 1 2))
=> (1 . 2)
@@ -1138,8 +1138,8 @@ implementations.

File: slib.info, Node: Scheme Syntax Extension Packages, Next: Textual Conversion Packages, Prev: Universal SLIB Procedures, Up: Top
-3 Scheme Syntax Extension Packages |
-********************************** |
+3 Scheme Syntax Extension Packages
+**********************************
* Menu:
@@ -1153,29 +1153,33 @@ File: slib.info, Node: Scheme Syntax Extension Packages, Next: Textual Convers
Syntax extensions (macros) included with SLIB.
-* Define-Structure:: 'structure |
+* Define-Structure:: 'structure
+* 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 |
* Yasos:: 'yasos, 'oop, 'collect

File: slib.info, Node: Defmacro, Next: R4RS Macros, Prev: Scheme Syntax Extension Packages, Up: Scheme Syntax Extension Packages
-3.1 Defmacro |
-============ |
+3.1 Defmacro
+============
Defmacros are supported by all implementations.
- -- Function: gentemp |
+ -- Function: gentemp
Returns a new (interned) symbol each time it is called. The symbol
names are implementation-dependent
(gentemp) => scm:G0
(gentemp) => scm:G1
- -- Function: defmacro:eval e |
+ -- Function: defmacro:eval e
Returns the `slib:eval' of expanding all defmacros in scheme
expression E.
- -- Function: defmacro:load filename |
+ -- Function: defmacro:load filename
FILENAME should be a string. If filename names an existing file,
the `defmacro:load' procedure reads Scheme source code expressions
and definitions from the file and evaluates them sequentially.
@@ -1183,11 +1187,11 @@ Defmacros are supported by all implementations.
definitions. The `macro:load' procedure does not affect the values
returned by `current-input-port' and `current-output-port'.
- -- Function: defmacro? sym |
+ -- Function: defmacro? sym
Returns `#t' if SYM has been defined by `defmacro', `#f' otherwise.
- -- Function: macroexpand-1 form |
- -- Function: macroexpand form |
+ -- Function: macroexpand-1 form
+ -- Function: macroexpand form
If FORM is a macro call, `macroexpand-1' will expand the macro
call once and return it. A FORM is considered to be a macro call
only if it is a cons whose `car' is a symbol for which a
@@ -1196,26 +1200,26 @@ Defmacros are supported by all implementations.
`macroexpand' is similar to `macroexpand-1', but repeatedly
expands FORM until it is no longer a macro call.
- -- Macro: defmacro name lambda-list form ... |
+ -- Macro: defmacro name lambda-list form ...
When encountered by `defmacro:eval', `defmacro:macroexpand*', or
`defmacro:load' defines a new macro which will henceforth be
expanded when encountered by `defmacro:eval',
`defmacro:macroexpand*', or `defmacro:load'.
-3.1.1 Defmacroexpand |
--------------------- |
+3.1.1 Defmacroexpand
+--------------------
`(require 'defmacroexpand)'
- -- Function: defmacro:expand* e |
+ -- Function: defmacro:expand* e
Returns the result of expanding all defmacros in scheme expression
E.

File: slib.info, Node: R4RS Macros, Next: Macro by Example, Prev: Defmacro, Up: Scheme Syntax Extension Packages
-3.2 R4RS Macros |
-=============== |
+3.2 R4RS Macros
+===============
`(require 'macro)' is the appropriate call if you want R4RS high-level
macros but don't care about the low level implementation. If an SLIB
@@ -1225,15 +1229,15 @@ Otherwise, one of the R4RS macros implemetations is loaded.
The SLIB R4RS macro implementations support the following uniform
interface:
- -- Function: macro:expand sexpression |
+ -- Function: macro:expand sexpression
Takes an R4RS expression, macro-expands it, and returns the result
of the macro expansion.
- -- Function: macro:eval sexpression |
+ -- Function: macro:eval sexpression
Takes an R4RS expression, macro-expands it, evals the result of the
macro expansion, and returns the result of the evaluation.
- -- Procedure: macro:load filename |
+ -- Procedure: macro:load filename
FILENAME should be a string. If filename names an existing file,
the `macro:load' procedure reads Scheme source code expressions and
definitions from the file and evaluates them sequentially. These
@@ -1244,8 +1248,8 @@ interface:

File: slib.info, Node: Macro by Example, Next: Macros That Work, Prev: R4RS Macros, Up: Scheme Syntax Extension Packages
-3.3 Macro by Example |
-==================== |
+3.3 Macro by Example
+====================
`(require 'macro-by-example)'
@@ -1264,8 +1268,8 @@ R4RS) by Dorai Sitaram, (dorai @ cs.rice.edu) using `defmacro'.
natively supported (most implementations)
-3.3.1 Caveat |
------------- |
+3.3.1 Caveat
+------------
These macros are not referentially transparent (*note Macros:
(r4rs)Macros.). Lexically scoped macros (i.e., `let-syntax' and
@@ -1279,7 +1283,7 @@ featureful (but also more expensive) versions of syntax-rules available
in slib *Note Macros That Work::, *Note Syntactic Closures::, and *Note
Syntax-Case Macros::.
- -- Macro: define-syntax keyword transformer-spec |
+ -- Macro: define-syntax keyword transformer-spec
The KEYWORD is an identifier, and the TRANSFORMER-SPEC should be
an instance of `syntax-rules'.
@@ -1296,7 +1300,7 @@ Syntax-Case Macros::.
(let* (( name2 val2) ...)
body1 body2 ...)))))
- -- Macro: syntax-rules literals syntax-rule ... |
+ -- Macro: syntax-rules literals syntax-rule ...
LITERALS is a list of identifiers, and each SYNTAX-RULE should be
of the form
@@ -1319,8 +1323,8 @@ Syntax-Case Macros::.

File: slib.info, Node: Macros That Work, Next: Syntactic Closures, Prev: Macro by Example, Up: Scheme Syntax Extension Packages
-3.4 Macros That Work |
-==================== |
+3.4 Macros That Work
+====================
`(require 'macros-that-work)'
@@ -1328,19 +1332,19 @@ File: slib.info, Node: Macros That Work, Next: Syntactic Closures, Prev: Macr
in that it does not expand derived expression types to primitive
expression types.
- -- Function: macro:expand expression |
- -- Function: macwork:expand expression |
+ -- Function: macro:expand expression
+ -- Function: macwork:expand expression
Takes an R4RS expression, macro-expands it, and returns the result
of the macro expansion.
- -- Function: macro:eval expression |
- -- Function: macwork:eval expression |
+ -- Function: macro:eval expression
+ -- Function: macwork:eval expression
`macro:eval' returns the value of EXPRESSION in the current top
level environment. EXPRESSION can contain macro definitions.
Side effects of EXPRESSION will affect the top level environment.
- -- Procedure: macro:load filename |
- -- Procedure: macwork:load filename |
+ -- Procedure: macro:load filename
+ -- Procedure: macwork:load filename
FILENAME should be a string. If filename names an existing file,
the `macro:load' procedure reads Scheme source code expressions and
definitions from the file and evaluates them sequentially. These
@@ -1355,10 +1359,10 @@ Rees [editors]. To appear in LISP Pointers. Also available as a
technical report from the University of Oregon, MIT AI Lab, and Cornell.
Macros That Work. Clinger and Rees. POPL '91.
- |
- The supported syntax differs from the R4RS in that vectors are allowed |
-as patterns and as templates and are not allowed as pattern or template |
-data. |
+
+ The supported syntax differs from the R4RS in that vectors are allowed
+as patterns and as templates and are not allowed as pattern or template
+data.
transformer spec ==> (syntax-rules literals rules)
@@ -1400,8 +1404,8 @@ data. |
literals ==> ()
| (symbol . literals)
-3.4.1 Definitions |
------------------ |
+3.4.1 Definitions
+-----------------
Scope of an ellipsis
Within a pattern or template, the scope of an ellipsis (`...') is
@@ -1433,8 +1437,8 @@ Variables opened by an ellipsis template
ellipsis template.
-3.4.2 Restrictions |
------------------- |
+3.4.2 Restrictions
+------------------
No pattern variable appears more than once within a pattern.
@@ -1502,24 +1506,24 @@ unnecessarily. That shouldn't matter very often.

File: slib.info, Node: Syntactic Closures, Next: Syntax-Case Macros, Prev: Macros That Work, Up: Scheme Syntax Extension Packages
-3.5 Syntactic Closures |
-====================== |
+3.5 Syntactic Closures
+======================
`(require 'syntactic-closures)'
- -- Function: macro:expand expression |
- -- Function: synclo:expand expression |
+ -- Function: macro:expand expression
+ -- Function: synclo:expand expression
Returns scheme code with the macros and derived expression types of
EXPRESSION expanded to primitive expression types.
- -- Function: macro:eval expression |
- -- Function: synclo:eval expression |
+ -- Function: macro:eval expression
+ -- Function: synclo:eval expression
`macro:eval' returns the value of EXPRESSION in the current top
level environment. EXPRESSION can contain macro definitions.
Side effects of EXPRESSION will affect the top level environment.
- -- Procedure: macro:load filename |
- -- Procedure: synclo:load filename |
+ -- Procedure: macro:load filename
+ -- Procedure: synclo:load filename
FILENAME should be a string. If filename names an existing file,
the `macro:load' procedure reads Scheme source code expressions and
definitions from the file and evaluates them sequentially. These
@@ -1527,17 +1531,17 @@ File: slib.info, Node: Syntactic Closures, Next: Syntax-Case Macros, Prev: Ma
definitions. The `macro:load' procedure does not affect the
values returned by `current-input-port' and `current-output-port'.
-3.5.1 Syntactic Closure Macro Facility |
--------------------------------------- |
+3.5.1 Syntactic Closure Macro Facility
+--------------------------------------
A Syntactic Closures Macro Facility
by Chris Hanson
9 November 1991
- |
- This document describes "syntactic closures", a low-level macro |
-facility for the Scheme programming language. The facility is an |
-alternative to the low-level macro facility described in the `Revised^4 |
-Report on Scheme.' This document is an addendum to that report. |
+
+ This document describes "syntactic closures", a low-level macro
+facility for the Scheme programming language. The facility is an
+alternative to the low-level macro facility described in the `Revised^4
+Report on Scheme.' This document is an addendum to that report.
The syntactic closures facility extends the BNF rule for TRANSFORMER
SPEC to allow a new keyword that introduces a low-level macro
@@ -1557,8 +1561,8 @@ macro transformers are defined. The third part describes the use of
"identifiers", which extend the syntactic closure mechanism to be
compatible with `syntax-rules'.
-3.5.1.1 Terminology |
-................... |
+3.5.1.1 Terminology
+...................
This section defines the concepts and data types used by the syntactic
closures facility.
@@ -1605,13 +1609,13 @@ closures facility.
structure is replaced by its form.
-3.5.1.2 Transformer Definition |
-.............................. |
+3.5.1.2 Transformer Definition
+..............................
This section describes the `transformer' special form and the
procedures `make-syntactic-closure' and `capture-syntactic-environment'.
- -- Syntax: transformer expression |
+ -- Syntax: transformer expression
Syntax: It is an error if this syntax occurs except as a
TRANSFORMER SPEC.
@@ -1675,7 +1679,7 @@ procedures `make-syntactic-closure' and `capture-syntactic-environment'.
`make-syntactic-closure' to close the form in a syntactic
environment.
- -- Function: make-syntactic-closure environment free-names form |
+ -- Function: make-syntactic-closure environment free-names form
ENVIRONMENT must be a syntactic environment, FREE-NAMES must be a
list of identifiers, and FORM must be a form.
`make-syntactic-closure' constructs and returns a syntactic closure
@@ -1709,7 +1713,7 @@ procedures `make-syntactic-closure' and `capture-syntactic-environment'.
To obtain a syntactic environment other than the usage
environment, use `capture-syntactic-environment'.
- -- Function: capture-syntactic-environment procedure |
+ -- Function: capture-syntactic-environment procedure
`capture-syntactic-environment' returns a form that will, when
transformed, call PROCEDURE on the current syntactic environment.
PROCEDURE should compute and return a new form to be transformed,
@@ -1799,8 +1803,8 @@ procedures `make-syntactic-closure' and `capture-syntactic-environment'.
(lambda (transformer-env)
...))))
-3.5.1.3 Identifiers |
-................... |
+3.5.1.3 Identifiers
+...................
This section describes the procedures that create and manipulate
identifiers. Previous syntactic closure proposals did not have an
@@ -1832,7 +1836,7 @@ the usage environment. This guarantees that the macro transformation
is hygienic, without requiring the transformer to know the syntactic
roles of the substituted input subforms.
- -- Function: identifier? object |
+ -- Function: identifier? object
Returns `#t' if OBJECT is an identifier, otherwise returns `#f'.
Examples:
@@ -1866,7 +1870,7 @@ roles of the substituted input subforms.
environment as the symbol `else' means in the transformer
environment.
- -- Function: identifier=? environment1 identifier1 environment2 |
+ -- Function: identifier=? environment1 identifier1 environment2
identifier2
ENVIRONMENT1 and ENVIRONMENT2 must be syntactic environments, and
IDENTIFIER1 and IDENTIFIER2 must be identifiers. `identifier=?'
@@ -1899,8 +1903,8 @@ roles of the substituted input subforms.
(foobar))))
=> (#f #t)
-3.5.1.4 Acknowledgements |
-........................ |
+3.5.1.4 Acknowledgements
+........................
The syntactic closures facility was invented by Alan Bawden and Jonathan
Rees. The use of aliases to implement `syntax-rules' was invented by
@@ -1909,25 +1913,25 @@ proposal is derived from an earlier proposal by Alan Bawden.

File: slib.info, Node: Syntax-Case Macros, Next: Define-Structure, Prev: Syntactic Closures, Up: Scheme Syntax Extension Packages
- |
-3.6 Syntax-Case Macros |
-====================== |
+
+3.6 Syntax-Case Macros
+======================
`(require 'syntax-case)'
- -- Function: macro:expand expression |
- -- Function: syncase:expand expression |
+ -- Function: macro:expand expression
+ -- Function: syncase:expand expression
Returns scheme code with the macros and derived expression types of
EXPRESSION expanded to primitive expression types.
- -- Function: macro:eval expression |
- -- Function: syncase:eval expression |
+ -- Function: macro:eval expression
+ -- Function: syncase:eval expression
`macro:eval' returns the value of EXPRESSION in the current top
level environment. EXPRESSION can contain macro definitions.
Side effects of EXPRESSION will affect the top level environment.
- -- Procedure: macro:load filename |
- -- Procedure: syncase:load filename |
+ -- Procedure: macro:load filename
+ -- Procedure: syncase:load filename
FILENAME should be a string. If filename names an existing file,
the `macro:load' procedure reads Scheme source code expressions and
definitions from the file and evaluates them sequentially. These
@@ -1980,8 +1984,8 @@ distribution by anonymous FTP in
SPARCstation SLC (with SCM) and about 90s on a Macintosh SE/30 (with
Gambit).
-3.6.1 Notes |
------------ |
+3.6.1 Notes
+-----------
All R4RS syntactic forms are defined, including `delay'. Along with
`delay' are simple definitions for `make-promise' (into which `delay'
@@ -2011,67 +2015,86 @@ if there is some incompatibility that is not flagged as such.
(dyb @ iuvax.cs.indiana.edu).

-File: slib.info, Node: Define-Structure, Next: Fluid-Let, Prev: Syntax-Case Macros, Up: Scheme Syntax Extension Packages
+File: slib.info, Node: Define-Structure, Next: Define-Record-Type, Prev: Syntax-Case Macros, Up: Scheme Syntax Extension Packages
|
-3.7 Define-Structure |
-==================== |
+3.7 Define-Structure
+====================
`(require 'structure)'
-Included with the `syntax-case' files was `structure.scm' which defines |
-a macro `define-structure'. Here is its documentation from Gambit 4.0: |
- |
- -- special form: define-structure NAME FIELD... |
- Record data types similar to Pascal records and C `struct' types |
- can be defined using the `define-structure' special form. The |
- identifier NAME specifies the name of the new data type. The |
- structure name is followed by K identifiers naming each field of |
- the record. The `define-structure' expands into a set of |
- definitions of the following procedures: |
- |
- * `make-NAME' - A K argument procedure which constructs a new |
- record from the value of its K fields. |
- |
- * `NAME?' - A procedure which tests if its single argument is |
- of the given record type. |
- |
- * `NAME-FIELD' - For each field, a procedure taking as its |
- single argument a value of the given record type and returning |
- the content of the corresponding field of the record. |
+Included with the `syntax-case' files was `structure.scm' which defines
+a macro `define-structure'. Here is its documentation from Gambit 4.0:
+
+ -- special form: define-structure NAME FIELD...
+ Record data types similar to Pascal records and C `struct' types
+ can be defined using the `define-structure' special form. The
+ identifier NAME specifies the name of the new data type. The
+ structure name is followed by K identifiers naming each field of
+ the record. The `define-structure' expands into a set of
+ definitions of the following procedures:
+
+ * `make-NAME' - A K argument procedure which constructs a new
+ record from the value of its K fields.
+
+ * `NAME?' - A procedure which tests if its single argument is
+ of the given record type.
+
+ * `NAME-FIELD' - For each field, a procedure taking as its
+ single argument a value of the given record type and returning
+ the content of the corresponding field of the record.
+
+ * `NAME-FIELD-set!' - For each field, a two argument procedure
+ taking as its first argument a value of the given record
+ type. The second argument gets assigned to the corresponding
+ field of the record and the void object is returned.
+
+
+ Gambit record data types have a printed representation that
+ includes the name of the type and the name and value of each field.
+
+ For example:
+
+ > (define-structure point x y color)
+ > (define p (make-point 3 5 'red))
+ > p
+ #<point #3 x: 3 y: 5 color: red>
+ > (point-x p)
+ 3
+ > (point-color p)
+ red
+ > (point-color-set! p 'black)
+ > p
+ #<point #3 x: 3 y: 5 color: black>
+
+
+
+File: slib.info, Node: Define-Record-Type, Next: Fluid-Let, Prev: Define-Structure, Up: Scheme Syntax Extension Packages
|
- * `NAME-FIELD-set!' - For each field, a two argument procedure |
- taking as its first argument a value of the given record |
- type. The second argument gets assigned to the corresponding |
- field of the record and the void object is returned. |
+3.8 Define-Record-Type |
+====================== |
|
+`(require 'define-record-type)' or `(require 'srfi-9)' |
|
- Gambit record data types have a printed representation that |
- includes the name of the type and the name and value of each field. |
+ `http://srfi.schemers.org/srfi-9/srfi-9.html' |
|
- For example: |
+ -- 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-structure point x y color) |
- > (define p (make-point 3 5 'red)) |
- > p |
- #<point #3 x: 3 y: 5 color: red> |
- > (point-x p) |
- 3 |
- > (point-color p) |
- red |
- > (point-color-set! p 'black) |
- > p |
- #<point #3 x: 3 y: 5 color: black> |
+ `define-record-type' is a syntax wrapper for the SLIB `record' |
+ module. |
|
-

-File: slib.info, Node: Fluid-Let, Next: Yasos, Prev: Define-Structure, Up: Scheme Syntax Extension Packages
+File: slib.info, Node: Fluid-Let, Next: Binding to multiple values, Prev: Define-Record-Type, Up: Scheme Syntax Extension Packages
|
-3.8 Fluid-Let |
-============= |
+3.9 Fluid-Let |
+=============
`(require 'fluid-let)'
- -- Syntax: fluid-let `(BINDINGS ...)' FORMS... |
+ -- Syntax: fluid-let `(BINDINGS ...)' FORMS...
(fluid-let ((VARIABLE INIT) ...)
EXPRESSION EXPRESSION ...)
@@ -2089,10 +2112,82 @@ each INIT to the binding (determined by the rules of lexical scoping)
of its corresponding VARIABLE.

-File: slib.info, Node: Yasos, Prev: Fluid-Let, Up: Scheme Syntax Extension Packages
-
-3.9 Yasos |
-========= |
+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' |
+ |
+
+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' |
+ |
+
+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) |
+ |
+
+File: slib.info, Node: Yasos, Prev: Guarded COND Clause, Up: Scheme Syntax Extension Packages
+ |
+3.13 Yasos |
+========== |
`(require 'oop)' or `(require 'yasos)'
@@ -2116,8 +2211,8 @@ on LISP and Functional Programming, July 1988 [ACM #552880].

File: slib.info, Node: Yasos terms, Next: Yasos interface, Prev: Yasos, Up: Yasos
-3.9.1 Terms |
------------ |
+3.13.1 Terms |
+------------ |
"Object"
Any Scheme data object.
@@ -2147,25 +2242,25 @@ _Disclaimer:_

File: slib.info, Node: Yasos interface, Next: Setters, Prev: Yasos terms, Up: Yasos
-3.9.2 Interface |
---------------- |
+3.13.2 Interface |
+---------------- |
- -- Syntax: define-operation `('opname self arg ...`)' DEFAULT-BODY |
+ -- Syntax: define-operation `('opname self arg ...`)' DEFAULT-BODY
Defines a default behavior for data objects which don't handle the
operation OPNAME. The default behavior (for an empty
DEFAULT-BODY) is to generate an error.
- -- Syntax: define-predicate opname? |
+ -- Syntax: define-predicate opname?
Defines a predicate OPNAME?, usually used for determining the
"type" of an object, such that `(OPNAME? OBJECT)' returns `#t' if
OBJECT has an operation OPNAME? and `#f' otherwise.
- -- Syntax: object `((NAME SELF ARG ...) BODY)' ... |
+ -- Syntax: object `((NAME SELF ARG ...) BODY)' ...
Returns an object (an instance of the object system) with
operations. Invoking `(NAME OBJECT ARG ...' executes the BODY of
the OBJECT with SELF bound to OBJECT and with argument(s) ARG....
- -- Syntax: object-with-ancestors `(('ancestor1 init1`)' ...`)' |
+ -- Syntax: object-with-ancestors `(('ancestor1 init1`)' ...`)'
operation ...
A `let'-like form of `object' for multiple inheritance. It
returns an object inheriting the behaviour of ANCESTOR1 etc. An
@@ -2174,17 +2269,17 @@ File: slib.info, Node: Yasos interface, Next: Setters, Prev: Yasos terms, Up
operations with the same identity, the operation used is the one
found in the first ancestor in the ancestor list.
- -- Syntax: operate-as component operation self arg ... |
+ -- Syntax: operate-as component operation self arg ...
Used in an operation definition (of SELF) to invoke the OPERATION
in an ancestor COMPONENT but maintain the object's identity. Also
known as "send-to-super".
- -- Procedure: print obj port |
+ -- Procedure: print obj port
A default `print' operation is provided which is just `(format
PORT OBJ)' (*note Format::) for non-instances and prints OBJ
preceded by `#<INSTANCE>' for instances.
- -- Function: size obj |
+ -- Function: size obj
The default method returns the number of elements in OBJ if it is
a vector, string or list, `2' for a pair, `1' for a character and
by default id an error otherwise. Objects such as collections
@@ -2193,8 +2288,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.9.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
@@ -2211,7 +2306,7 @@ are predefined, corresponding to getters `car', `cdr', `string-ref' and
Research and Technology). Common LISP provides similar facilities
through `setf'.
- -- Function: setter getter |
+ -- Function: setter getter
Returns the setter for the procedure GETTER. E.g., since
`string-ref' is the getter corresponding to a setter which is
actually `string-set!':
@@ -2219,7 +2314,7 @@ through `setf'.
((setter string-ref) foo 0 #\F) ; set element 0 of foo
foo => "Foo"
- -- Syntax: set place new-value |
+ -- Syntax: set place new-value
If PLACE is a variable name, `set' is equivalent to `set!'.
Otherwise, PLACE must have the form of a procedure call, where the
procedure name refers to a getter and the call indicates an
@@ -2232,17 +2327,17 @@ through `setf'.
(set foo "foo") ; like set!
foo => "foo"
- -- Procedure: add-setter getter setter |
+ -- Procedure: add-setter getter setter
Add procedures GETTER and SETTER to the (inaccessible) list of
valid setter/getter pairs. SETTER implements the store operation
corresponding to the GETTER access operation for the relevant
state. The return value is unspecified.
- -- Procedure: remove-setter-for getter |
+ -- Procedure: remove-setter-for getter
Removes the setter corresponding to the specified GETTER from the
list of valid setters. The return value is unspecified.
- -- Syntax: define-access-operation getter-name |
+ -- Syntax: define-access-operation getter-name
Shorthand for a Yasos `define-operation' defining an operation
GETTER-NAME that objects may support to return the value of some
mutable state. The default operation is to signal an error. The
@@ -2251,8 +2346,8 @@ through `setf'.

File: slib.info, Node: Yasos examples, Prev: Setters, Up: Yasos
-3.9.4 Examples |
--------------- |
+3.13.4 Examples |
+--------------- |
;;; These definitions for PRINT and SIZE are
;;; already supplied by
@@ -2351,8 +2446,8 @@ File: slib.info, Node: Yasos examples, Prev: Setters, Up: Yasos

File: slib.info, Node: Textual Conversion Packages, Next: Mathematical Packages, Prev: Scheme Syntax Extension Packages, Up: Top
-4 Textual Conversion Packages |
-***************************** |
+4 Textual Conversion Packages
+*****************************
* Menu:
@@ -2373,8 +2468,8 @@ File: slib.info, Node: Textual Conversion Packages, Next: Mathematical Package

File: slib.info, Node: Precedence Parsing, Next: Format, Prev: Textual Conversion Packages, Up: Textual Conversion Packages
-4.1 Precedence Parsing |
-====================== |
+4.1 Precedence Parsing
+======================
`(require 'precedence-parse)' or `(require 'parse)'
@@ -2401,8 +2496,8 @@ This package implements:

File: slib.info, Node: Precedence Parsing Overview, Next: Rule Types, Prev: Precedence Parsing, Up: Precedence Parsing
-4.1.1 Precedence Parsing Overview |
---------------------------------- |
+4.1.1 Precedence Parsing Overview
+---------------------------------
This package offers improvements over previous parsers.
@@ -2434,7 +2529,7 @@ 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 |
+(`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.
@@ -2446,65 +2541,65 @@ file) with a non-trivial grammar utilizing all constructs.

File: slib.info, Node: Rule Types, Next: Ruleset Definition and Use, Prev: Precedence Parsing Overview, Up: Precedence Parsing
-4.1.2 Rule Types |
----------------- |
+4.1.2 Rule Types
+----------------
Here are the higher-level syntax types and an example of each.
Precedence considerations are omitted for clarity. See *Note Grammar
Rule Definition:: for full details.
- -- Grammar: nofix bye exit |
+ -- Grammar: nofix bye exit
bye
calls the function `exit' with no arguments.
- -- Grammar: prefix - negate |
+ -- Grammar: prefix - negate
- 42
Calls the function `negate' with the argument `42'.
- -- Grammar: infix - difference |
+ -- Grammar: infix - difference
x - y
Calls the function `difference' with arguments `x' and `y'.
- -- Grammar: nary + sum |
+ -- Grammar: nary + sum
x + y + z
Calls the function `sum' with arguments `x', `y', and `y'.
- -- Grammar: postfix ! factorial |
+ -- Grammar: postfix ! factorial
5 !
Calls the function `factorial' with the argument `5'.
- -- Grammar: prestfix set set! |
+ -- Grammar: prestfix set set!
set foo bar
Calls the function `set!' with the arguments `foo' and `bar'.
- -- Grammar: commentfix /* */ |
+ -- Grammar: commentfix /* */
/* almost any text here */
Ignores the comment delimited by `/*' and `*/'.
- -- Grammar: matchfix { list } |
+ -- Grammar: matchfix { list }
{0, 1, 2}
Calls the function `list' with the arguments `0', `1', and `2'.
- -- Grammar: inmatchfix ( funcall ) |
+ -- Grammar: inmatchfix ( funcall )
f(x, y)
Calls the function `funcall' with the arguments `f', `x', and `y'.
- -- Grammar: delim ; |
+ -- Grammar: delim ;
set foo bar;
delimits the extent of the restfix operator `set'.

File: slib.info, Node: Ruleset Definition and Use, Next: Token definition, Prev: Rule Types, Up: Precedence Parsing
-4.1.3 Ruleset Definition and Use |
--------------------------------- |
+4.1.3 Ruleset Definition and Use
+--------------------------------
- -- Variable: *syn-defs* |
+ -- Variable: *syn-defs*
A grammar is built by one or more calls to `prec:define-grammar'.
The rules are appended to *SYN-DEFS*. The value of *SYN-DEFS* is
the grammar suitable for passing as an argument to `prec:parse'.
- -- Constant: *syn-ignore-whitespace* |
+ -- Constant: *syn-ignore-whitespace*
Is a nearly empty grammar with whitespace characters set to group
0, which means they will not be made into tokens. Most rulesets
will want to start with `*syn-ignore-whitespace*'
@@ -2516,7 +2611,7 @@ In order to start defining a grammar, either
(set! *syn-defs* *syn-ignore-whitespace*)
- -- Function: prec:define-grammar rule1 ... |
+ -- Function: prec:define-grammar rule1 ...
Appends RULE1 ... to *SYN-DEFS*. `prec:define-grammar' is used to
define both the character classes and rules for tokens.
@@ -2525,8 +2620,8 @@ variable (for use when calling `prec:parse').
(define my-ruleset *syn-defs*)
- -- Function: prec:parse ruleset delim |
- -- Function: prec:parse ruleset delim port |
+ -- Function: prec:parse ruleset delim
+ -- Function: prec:parse ruleset delim port
The RULESET argument must be a list of rules as constructed by
`prec:define-grammar' and extracted from *SYN-DEFS*.
@@ -2555,10 +2650,10 @@ variable (for use when calling `prec:parse').

File: slib.info, Node: Token definition, Next: Nud and Led Definition, Prev: Ruleset Definition and Use, Up: Precedence Parsing
-4.1.4 Token definition |
----------------------- |
+4.1.4 Token definition
+----------------------
- -- Function: tok:char-group group chars chars-proc |
+ -- Function: tok:char-group group chars chars-proc
The argument CHARS may be a single character, a list of
characters, or a string. Each character in CHARS is treated as
though `tok:char-group' was called with that character alone.
@@ -2592,18 +2687,18 @@ File: slib.info, Node: Token definition, Next: Nud and Led Definition, Prev:
The following convenient constants are provided for use with
`tok:char-group'.
- -- Constant: tok:decimal-digits |
+ -- Constant: tok:decimal-digits
Is the string `"0123456789"'.
- -- Constant: tok:upper-case |
+ -- Constant: tok:upper-case
Is the string consisting of all upper-case letters
("ABCDEFGHIJKLMNOPQRSTUVWXYZ").
- -- Constant: tok:lower-case |
+ -- Constant: tok:lower-case
Is the string consisting of all lower-case letters
("abcdefghijklmnopqrstuvwxyz").
- -- Constant: tok:whitespaces |
+ -- Constant: tok:whitespaces
Is the string consisting of all characters between 0 and 255 for
which `char-whitespace?' returns true.
@@ -2612,14 +2707,14 @@ keeps track of the "current column". When the column does not simply
track input characters, `tok:bump-column' can be used to adjust the
current-column.
- -- Function: tok:bump-column pos port |
+ -- Function: tok:bump-column pos port
Adds POS to the current-column for input-port PORT.

File: slib.info, Node: Nud and Led Definition, Next: Grammar Rule Definition, Prev: Token definition, Up: Precedence Parsing
-4.1.5 Nud and Led Definition |
----------------------------- |
+4.1.5 Nud and Led Definition
+----------------------------
This section describes advanced features. You can skip this section on
first reading.
@@ -2653,7 +2748,7 @@ Character TK arguments will match only character tokens; i.e.
characters for which no token-group is assigned. Symbols and strings
will both match token strings; i.e. tokens resulting from token groups.
- -- Function: prec:make-nud tk sop arg1 ... |
+ -- Function: prec:make-nud tk sop arg1 ...
Returns a rule specifying that SOP be called when TK is parsed.
If SOP is a procedure, it is called with TK and ARG1 ... as its
arguments; the resulting value is incorporated into the expression
@@ -2663,7 +2758,7 @@ If no NUD has been defined for a token; then if that token is a string,
it is converted to a symbol and returned; if not a string, the token is
returned.
- -- Function: prec:make-led tk sop arg1 ... |
+ -- Function: prec:make-led tk sop arg1 ...
Returns a rule specifying that SOP be called when TK is parsed and
LEFT has an unclaimed parsed expression. If SOP is a procedure,
it is called with LEFT, TK, and ARG1 ... as its arguments; the
@@ -2676,8 +2771,8 @@ issues a warning.

File: slib.info, Node: Grammar Rule Definition, Prev: Nud and Led Definition, Up: Precedence Parsing
-4.1.6 Grammar Rule Definition |
------------------------------ |
+4.1.6 Grammar Rule Definition
+-----------------------------
Here are procedures for defining rules for the syntax types introduced
in *Note Precedence Parsing Overview::.
@@ -2696,19 +2791,19 @@ Character TK arguments will match only character tokens; i.e.
characters for which no token-group is assigned. Symbols and strings
will both match token strings; i.e. tokens resulting from token groups.
- -- Function: prec:delim tk |
+ -- Function: prec:delim tk
Returns a rule specifying that TK should not be returned from
parsing; i.e. TK's function is purely syntactic. The end-of-file
is always treated as a delimiter.
- -- Function: prec:nofix tk sop |
+ -- Function: prec:nofix tk sop
Returns a rule specifying the following actions take place when TK
is parsed:
* If SOP is a procedure, it is called with no arguments; the
resulting value is incorporated into the expression being
built. Otherwise, the list of SOP is incorporated.
- -- Function: prec:prefix tk sop bp rule1 ... |
+ -- Function: prec:prefix tk sop bp rule1 ...
Returns a rule specifying the following actions take place when TK
is parsed:
* The rules RULE1 ... augment and, in case of conflict, override
@@ -2725,7 +2820,7 @@ will both match token strings; i.e. tokens resulting from token groups.
* The ruleset in effect before TK was parsed is restored; RULE1
... are forgotten.
- -- Function: prec:infix tk sop lbp bp rule1 ... |
+ -- Function: prec:infix tk sop lbp bp rule1 ...
Returns a rule declaring the left-binding-precedence of the token
TK is LBP and specifying the following actions take place when TK
is parsed:
@@ -2744,7 +2839,7 @@ will both match token strings; i.e. tokens resulting from token groups.
* The ruleset in effect before TK was parsed is restored; RULE1
... are forgotten.
- -- Function: prec:nary tk sop bp |
+ -- Function: prec:nary tk sop bp
Returns a rule declaring the left-binding-precedence of the token
TK is BP and specifying the following actions take place when TK
is parsed:
@@ -2757,7 +2852,7 @@ will both match token strings; i.e. tokens resulting from token groups.
the LEFT expression, and the parsed expressions is
incorporated.
- -- Function: prec:postfix tk sop lbp |
+ -- Function: prec:postfix tk sop lbp
Returns a rule declaring the left-binding-precedence of the token
TK is LBP and specifying the following actions take place when TK
is parsed:
@@ -2766,7 +2861,7 @@ will both match token strings; i.e. tokens resulting from token groups.
built. Otherwise, the list of SOP and the LEFT expression is
incorporated.
- -- Function: prec:prestfix tk sop bp rule1 ... |
+ -- Function: prec:prestfix tk sop bp rule1 ...
Returns a rule specifying the following actions take place when TK
is parsed:
* The rules RULE1 ... augment and, in case of conflict, override
@@ -2783,7 +2878,7 @@ will both match token strings; i.e. tokens resulting from token groups.
* The ruleset in effect before TK was parsed is restored; RULE1
... are forgotten.
- -- Function: prec:commentfix tk stp match rule1 ... |
+ -- Function: prec:commentfix tk stp match rule1 ...
Returns rules specifying the following actions take place when TK
is parsed:
* The rules RULE1 ... augment and, in case of conflict, override
@@ -2803,7 +2898,7 @@ will both match token strings; i.e. tokens resulting from token groups.
STP but does not return its value; nay any value. I added the STP
argument so that comment text could be echoed.
- -- Function: prec:matchfix tk sop sep match rule1 ... |
+ -- Function: prec:matchfix tk sop sep match rule1 ...
Returns a rule specifying the following actions take place when TK
is parsed:
* The rules RULE1 ... augment and, in case of conflict, override
@@ -2823,7 +2918,7 @@ will both match token strings; i.e. tokens resulting from token groups.
* The ruleset in effect before TK was parsed is restored; RULE1
... are forgotten.
- -- Function: prec:inmatchfix tk sop sep match lbp rule1 ... |
+ -- Function: prec:inmatchfix tk sop sep match lbp rule1 ...
Returns a rule declaring the left-binding-precedence of the token
TK is LBP and specifying the following actions take place when TK
is parsed:
@@ -2848,520 +2943,520 @@ will both match token strings; i.e. tokens resulting from token groups.

File: slib.info, Node: Format, Next: Standard Formatted I/O, Prev: Precedence Parsing, Up: Textual Conversion Packages
-4.2 Format (version 3.1) |
-======================== |
+4.2 Format (version 3.1)
+========================
+
+`(require 'format)'
+
+* Menu:
+
+* Format Interface::
+* Format Specification::
-`(require 'format)' |
- |
-* Menu: |
- |
-* Format Interface:: |
-* Format Specification:: |
- |

File: slib.info, Node: Format Interface, Next: Format Specification, Prev: Format, Up: Format
- |
-4.2.1 Format Interface |
----------------------- |
- |
- -- Function: format destination format-string . arguments |
- An almost complete implementation of Common LISP format description |
- according to the CL reference book `Common LISP' from Guy L. |
- Steele, Digital Press. Backward compatible to most of the |
- available Scheme format implementations. |
- |
- Returns `#t', `#f' or a string; has side effect of printing |
- according to FORMAT-STRING. If DESTINATION is `#t', the output is |
- to the current output port and `#t' is returned. If DESTINATION |
- is `#f', a formatted string is returned as the result of the call. |
- NEW: If DESTINATION is a string, DESTINATION is regarded as the |
- format string; FORMAT-STRING is then the first argument and the |
- output is returned as a string. If DESTINATION is a number, the |
- output is to the current error port if available by the |
- implementation. Otherwise DESTINATION must be an output port and |
- `#t' is returned. |
- |
- FORMAT-STRING must be a string. In case of a formatting error |
- format returns `#f' and prints a message on the current output or |
- error port. Characters are output as if the string were output by |
- the `display' function with the exception of those prefixed by a |
- tilde (~). For a detailed description of the FORMAT-STRING syntax |
- please consult a Common LISP format reference manual. For a test |
- suite to verify this format implementation load `formatst.scm'. |
- Please send bug reports to `lutzeb@cs.tu-berlin.de'. |
- |
- Note: `format' is not reentrant, i.e. only one `format'-call may |
- be executed at a time. |
- |
- |
+
+4.2.1 Format Interface
+----------------------
+
+ -- Function: format destination format-string . arguments
+ An almost complete implementation of Common LISP format description
+ according to the CL reference book `Common LISP' from Guy L.
+ Steele, Digital Press. Backward compatible to most of the
+ available Scheme format implementations.
+
+ Returns `#t', `#f' or a string; has side effect of printing
+ according to FORMAT-STRING. If DESTINATION is `#t', the output is
+ to the current output port and `#t' is returned. If DESTINATION
+ is `#f', a formatted string is returned as the result of the call.
+ NEW: If DESTINATION is a string, DESTINATION is regarded as the
+ format string; FORMAT-STRING is then the first argument and the
+ output is returned as a string. If DESTINATION is a number, the
+ output is to the current error port if available by the
+ implementation. Otherwise DESTINATION must be an output port and
+ `#t' is returned.
+
+ FORMAT-STRING must be a string. In case of a formatting error
+ format returns `#f' and prints a message on the current output or
+ error port. Characters are output as if the string were output by
+ the `display' function with the exception of those prefixed by a
+ tilde (~). For a detailed description of the FORMAT-STRING syntax
+ please consult a Common LISP format reference manual. For a test
+ suite to verify this format implementation load `formatst.scm'.
+ Please send bug reports to `lutzeb@cs.tu-berlin.de'.
+
+ Note: `format' is not reentrant, i.e. only one `format'-call may
+ be executed at a time.
+
+

File: slib.info, Node: Format Specification, Prev: Format Interface, Up: Format
- |
-4.2.2 Format Specification (Format version 3.1) |
------------------------------------------------ |
- |
-Please consult a Common LISP format reference manual for a detailed |
-description of the format string syntax. For a demonstration of the |
-implemented directives see `formatst.scm'. |
- |
- This implementation supports directive parameters and modifiers (`:' |
-and `@' characters). Multiple parameters must be separated by a comma |
-(`,'). Parameters can be numerical parameters (positive or negative), |
-character parameters (prefixed by a quote character (`''), variable |
-parameters (`v'), number of rest arguments parameter (`#'), empty and |
-default parameters. Directive characters are case independent. The |
-general form of a directive is: |
- |
-DIRECTIVE ::= ~{DIRECTIVE-PARAMETER,}[:][@]DIRECTIVE-CHARACTER |
- |
-DIRECTIVE-PARAMETER ::= [ [-|+]{0-9}+ | 'CHARACTER | v | # ] |
- |
-4.2.2.1 Implemented CL Format Control Directives |
-................................................ |
- |
-Documentation syntax: Uppercase characters represent the corresponding |
-control directive characters. Lowercase characters represent control |
-directive parameter descriptions. |
- |
-`~A' |
- Any (print as `display' does). |
- `~@A' |
- left pad. |
- |
- `~MINCOL,COLINC,MINPAD,PADCHARA' |
- full padding. |
- |
-`~S' |
- S-expression (print as `write' does). |
- `~@S' |
- left pad. |
- |
- `~MINCOL,COLINC,MINPAD,PADCHARS' |
- full padding. |
- |
-`~D' |
- Decimal. |
- `~@D' |
- print number sign always. |
- |
- `~:D' |
- print comma separated. |
- |
- `~MINCOL,PADCHAR,COMMACHARD' |
- padding. |
- |
-`~X' |
- Hexadecimal. |
- `~@X' |
- print number sign always. |
- |
- `~:X' |
- print comma separated. |
- |
- `~MINCOL,PADCHAR,COMMACHARX' |
- padding. |
- |
-`~O' |
- Octal. |
- `~@O' |
- print number sign always. |
- |
- `~:O' |
- print comma separated. |
- |
- `~MINCOL,PADCHAR,COMMACHARO' |
- padding. |
- |
-`~B' |
- Binary. |
- `~@B' |
- print number sign always. |
- |
- `~:B' |
- print comma separated. |
- |
- `~MINCOL,PADCHAR,COMMACHARB' |
- padding. |
- |
-`~NR' |
- Radix N. |
- `~N,MINCOL,PADCHAR,COMMACHARR' |
- padding. |
- |
-`~@R' |
- print a number as a Roman numeral. |
- |
-`~:@R' |
- print a number as an "old fashioned" Roman numeral. |
- |
-`~:R' |
- print a number as an ordinal English number. |
- |
-`~R' |
- print a number as a cardinal English number. |
- |
-`~P' |
- Plural. |
- `~@P' |
- prints `y' and `ies'. |
- |
- `~:P' |
- as `~P but jumps 1 argument backward.' |
- |
- `~:@P' |
- as `~@P but jumps 1 argument backward.' |
- |
-`~C' |
- Character. |
- `~@C' |
- prints a character as the reader can understand it (i.e. `#\' |
- prefixing). |
- |
- `~:C' |
- prints a character as emacs does (eg. `^C' for ASCII 03). |
- |
-`~F' |
- Fixed-format floating-point (prints a flonum like MMM.NNN). |
- `~WIDTH,DIGITS,SCALE,OVERFLOWCHAR,PADCHARF' |
- |
- `~@F' |
- If the number is positive a plus sign is printed. |
- |
-`~E' |
- Exponential floating-point (prints a flonum like MMM.NNN`E'EE). |
- `~WIDTH,DIGITS,EXPONENTDIGITS,SCALE,OVERFLOWCHAR,PADCHAR,EXPONENTCHARE' |
- |
- `~@E' |
- If the number is positive a plus sign is printed. |
- |
-`~G' |
- General floating-point (prints a flonum either fixed or |
- exponential). |
- `~WIDTH,DIGITS,EXPONENTDIGITS,SCALE,OVERFLOWCHAR,PADCHAR,EXPONENTCHARG' |
- |
- `~@G' |
- If the number is positive a plus sign is printed. |
- |
-`~$' |
- Dollars floating-point (prints a flonum in fixed with signs |
- separated). |
- `~DIGITS,SCALE,WIDTH,PADCHAR$' |
- |
- `~@$' |
- If the number is positive a plus sign is printed. |
- |
- `~:@$' |
- A sign is always printed and appears before the padding. |
- |
- `~:$' |
- The sign appears before the padding. |
- |
-`~%' |
- Newline. |
- `~N%' |
- print N newlines. |
- |
-`~&' |
- print newline if not at the beginning of the output line. |
- `~N&' |
- prints `~&' and then N-1 newlines. |
- |
-`~|' |
- Page Separator. |
- `~N|' |
- print N page separators. |
- |
-`~~' |
- Tilde. |
- `~N~' |
- print N tildes. |
- |
-`~'<newline> |
- Continuation Line. |
- `~:'<newline> |
- newline is ignored, white space left. |
- |
- `~@'<newline> |
- newline is left, white space ignored. |
- |
-`~T' |
- Tabulation. |
- `~@T' |
- relative tabulation. |
- |
- `~COLNUM,COLINCT' |
- full tabulation. |
- |
-`~?' |
- Indirection (expects indirect arguments as a list). |
- `~@?' |
- extracts indirect arguments from format arguments. |
- |
-`~(STR~)' |
- Case conversion (converts by `string-downcase'). |
- `~:(STR~)' |
- converts by `string-capitalize'. |
- |
- `~@(STR~)' |
- converts by `string-capitalize-first'. |
- |
- `~:@(STR~)' |
- converts by `string-upcase'. |
- |
-`~*' |
- Argument Jumping (jumps 1 argument forward). |
- `~N*' |
- jumps N arguments forward. |
- |
- `~:*' |
- jumps 1 argument backward. |
- |
- `~N:*' |
- jumps N arguments backward. |
- |
- `~@*' |
- jumps to the 0th argument. |
- |
- `~N@*' |
- jumps to the Nth argument (beginning from 0) |
- |
-`~[STR0~;STR1~;...~;STRN~]' |
- Conditional Expression (numerical clause conditional). |
- `~N[' |
- take argument from N. |
- |
- `~@[' |
- true test conditional. |
- |
- `~:[' |
- if-else-then conditional. |
- |
- `~;' |
- clause separator. |
- |
- `~:;' |
- default clause follows. |
- |
-`~{STR~}' |
- Iteration (args come from the next argument (a list)). Iteration |
- bounding is controlled by configuration variables |
- FORMAT:ITERATION-BOUNDED and FORMAT:MAX-ITERATIONS. With both |
- variables default, a maximum of 100 iterations will be performed. |
- `~N{' |
- at most N iterations. |
- |
- `~:{' |
- args from next arg (a list of lists). |
- |
- `~@{' |
- args from the rest of arguments. |
- |
- `~:@{' |
- args from the rest args (lists). |
- |
-`~^' |
- Up and out. |
- `~N^' |
- aborts if N = 0 |
- |
- `~N,M^' |
- aborts if N = M |
- |
- `~N,M,K^' |
- aborts if N <= M <= K |
- |
-4.2.2.2 Not Implemented CL Format Control Directives |
-.................................................... |
- |
-`~:A' |
- print `#f' as an empty list (see below). |
- |
-`~:S' |
- print `#f' as an empty list (see below). |
- |
-`~<~>' |
- Justification. |
- |
-`~:^' |
- (sorry I don't understand its semantics completely) |
- |
-4.2.2.3 Extended, Replaced and Additional Control Directives |
-............................................................ |
- |
-`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHD' |
- |
-`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHX' |
- |
-`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHO' |
- |
-`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHB' |
- |
-`~N,MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHR' |
- COMMAWIDTH is the number of characters between two comma |
- characters. |
- |
-`~I' |
- print a R4RS complex number as `~F~@Fi' with passed parameters for |
- `~F'. |
- |
-`~Y' |
- Pretty print formatting of an argument for scheme code lists. |
- |
-`~K' |
- Same as `~?.' |
- |
-`~!' |
- Flushes the output if format DESTINATION is a port. |
- |
-`~_' |
- Print a `#\space' character |
- `~N_' |
- print N `#\space' characters. |
- |
-`~/' |
- Print a `#\tab' character |
- `~N/' |
- print N `#\tab' characters. |
- |
-`~NC' |
- Takes N as an integer representation for a character. No arguments |
- are consumed. N is converted to a character by `integer->char'. N |
- must be a positive decimal number. |
- |
-`~:S' |
- Print out readproof. Prints out internal objects represented as |
- `#<...>' as strings `"#<...>"' so that the format output can always |
- be processed by `read'. |
- |
-`~:A' |
- Print out readproof. Prints out internal objects represented as |
- `#<...>' as strings `"#<...>"' so that the format output can always |
- be processed by `read'. |
- |
-`~Q' |
- Prints information and a copyright notice on the format |
- implementation. |
- `~:Q' |
- prints format version. |
- |
-`~F, ~E, ~G, ~$' |
- may also print number strings, i.e. passing a number as a string |
- and format it accordingly. |
- |
-4.2.2.4 Configuration Variables |
-............................... |
- |
-Format has some configuration variables at the beginning of |
-`format.scm' to suit the systems and users needs. There should be no |
-modification necessary for the configuration that comes with SLIB. If |
-modification is desired the variable should be set after the format |
-code is loaded. Format detects automatically if the running scheme |
-system implements floating point numbers and complex numbers. |
- |
-FORMAT:SYMBOL-CASE-CONV |
- Symbols are converted by `symbol->string' so the case type of the |
- printed symbols is implementation dependent. |
- `format:symbol-case-conv' is a one arg closure which is either |
- `#f' (no conversion), `string-upcase', `string-downcase' or |
- `string-capitalize'. (default `#f') |
- |
-FORMAT:IOBJ-CASE-CONV |
- As FORMAT:SYMBOL-CASE-CONV but applies for the representation of |
- implementation internal objects. (default `#f') |
- |
-FORMAT:EXPCH |
- The character prefixing the exponent value in `~E' printing. |
- (default `#\E') |
- |
-FORMAT:ITERATION-BOUNDED |
- When `#t', a `~{...~}' control will iterate no more than the |
- number of times specified by FORMAT:MAX-ITERATIONS regardless of |
- the number of iterations implied by modifiers and arguments. When |
- `#f', a `~{...~}' control will iterate the number of times implied |
- by modifiers and arguments, unless termination is forced by |
- language or system limitations. (default `#t') |
- |
-FORMAT:MAX-ITERATIONS |
- The maximum number of iterations performed by a `~{...~}' control. |
- Has effect only when FORMAT:ITERATION-BOUNDED is `#t'. (default |
- 100) |
- |
- |
-4.2.2.5 Compatibility With Other Format Implementations |
-....................................................... |
- |
-SLIB format 2.x: |
- See `format.doc'. |
- |
-SLIB format 1.4: |
- Downward compatible except for padding support and `~A', `~S', |
- `~P', `~X' uppercase printing. SLIB format 1.4 uses C-style |
- `printf' padding support which is completely replaced by the CL |
- `format' padding style. |
- |
-MIT C-Scheme 7.1: |
- Downward compatible except for `~', which is not documented |
- (ignores all characters inside the format string up to a newline |
- character). (7.1 implements `~a', `~s', ~NEWLINE, `~~', `~%', |
- numerical and variable parameters and `:/@' modifiers in the CL |
- sense). |
- |
-Elk 1.5/2.0: |
- Downward compatible except for `~A' and `~S' which print in |
- uppercase. (Elk implements `~a', `~s', `~~', and `~%' (no |
- directive parameters or modifiers)). |
- |
-Scheme->C 01nov91: |
- Downward compatible except for an optional destination parameter: |
- S2C accepts a format call without a destination which returns a |
- formatted string. This is equivalent to a #f destination in S2C. |
- (S2C implements `~a', `~s', `~c', `~%', and `~~' (no directive |
- parameters or modifiers)). |
- |
- |
- This implementation of format is solely useful in the SLIB context |
-because it requires other components provided by SLIB. |
+
+4.2.2 Format Specification (Format version 3.1)
+-----------------------------------------------
+
+Please consult a Common LISP format reference manual for a detailed
+description of the format string syntax. For a demonstration of the
+implemented directives see `formatst.scm'.
+
+ This implementation supports directive parameters and modifiers (`:'
+and `@' characters). Multiple parameters must be separated by a comma
+(`,'). Parameters can be numerical parameters (positive or negative),
+character parameters (prefixed by a quote character (`''), variable
+parameters (`v'), number of rest arguments parameter (`#'), empty and
+default parameters. Directive characters are case independent. The
+general form of a directive is:
+
+DIRECTIVE ::= ~{DIRECTIVE-PARAMETER,}[:][@]DIRECTIVE-CHARACTER
+
+DIRECTIVE-PARAMETER ::= [ [-|+]{0-9}+ | 'CHARACTER | v | # ]
+
+4.2.2.1 Implemented CL Format Control Directives
+................................................
+
+Documentation syntax: Uppercase characters represent the corresponding
+control directive characters. Lowercase characters represent control
+directive parameter descriptions.
+
+`~A'
+ Any (print as `display' does).
+ `~@A'
+ left pad.
+
+ `~MINCOL,COLINC,MINPAD,PADCHARA'
+ full padding.
+
+`~S'
+ S-expression (print as `write' does).
+ `~@S'
+ left pad.
+
+ `~MINCOL,COLINC,MINPAD,PADCHARS'
+ full padding.
+
+`~D'
+ Decimal.
+ `~@D'
+ print number sign always.
+
+ `~:D'
+ print comma separated.
+
+ `~MINCOL,PADCHAR,COMMACHARD'
+ padding.
+
+`~X'
+ Hexadecimal.
+ `~@X'
+ print number sign always.
+
+ `~:X'
+ print comma separated.
+
+ `~MINCOL,PADCHAR,COMMACHARX'
+ padding.
+
+`~O'
+ Octal.
+ `~@O'
+ print number sign always.
+
+ `~:O'
+ print comma separated.
+
+ `~MINCOL,PADCHAR,COMMACHARO'
+ padding.
+
+`~B'
+ Binary.
+ `~@B'
+ print number sign always.
+
+ `~:B'
+ print comma separated.
+
+ `~MINCOL,PADCHAR,COMMACHARB'
+ padding.
+
+`~NR'
+ Radix N.
+ `~N,MINCOL,PADCHAR,COMMACHARR'
+ padding.
+
+`~@R'
+ print a number as a Roman numeral.
+
+`~:@R'
+ print a number as an "old fashioned" Roman numeral.
+
+`~:R'
+ print a number as an ordinal English number.
+
+`~R'
+ print a number as a cardinal English number.
+
+`~P'
+ Plural.
+ `~@P'
+ prints `y' and `ies'.
+
+ `~:P'
+ as `~P but jumps 1 argument backward.'
+
+ `~:@P'
+ as `~@P but jumps 1 argument backward.'
+
+`~C'
+ Character.
+ `~@C'
+ prints a character as the reader can understand it (i.e. `#\'
+ prefixing).
+
+ `~:C'
+ prints a character as emacs does (eg. `^C' for ASCII 03).
+
+`~F'
+ Fixed-format floating-point (prints a flonum like MMM.NNN).
+ `~WIDTH,DIGITS,SCALE,OVERFLOWCHAR,PADCHARF'
+
+ `~@F'
+ If the number is positive a plus sign is printed.
+
+`~E'
+ Exponential floating-point (prints a flonum like MMM.NNN`E'EE).
+ `~WIDTH,DIGITS,EXPONENTDIGITS,SCALE,OVERFLOWCHAR,PADCHAR,EXPONENTCHARE'
+
+ `~@E'
+ If the number is positive a plus sign is printed.
+
+`~G'
+ General floating-point (prints a flonum either fixed or
+ exponential).
+ `~WIDTH,DIGITS,EXPONENTDIGITS,SCALE,OVERFLOWCHAR,PADCHAR,EXPONENTCHARG'
+
+ `~@G'
+ If the number is positive a plus sign is printed.
+
+`~$'
+ Dollars floating-point (prints a flonum in fixed with signs
+ separated).
+ `~DIGITS,SCALE,WIDTH,PADCHAR$'
+
+ `~@$'
+ If the number is positive a plus sign is printed.
+
+ `~:@$'
+ A sign is always printed and appears before the padding.
+
+ `~:$'
+ The sign appears before the padding.
+
+`~%'
+ Newline.
+ `~N%'
+ print N newlines.
+
+`~&'
+ print newline if not at the beginning of the output line.
+ `~N&'
+ prints `~&' and then N-1 newlines.
+
+`~|'
+ Page Separator.
+ `~N|'
+ print N page separators.
+
+`~~'
+ Tilde.
+ `~N~'
+ print N tildes.
+
+`~'<newline>
+ Continuation Line.
+ `~:'<newline>
+ newline is ignored, white space left.
+
+ `~@'<newline>
+ newline is left, white space ignored.
+
+`~T'
+ Tabulation.
+ `~@T'
+ relative tabulation.
+
+ `~COLNUM,COLINCT'
+ full tabulation.
+
+`~?'
+ Indirection (expects indirect arguments as a list).
+ `~@?'
+ extracts indirect arguments from format arguments.
+
+`~(STR~)'
+ Case conversion (converts by `string-downcase').
+ `~:(STR~)'
+ converts by `string-capitalize'.
+
+ `~@(STR~)'
+ converts by `string-capitalize-first'.
+
+ `~:@(STR~)'
+ converts by `string-upcase'.
+
+`~*'
+ Argument Jumping (jumps 1 argument forward).
+ `~N*'
+ jumps N arguments forward.
+
+ `~:*'
+ jumps 1 argument backward.
+
+ `~N:*'
+ jumps N arguments backward.
+
+ `~@*'
+ jumps to the 0th argument.
+
+ `~N@*'
+ jumps to the Nth argument (beginning from 0)
+
+`~[STR0~;STR1~;...~;STRN~]'
+ Conditional Expression (numerical clause conditional).
+ `~N['
+ take argument from N.
+
+ `~@['
+ true test conditional.
+
+ `~:['
+ if-else-then conditional.
+
+ `~;'
+ clause separator.
+
+ `~:;'
+ default clause follows.
+
+`~{STR~}'
+ Iteration (args come from the next argument (a list)). Iteration
+ bounding is controlled by configuration variables
+ FORMAT:ITERATION-BOUNDED and FORMAT:MAX-ITERATIONS. With both
+ variables default, a maximum of 100 iterations will be performed.
+ `~N{'
+ at most N iterations.
+
+ `~:{'
+ args from next arg (a list of lists).
+
+ `~@{'
+ args from the rest of arguments.
+
+ `~:@{'
+ args from the rest args (lists).
+
+`~^'
+ Up and out.
+ `~N^'
+ aborts if N = 0
+
+ `~N,M^'
+ aborts if N = M
+
+ `~N,M,K^'
+ aborts if N <= M <= K
+
+4.2.2.2 Not Implemented CL Format Control Directives
+....................................................
+
+`~:A'
+ print `#f' as an empty list (see below).
+
+`~:S'
+ print `#f' as an empty list (see below).
+
+`~<~>'
+ Justification.
+
+`~:^'
+ (sorry I don't understand its semantics completely)
+
+4.2.2.3 Extended, Replaced and Additional Control Directives
+............................................................
+
+`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHD'
+
+`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHX'
+
+`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHO'
+
+`~MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHB'
+
+`~N,MINCOL,PADCHAR,COMMACHAR,COMMAWIDTHR'
+ COMMAWIDTH is the number of characters between two comma
+ characters.
+
+`~I'
+ print a R4RS complex number as `~F~@Fi' with passed parameters for
+ `~F'.
+
+`~Y'
+ Pretty print formatting of an argument for scheme code lists.
+
+`~K'
+ Same as `~?.'
+
+`~!'
+ Flushes the output if format DESTINATION is a port.
+
+`~_'
+ Print a `#\space' character
+ `~N_'
+ print N `#\space' characters.
+
+`~/'
+ Print a `#\tab' character
+ `~N/'
+ print N `#\tab' characters.
+
+`~NC'
+ Takes N as an integer representation for a character. No arguments
+ are consumed. N is converted to a character by `integer->char'. N
+ must be a positive decimal number.
+
+`~:S'
+ Print out readproof. Prints out internal objects represented as
+ `#<...>' as strings `"#<...>"' so that the format output can always
+ be processed by `read'.
+
+`~:A'
+ Print out readproof. Prints out internal objects represented as
+ `#<...>' as strings `"#<...>"' so that the format output can always
+ be processed by `read'.
+
+`~Q'
+ Prints information and a copyright notice on the format
+ implementation.
+ `~:Q'
+ prints format version.
+
+`~F, ~E, ~G, ~$'
+ may also print number strings, i.e. passing a number as a string
+ and format it accordingly.
+
+4.2.2.4 Configuration Variables
+...............................
+
+Format has some configuration variables at the beginning of
+`format.scm' to suit the systems and users needs. There should be no
+modification necessary for the configuration that comes with SLIB. If
+modification is desired the variable should be set after the format
+code is loaded. Format detects automatically if the running scheme
+system implements floating point numbers and complex numbers.
+
+FORMAT:SYMBOL-CASE-CONV
+ Symbols are converted by `symbol->string' so the case type of the
+ printed symbols is implementation dependent.
+ `format:symbol-case-conv' is a one arg closure which is either
+ `#f' (no conversion), `string-upcase', `string-downcase' or
+ `string-capitalize'. (default `#f')
+
+FORMAT:IOBJ-CASE-CONV
+ As FORMAT:SYMBOL-CASE-CONV but applies for the representation of
+ implementation internal objects. (default `#f')
+
+FORMAT:EXPCH
+ The character prefixing the exponent value in `~E' printing.
+ (default `#\E')
+
+FORMAT:ITERATION-BOUNDED
+ When `#t', a `~{...~}' control will iterate no more than the
+ number of times specified by FORMAT:MAX-ITERATIONS regardless of
+ the number of iterations implied by modifiers and arguments. When
+ `#f', a `~{...~}' control will iterate the number of times implied
+ by modifiers and arguments, unless termination is forced by
+ language or system limitations. (default `#t')
+
+FORMAT:MAX-ITERATIONS
+ The maximum number of iterations performed by a `~{...~}' control.
+ Has effect only when FORMAT:ITERATION-BOUNDED is `#t'. (default
+ 100)
+
+
+4.2.2.5 Compatibility With Other Format Implementations
+.......................................................
+
+SLIB format 2.x:
+ See `format.doc'.
+
+SLIB format 1.4:
+ Downward compatible except for padding support and `~A', `~S',
+ `~P', `~X' uppercase printing. SLIB format 1.4 uses C-style
+ `printf' padding support which is completely replaced by the CL
+ `format' padding style.
+
+MIT C-Scheme 7.1:
+ Downward compatible except for `~', which is not documented
+ (ignores all characters inside the format string up to a newline
+ character). (7.1 implements `~a', `~s', ~NEWLINE, `~~', `~%',
+ numerical and variable parameters and `:/@' modifiers in the CL
+ sense).
+
+Elk 1.5/2.0:
+ Downward compatible except for `~A' and `~S' which print in
+ uppercase. (Elk implements `~a', `~s', `~~', and `~%' (no
+ directive parameters or modifiers)).
+
+Scheme->C 01nov91:
+ Downward compatible except for an optional destination parameter:
+ S2C accepts a format call without a destination which returns a
+ formatted string. This is equivalent to a #f destination in S2C.
+ (S2C implements `~a', `~s', `~c', `~%', and `~~' (no directive
+ parameters or modifiers)).
+
+
+ This implementation of format is solely useful in the SLIB context
+because it requires other components provided by SLIB.

File: slib.info, Node: Standard Formatted I/O, Next: Programs and Arguments, Prev: Format, Up: Textual Conversion Packages
-4.3 Standard Formatted I/O |
-========================== |
+4.3 Standard Formatted I/O
+==========================
* Menu:
* Standard Formatted Output:: 'printf
* Standard Formatted Input:: 'scanf
-4.3.1 stdio |
------------ |
+4.3.1 stdio
+-----------
`(require 'stdio)'
`require's `printf' and `scanf' and additionally defines the symbols:
- -- Variable: stdin |
+ -- Variable: stdin
Defined to be `(current-input-port)'.
- -- Variable: stdout |
+ -- Variable: stdout
Defined to be `(current-output-port)'.
- -- Variable: stderr |
+ -- Variable: stderr
Defined to be `(current-error-port)'.

File: slib.info, Node: Standard Formatted Output, Next: Standard Formatted Input, Prev: Standard Formatted I/O, Up: Standard Formatted I/O
-4.3.2 Standard Formatted Output |
-------------------------------- |
+4.3.2 Standard Formatted Output
+-------------------------------
`(require 'printf)'
- -- Procedure: printf format arg1 ... |
- -- Procedure: fprintf port format arg1 ... |
- -- Procedure: sprintf str format arg1 ... |
- -- Procedure: sprintf #f format arg1 ... |
- -- Procedure: sprintf k format arg1 ... |
+ -- Procedure: printf format arg1 ...
+ -- Procedure: fprintf port format arg1 ...
+ -- Procedure: sprintf str format arg1 ...
+ -- Procedure: sprintf #f format arg1 ...
+ -- Procedure: sprintf k format arg1 ...
Each function converts, formats, and outputs its ARG1 ...
arguments according to the control string FORMAT argument and
returns the number of characters output.
@@ -3487,8 +3582,8 @@ File: slib.info, Node: Standard Formatted Output, Next: Standard Formatted Inp
* A character that specifies the conversion to be applied.
-4.3.2.1 Exact Conversions |
-......................... |
+4.3.2.1 Exact Conversions
+.........................
`b', `B'
Print an integer as an unsigned binary number.
@@ -3511,8 +3606,8 @@ File: slib.info, Node: Standard Formatted Output, Next: Standard Formatted Inp
prints using the digits `0123456789abcdef'. `%X' prints
using the digits `0123456789ABCDEF'.
-4.3.2.2 Inexact Conversions |
-........................... |
+4.3.2.2 Inexact Conversions
+...........................
`f'
Print a floating-point number in fixed-point notation.
@@ -3532,12 +3627,12 @@ File: slib.info, Node: Standard Formatted Output, Next: Standard Formatted Inp
`k', `K'
Print a number like `%g', except that an SI prefix is output
- after the number, which is scaled accordingly. `%K' outputs a |
- dot between number and prefix, `%k' does not. |
+ after the number, which is scaled accordingly. `%K' outputs a
+ dot between number and prefix, `%k' does not.
-4.3.2.3 Other Conversions |
-......................... |
+4.3.2.3 Other Conversions
+.........................
`c'
Print a single character. The `-' flag is the only one which
@@ -3567,18 +3662,18 @@ File: slib.info, Node: Standard Formatted Output, Next: Standard Formatted Inp

File: slib.info, Node: Standard Formatted Input, Prev: Standard Formatted Output, Up: Standard Formatted I/O
-4.3.3 Standard Formatted Input |
------------------------------- |
+4.3.3 Standard Formatted Input
+------------------------------
`(require 'scanf)'
- -- Function: scanf-read-list format |
- -- Function: scanf-read-list format port |
- -- Function: scanf-read-list format string |
+ -- Function: scanf-read-list format
+ -- Function: scanf-read-list format port
+ -- Function: scanf-read-list format string
- -- Macro: scanf format arg1 ... |
- -- Macro: fscanf port format arg1 ... |
- -- Macro: sscanf str format arg1 ... |
+ -- Macro: scanf format arg1 ...
+ -- Macro: fscanf port format arg1 ...
+ -- Macro: sscanf str format arg1 ...
Each function reads characters, interpreting them according to the
control string FORMAT argument.
@@ -3726,8 +3821,8 @@ File: slib.info, Node: Standard Formatted Input, Prev: Standard Formatted Outp

File: slib.info, Node: Programs and Arguments, Next: HTML, Prev: Standard Formatted I/O, Up: Textual Conversion Packages
-4.4 Program and Arguments |
-========================= |
+4.4 Program and Arguments
+=========================
* Menu:
@@ -3741,8 +3836,8 @@ File: slib.info, Node: Programs and Arguments, Next: HTML, Prev: Standard For

File: slib.info, Node: Getopt, Next: Command Line, Prev: Programs and Arguments, Up: Programs and Arguments
-4.4.1 Getopt |
------------- |
+4.4.1 Getopt
+------------
`(require 'getopt)'
@@ -3762,21 +3857,21 @@ mismatch existed for years in a SLIB `getopt--' example.
I have removed the ARGC and ARGV arguments to getopt procedures; and
replaced them with a global variable:
- -- Variable: *argv* |
+ -- Variable: *argv*
Define *ARGV* with a list of arguments before calling getopt
procedures. If you don't want the first (0th) element to be
ignored, set *OPTIND* to 0 (after requiring getopt).
- -- Variable: *optind* |
+ -- Variable: *optind*
Is the index of the current element of the command line. It is
initially one. In order to parse a new command line or reparse an
old one, *OPTIND* must be reset.
- -- Variable: *optarg* |
+ -- Variable: *optarg*
Is set by getopt to the (string) option-argument of the current
option.
- -- Function: getopt optstring |
+ -- Function: getopt optstring
Returns the next option letter in *ARGV* (starting from
`(vector-ref argv *optind*)') that matches a letter in OPTSTRING.
*ARGV* is a vector or list of strings, the 0th of which getopt
@@ -3859,10 +3954,10 @@ replaced them with a global variable:
(slib:exit)
-4.4.2 Getopt-- |
--------------- |
+4.4.2 Getopt--
+--------------
- -- Function: `getopt--' optstring |
+ -- Function: `getopt--' optstring
The procedure `getopt--' is an extended version of `getopt' which
parses "long option names" of the form `--hold-the-onions' and
`--verbosity-level=extreme'. `Getopt--' behaves as `getopt'
@@ -3898,17 +3993,17 @@ replaced them with a global variable:

File: slib.info, Node: Command Line, Next: Parameter lists, Prev: Getopt, Up: Programs and Arguments
-4.4.3 Command Line |
------------------- |
+4.4.3 Command Line
+------------------
`(require 'read-command)'
- -- Function: read-command port |
- -- Function: read-command |
- `read-command' converts a "command line" into a list of strings suitable |
- for parsing by `getopt'. The syntax of command lines supported |
- resembles that of popular "shell"s. `read-command' updates PORT |
- to point to the first character past the command delimiter. |
+ -- Function: read-command port
+ -- Function: read-command
+ `read-command' converts a "command line" into a list of strings suitable
+ for parsing by `getopt'. The syntax of command lines supported
+ resembles that of popular "shell"s. `read-command' updates PORT
+ to point to the first character past the command delimiter.
If an end of file is encountered in the input before any
characters are found that can begin an object or comment, then an
@@ -3959,11 +4054,11 @@ File: slib.info, Node: Command Line, Next: Parameter lists, Prev: Getopt, Up
treated as whitespace by `read-dommand-line' and backslashes
before <newline>s in comments are also ignored.
- -- Function: read-options-file filename |
- `read-options-file' converts an "options file" into a list of strings |
- suitable for parsing by `getopt'. The syntax of options files is |
- the same as the syntax for command lines, except that <newline>s |
- do not terminate reading (only <;> or end of file). |
+ -- Function: read-options-file filename
+ `read-options-file' converts an "options file" into a list of strings
+ suitable for parsing by `getopt'. The syntax of options files is
+ the same as the syntax for command lines, except that <newline>s
+ do not terminate reading (only <;> or end of file).
If an end of file is encountered before any characters are found
that can begin an object or comment, then an end of file object is
@@ -3972,8 +4067,8 @@ File: slib.info, Node: Command Line, Next: Parameter lists, Prev: Getopt, Up

File: slib.info, Node: Parameter lists, Next: Getopt Parameter lists, Prev: Command Line, Up: Programs and Arguments
-4.4.4 Parameter lists |
---------------------- |
+4.4.4 Parameter lists
+---------------------
`(require 'parameters)'
@@ -3991,25 +4086,25 @@ allows for more than one value per parameter-name.
A PARAMETER-LIST is a list of PARAMETERs, each with a different
PARAMETER-NAME.
- -- Function: make-parameter-list parameter-names |
+ -- Function: make-parameter-list parameter-names
Returns an empty parameter-list with slots for PARAMETER-NAMES.
- -- Function: parameter-list-ref parameter-list parameter-name |
+ -- Function: parameter-list-ref parameter-list parameter-name
PARAMETER-NAME must name a valid slot of PARAMETER-LIST.
`parameter-list-ref' returns the value of parameter PARAMETER-NAME
of PARAMETER-LIST.
- -- Function: remove-parameter parameter-name parameter-list |
+ -- Function: remove-parameter parameter-name parameter-list
Removes the parameter PARAMETER-NAME from PARAMETER-LIST.
`remove-parameter' does not alter the argument PARAMETER-LIST.
If there are more than one PARAMETER-NAME parameters, an error is
signaled.
- -- Procedure: adjoin-parameters! parameter-list parameter1 ... |
+ -- Procedure: adjoin-parameters! parameter-list parameter1 ...
Returns PARAMETER-LIST with PARAMETER1 ... merged in.
- -- Procedure: parameter-list-expand expanders parameter-list |
+ -- Procedure: parameter-list-expand expanders parameter-list
EXPANDERS is a list of procedures whose order matches the order of
the PARAMETER-NAMEs in the call to `make-parameter-list' which
created PARAMETER-LIST. For each non-false element of EXPANDERS
@@ -4019,7 +4114,7 @@ PARAMETER-NAME.
This process is repeated until PARAMETER-LIST stops growing. The
value returned from `parameter-list-expand' is unspecified.
- -- Function: fill-empty-parameters defaulters parameter-list |
+ -- Function: fill-empty-parameters defaulters parameter-list
DEFAULTERS is a list of procedures whose order matches the order
of the PARAMETER-NAMEs in the call to `make-parameter-list' which
created PARAMETER-LIST. `fill-empty-parameters' returns a new
@@ -4027,7 +4122,7 @@ PARAMETER-NAME.
returned by calling the corresponding DEFAULTER with
PARAMETER-LIST as its argument.
- -- Function: check-parameters checks parameter-list |
+ -- Function: check-parameters checks parameter-list
CHECKS is a list of procedures whose order matches the order of
the PARAMETER-NAMEs in the call to `make-parameter-list' which
created PARAMETER-LIST.
@@ -4054,7 +4149,7 @@ of `arities' can be:
`nary1'
One or more of parameters are acceptable.
- -- Function: parameter-list->arglist positions arities parameter-list |
+ -- Function: parameter-list->arglist positions arities parameter-list
Returns PARAMETER-LIST converted to an argument list. Parameters
of ARITY type `single' and `boolean' are converted to the single
value associated with them. The other ARITY types are converted
@@ -4068,13 +4163,13 @@ of `arities' can be:

File: slib.info, Node: Getopt Parameter lists, Next: Filenames, Prev: Parameter lists, Up: Programs and Arguments
-4.4.5 Getopt Parameter lists |
----------------------------- |
+4.4.5 Getopt Parameter lists
+----------------------------
`(require 'getopt-parameters)'
- -- Function: getopt->parameter-list optnames arities types aliases |
- desc ... |
+ -- Function: getopt->parameter-list optnames arities types aliases
+ desc ...
Returns *ARGV* converted to a parameter-list. OPTNAMES are the
parameter-names. ARITIES and TYPES are lists of symbols
corresponding to OPTNAMES.
@@ -4100,7 +4195,7 @@ File: slib.info, Node: Getopt Parameter lists, Next: Filenames, Prev: Paramet
In all cases, if unclaimed arguments remain after processing, a
warning is signaled and #f is returned.
- -- Function: getopt->arglist optnames positions arities types |
+ -- Function: getopt->arglist optnames positions arities types
defaulters checks aliases desc ...
Like `getopt->parameter-list', but converts *ARGV* to an
argument-list as specified by OPTNAMES, POSITIONS, ARITIES, TYPES,
@@ -4154,13 +4249,13 @@ the options (and argument strings DESC ...) are printed to

File: slib.info, Node: Filenames, Next: Batch, Prev: Getopt Parameter lists, Up: Programs and Arguments
-4.4.6 Filenames |
---------------- |
+4.4.6 Filenames
+---------------
`(require 'filename)' or `(require 'glob)'
- -- Function: filename:match?? pattern |
- -- Function: filename:match-ci?? pattern |
+ -- Function: filename:match?? pattern
+ -- Function: filename:match-ci?? pattern
Returns a predicate which returns a non-false value if its string
argument matches (the string) PATTERN, false otherwise. Filename
matching is like "glob" expansion described the bash manpage,
@@ -4184,8 +4279,8 @@ File: slib.info, Node: Filenames, Next: Batch, Prev: Getopt Parameter lists,
`-' or `]' may be matched by including it as the first or
last character in the set.
- -- Function: filename:substitute?? pattern template |
- -- Function: filename:substitute-ci?? pattern template |
+ -- Function: filename:substitute?? pattern template
+ -- Function: filename:substitute-ci?? pattern template
Returns a function transforming a single string argument according
to glob patterns PATTERN and TEMPLATE. PATTERN and TEMPLATE must
have the same number of wildcard specifications, which need not be
@@ -4215,7 +4310,7 @@ File: slib.info, Node: Filenames, Next: Batch, Prev: Getopt Parameter lists,
"ABZ")
=> "ZA"
- -- Function: replace-suffix str old new |
+ -- Function: replace-suffix str old new
STR can be a string or a list of strings. Returns a new string
(or strings) similar to `str' but with the suffix string OLD
removed and the suffix string NEW appended. If the end of STR
@@ -4224,15 +4319,15 @@ File: slib.info, Node: Filenames, Next: Batch, Prev: Getopt Parameter lists,
(replace-suffix "/usr/local/lib/slib/batch.scm" ".scm" ".c")
=> "/usr/local/lib/slib/batch.c"
- -- Function: call-with-tmpnam proc k |
- -- Function: call-with-tmpnam proc |
+ -- Function: call-with-tmpnam proc k
+ -- Function: call-with-tmpnam proc
Calls PROC with K arguments, strings returned by successive calls
to `tmpnam'. If PROC returns, then any files named by the
arguments to PROC are deleted automatically and the value(s)
yielded by the PROC is(are) returned. K may be ommited, in which
case it defaults to `1'.
- -- Function: call-with-tmpnam proc suffix1 ... |
+ -- Function: call-with-tmpnam proc suffix1 ...
Calls PROC with strings returned by successive calls to `tmpnam',
each with the corresponding SUFFIX string appended. If PROC
returns, then any files named by the arguments to PROC are deleted
@@ -4242,8 +4337,8 @@ File: slib.info, Node: Filenames, Next: Batch, Prev: Getopt Parameter lists,

File: slib.info, Node: Batch, Prev: Filenames, Up: Programs and Arguments
-4.4.7 Batch |
------------ |
+4.4.7 Batch
+-----------
`(require 'batch)'
@@ -4274,18 +4369,18 @@ currently uses 2 of these:
to store information linking the names of `operating-system's to
`batch-dialect'es.
- -- Function: batch:initialize! database |
+ -- Function: batch:initialize! database
Defines `operating-system' and `batch-dialect' tables and adds the
domain `operating-system' to the enhanced relational database
DATABASE.
- -- Variable: *operating-system* |
+ -- Variable: *operating-system*
Is batch's best guess as to which operating-system it is running
under. `*operating-system*' is set to `(software-type)' (*note
Configuration::) unless `(software-type)' is `unix', in which case
finer distinctions are made.
- -- Function: batch:call-with-output-script parms file proc |
+ -- Function: batch:call-with-output-script parms file proc
PROC should be a procedure of one argument. If FILE is an
output-port, `batch:call-with-output-script' writes an appropriate
header to FILE and then calls PROC with FILE as the only argument.
@@ -4302,7 +4397,7 @@ added to PARMS or `(copy-tree PARMS)' by the code:
(adjoin-parameters! PARMS (list 'batch-port PORT))
- -- Function: batch:command parms string1 string2 ... |
+ -- Function: batch:command parms string1 string2 ...
Calls `batch:try-command' (below) with arguments, but signals an
error if `batch:try-command' returns `#f'.
@@ -4310,11 +4405,11 @@ These functions return a non-false value if the command was successfully
translated into the batch dialect and `#f' if not. In the case of the
`system' dialect, the value is non-false if the operation suceeded.
- -- Function: batch:try-command parms string1 string2 ... |
+ -- Function: batch:try-command parms string1 string2 ...
Writes a command to the `batch-port' in PARMS which executes the
program named STRING1 with arguments STRING2 ....
- -- Function: batch:try-chopped-command parms arg1 arg2 ... list |
+ -- Function: batch:try-chopped-command parms arg1 arg2 ... list
breaks the last argument LIST into chunks small enough so that the
command:
@@ -4326,34 +4421,34 @@ translated into the batch dialect and `#f' if not. In the case of the
command and returns non-false only if the commands all fit and
`batch:try-command' of each command line returned non-false.
- -- Function: batch:run-script parms string1 string2 ... |
+ -- Function: batch:run-script parms string1 string2 ...
Writes a command to the `batch-port' in PARMS which executes the
batch script named STRING1 with arguments STRING2 ....
_Note:_ `batch:run-script' and `batch:try-command' are not the
same for some operating systems (VMS).
- -- Function: batch:comment parms line1 ... |
+ -- Function: batch:comment parms line1 ...
Writes comment lines LINE1 ... to the `batch-port' in PARMS.
- -- Function: batch:lines->file parms file line1 ... |
+ -- Function: batch:lines->file parms file line1 ...
Writes commands to the `batch-port' in PARMS which create a file
named FILE with contents LINE1 ....
- -- Function: batch:delete-file parms file |
+ -- Function: batch:delete-file parms file
Writes a command to the `batch-port' in PARMS which deletes the
file named FILE.
- -- Function: batch:rename-file parms old-name new-name |
+ -- Function: batch:rename-file parms old-name new-name
Writes a command to the `batch-port' in PARMS which renames the
file OLD-NAME to NEW-NAME.
In addition, batch provides some small utilities very useful for writing
scripts:
- -- Function: truncate-up-to path char |
- -- Function: truncate-up-to path string |
- -- Function: truncate-up-to path charlist |
+ -- Function: truncate-up-to path char
+ -- Function: truncate-up-to path string
+ -- Function: truncate-up-to path charlist
PATH can be a string or a list of strings. Returns PATH sans any
prefixes ending with a character of the second argument. This can
be used to derive a filename moved locally from elsewhere.
@@ -4361,22 +4456,22 @@ scripts:
(truncate-up-to "/usr/local/lib/slib/batch.scm" "/")
=> "batch.scm"
- -- Function: string-join joiner string1 ... |
+ -- Function: string-join joiner string1 ...
Returns a new string consisting of all the strings STRING1 ... in
order appended together with the string JOINER between each
adjacent pair.
- -- Function: must-be-first list1 list2 |
+ -- Function: must-be-first list1 list2
Returns a new list consisting of the elements of LIST2 ordered so
that if some elements of LIST1 are `equal?' to elements of LIST2,
then those elements will appear first and in the order of LIST1.
- -- Function: must-be-last list1 list2 |
+ -- Function: must-be-last list1 list2
Returns a new list consisting of the elements of LIST1 ordered so
that if some elements of LIST2 are `equal?' to elements of LIST1,
then those elements will appear last and in the order of LIST2.
- -- Function: os->batch-dialect osname |
+ -- Function: os->batch-dialect osname
Returns its best guess for the `batch-dialect' to be used for the
operating-system named OSNAME. `os->batch-dialect' uses the
tables added to DATABASE by `batch:initialize!'.
@@ -4452,34 +4547,34 @@ When run, `my-batch' prints:

File: slib.info, Node: HTML, Next: HTML Tables, Prev: Programs and Arguments, Up: Textual Conversion Packages
-4.5 HTML |
-======== |
+4.5 HTML
+========
`(require 'html-form)'
- -- Function: html:atval txt |
+ -- Function: html:atval txt
Returns a string with character substitutions appropriate to send
TXT as an "attribute-value".
- -- Function: html:plain txt |
+ -- Function: html:plain txt
Returns a string with character substitutions appropriate to send
TXT as an "plain-text".
- -- Function: html:meta name content |
+ -- Function: html:meta name content
Returns a tag of meta-information suitable for passing as the
third argument to `html:head'. The tag produced is `<META
NAME="NAME" CONTENT="CONTENT">'. The string or symbol NAME can be
`author', `copyright', `keywords', `description', `date',
`robots', ....
- -- Function: html:http-equiv name content |
+ -- Function: html:http-equiv name content
Returns a tag of HTTP information suitable for passing as the
third argument to `html:head'. The tag produced is `<META
HTTP-EQUIV="NAME" CONTENT="CONTENT">'. The string or symbol NAME
can be `Expires', `PICS-Label', `Content-Type', `Refresh', ....
- -- Function: html:meta-refresh delay uri |
- -- Function: html:meta-refresh delay |
+ -- Function: html:meta-refresh delay uri
+ -- Function: html:meta-refresh delay
Returns a tag suitable for passing as the third argument to
`html:head'. If URI argument is supplied, then DELAY seconds after
displaying the page with this tag, Netscape or IE browsers will
@@ -4487,66 +4582,66 @@ File: slib.info, Node: HTML, Next: HTML Tables, Prev: Programs and Arguments,
the page with this tag, Netscape or IE browsers will fetch and
redisplay this page.
- -- Function: html:head title backlink tags ... |
- -- Function: html:head title backlink |
- -- Function: html:head title |
+ -- Function: html:head title backlink tags ...
+ -- Function: html:head title backlink
+ -- Function: html:head title
Returns header string for an HTML page named TITLE. If BACKLINK
is a string, it is used verbatim between the `H1' tags; otherwise
TITLE is used. If string arguments TAGS ... are supplied, then
they are included verbatim within the <HEAD> section.
- -- Function: html:body body ... |
+ -- Function: html:body body ...
Returns HTML string to end a page.
- -- Function: html:pre line1 line ... |
- Returns the strings LINE1, LINES as "PRE"formmated plain text (rendered |
- in fixed-width font). Newlines are inserted between LINE1, LINES. |
- HTML tags (`<tag>') within LINES will be visible verbatim. |
+ -- Function: html:pre line1 line ...
+ Returns the strings LINE1, LINES as "PRE"formmated plain text (rendered
+ in fixed-width font). Newlines are inserted between LINE1, LINES.
+ HTML tags (`<tag>') within LINES will be visible verbatim.
- -- Function: html:comment line1 line ... |
+ -- Function: html:comment line1 line ...
Returns the strings LINE1 as HTML comments.
-4.6 HTML Forms |
-============== |
+4.6 HTML Forms
+==============
- -- Function: html:form method action body ... |
+ -- Function: html:form method action body ...
The symbol METHOD is either `get', `head', `post', `put', or
`delete'. The strings BODY form the body of the form.
`html:form' returns the HTML "form".
- -- Function: html:hidden name value |
+ -- Function: html:hidden name value
Returns HTML string which will cause NAME=VALUE in form.
- -- Function: html:checkbox pname default |
+ -- Function: html:checkbox pname default
Returns HTML string for check box.
- -- Function: html:text pname default size ... |
+ -- Function: html:text pname default size ...
Returns HTML string for one-line text box.
- -- Function: html:text-area pname default-list |
+ -- Function: html:text-area pname default-list
Returns HTML string for multi-line text box.
- -- Function: html:select pname arity default-list foreign-values |
+ -- Function: html:select pname arity default-list foreign-values
Returns HTML string for pull-down menu selector.
- -- Function: html:buttons pname arity default-list foreign-values |
+ -- Function: html:buttons pname arity default-list foreign-values
Returns HTML string for any-of selector.
- -- Function: form:submit submit-label command |
- -- Function: form:submit submit-label |
+ -- Function: form:submit submit-label command
+ -- Function: form:submit submit-label
The string or symbol SUBMIT-LABEL appears on the button which
submits the form. If the optional second argument COMMAND is
given, then `*command*=COMMAND' and `*button*=SUBMIT-LABEL' are
set in the query. Otherwise, `*command*=SUBMIT-LABEL' is set in
the query.
- -- Function: form:image submit-label image-src |
+ -- Function: form:image submit-label image-src
The IMAGE-SRC appears on the button which submits the form.
- -- Function: form:reset |
+ -- Function: form:reset
Returns a string which generates a "reset" button.
- -- Function: form:element pname arity default-list foreign-values |
+ -- Function: form:element pname arity default-list foreign-values
Returns a string which generates an INPUT element for the field
named PNAME. The element appears in the created form with its
representation determined by its ARITY and domain. For domains
@@ -4585,19 +4680,19 @@ File: slib.info, Node: HTML, Next: HTML Tables, Prev: Programs and Arguments,
`nary1'
text area
- -- Function: form:delimited pname doc aliat arity default-list |
+ -- Function: form:delimited pname doc aliat arity default-list
foreign-values
Returns a HTML string for a form element embedded in a line of a
delimited list. Apply map `form:delimited' to the list returned by
`command->p-specs'.
- -- Function: html:delimited-list row ... |
+ -- Function: html:delimited-list row ...
Wraps its arguments with delimited-list (`DL' command.
- -- Function: get-foreign-choices tab |
+ -- Function: get-foreign-choices tab
Returns a list of the `visible-name' or first fields of table TAB.
- -- Function: command->p-specs rdb command-table command |
+ -- Function: command->p-specs rdb command-table command
The symbol COMMAND-TABLE names a command table in the RDB
relational database. The symbol COMMAND names a key in
COMMAND-TABLE.
@@ -4632,25 +4727,25 @@ File: slib.info, Node: HTML, Next: HTML Tables, Prev: Programs and Arguments,

File: slib.info, Node: HTML Tables, Next: HTTP and CGI, Prev: HTML, Up: Textual Conversion Packages
-4.7 HTML Tables |
-=============== |
+4.7 HTML Tables
+===============
`(require 'db->html)'
- -- Function: html:table options row ... |
+ -- Function: html:table options row ...
- -- Function: html:caption caption align |
- -- Function: html:caption caption |
+ -- Function: html:caption caption align
+ -- Function: html:caption caption
ALIGN can be `top' or `bottom'.
- -- Function: html:heading columns |
+ -- Function: html:heading columns
Outputs a heading row for the currently-started table.
- -- Function: html:href-heading columns uris |
+ -- Function: html:href-heading columns uris
Outputs a heading row with column-names COLUMNS linked to URIs
URIS.
- -- Function: html:linked-row-converter k foreigns |
+ -- Function: html:linked-row-converter k foreigns
The positive integer K is the primary-key-limit (number of
primary-keys) of the table. FOREIGNS is a list of the filenames of
foreign-key field pages and #f for non foreign-key fields.
@@ -4659,29 +4754,29 @@ File: slib.info, Node: HTML Tables, Next: HTTP and CGI, Prev: HTML, Up: Text
its single argument. This returned procedure returns the html
string for that table row.
- -- Function: table-name->filename table-name |
+ -- Function: table-name->filename table-name
Returns the symbol TABLE-NAME converted to a filename.
- -- Function: table->linked-html caption db table-name match-key1 ... |
- Returns HTML string for DB table TABLE-NAME chopped into 50-row |
- HTML tables. Every foreign-key value is linked to the page (of |
- the table) defining that key. |
+ -- Function: table->linked-html caption db table-name match-key1 ...
+ Returns HTML string for DB table TABLE-NAME chopped into 50-row
+ HTML tables. Every foreign-key value is linked to the page (of
+ the table) defining that key.
The optional MATCH-KEY1 ... arguments restrict actions to a subset
of the table. *Note match-key: Table Operations.
- -- Function: table->linked-page db table-name index-filename arg ... |
+ -- Function: table->linked-page db table-name index-filename arg ...
Returns a complete HTML page. The string INDEX-FILENAME names the
page which refers to this one.
The optional ARGS ... arguments restrict actions to a subset of
the table. *Note match-key: Table Operations.
- -- Function: catalog->html db caption arg ... |
+ -- Function: catalog->html db caption arg ...
Returns HTML string for the catalog table of DB.
-4.7.1 HTML editing tables |
-------------------------- |
+4.7.1 HTML editing tables
+-------------------------
A client can modify one row of an editable table at a time. For any
change submitted, these routines check if that row has been modified
@@ -4714,11 +4809,11 @@ The behavior of edited rows is:
After any change to the table, a `sync-database' of the database is
performed.
- -- Function: command:modify-table table-name null-keys update delete |
+ -- Function: command:modify-table table-name null-keys update delete
retrieve
- -- Function: command:modify-table table-name null-keys update delete |
- -- Function: command:modify-table table-name null-keys update |
- -- Function: command:modify-table table-name null-keys |
+ -- Function: command:modify-table table-name null-keys update delete
+ -- Function: command:modify-table table-name null-keys update
+ -- Function: command:modify-table table-name null-keys
Returns procedure (of DB) which returns procedure to modify row of
TABLE-NAME. NULL-KEYS is the list of "null" keys indicating the
row is to be deleted when any matches its corresponding primary
@@ -4726,7 +4821,7 @@ performed.
the `row:update', `row:delete', and `row:retrieve' of TABLE-NAME
in DB.
- -- Function: command:make-editable-table rdb table-name arg ... |
+ -- Function: command:make-editable-table rdb table-name arg ...
Given TABLE-NAME in RDB, creates parameter and `*command*' tables
for editing one row of TABLE-NAME at a time.
`command:make-editable-table' returns a procedure taking a row
@@ -4744,7 +4839,7 @@ performed.
`+'
have arity `nary1'.
- -- Function: html:editable-row-converter k names edit-point |
+ -- Function: html:editable-row-converter k names edit-point
edit-converter
The positive integer K is the primary-key-limit (number of
primary-keys) of the table. NAMES is a list of the field-names.
@@ -4762,10 +4857,10 @@ performed.
`row->anchor'). The page so referenced typically allows the user
to edit fields of that row.
-4.7.2 HTML databases |
--------------------- |
+4.7.2 HTML databases
+--------------------
- -- Function: db->html-files db dir index-filename caption |
+ -- Function: db->html-files db dir index-filename caption
DB must be a relational database. DIR must be #f or a non-empty
string naming an existing sub-directory of the current directory.
@@ -4775,8 +4870,8 @@ performed.
tables (captioned CAPTION) is written to a file named
INDEX-FILENAME.
- -- Function: db->html-directory db dir index-filename |
- -- Function: db->html-directory db dir |
+ -- Function: db->html-directory db dir index-filename
+ -- Function: db->html-directory db dir
DB must be a relational database. DIR must be a non-empty string
naming an existing sub-directory of the current directory or one
to be created. The optional string INDEX-FILENAME names the
@@ -4786,8 +4881,8 @@ performed.
calls `(db->html-files DB DIR INDEX-FILENAME DIR)'. The `file:'
URI of INDEX-FILENAME is returned.
- -- Function: db->netscape db dir index-filename |
- -- Function: db->netscape db dir |
+ -- Function: db->netscape db dir index-filename
+ -- Function: db->netscape db dir
`db->netscape' is just like `db->html-directory', but calls
`browse-url' with the uri for the top page after the pages are
created.
@@ -4795,39 +4890,39 @@ performed.

File: slib.info, Node: HTTP and CGI, Next: Parsing HTML, Prev: HTML Tables, Up: Textual Conversion Packages
-4.8 HTTP and CGI |
-================ |
+4.8 HTTP and CGI
+================
`(require 'http)' or `(require 'cgi)'
- -- Function: http:header alist |
+ -- Function: http:header alist
Returns a string containing lines for each element of ALIST; the
`car' of which is followed by `: ', then the `cdr'.
- -- Function: http:content alist body ... |
+ -- Function: http:content alist body ...
Returns the concatenation of strings BODY with the `(http:header
ALIST)' and the `Content-Length' prepended.
- -- Variable: *http:byline* |
+ -- Variable: *http:byline*
String appearing at the bottom of error pages.
- -- Function: http:error-page status-code reason-phrase html-string ... |
+ -- Function: http:error-page status-code reason-phrase html-string ...
STATUS-CODE and REASON-PHRASE should be an integer and string as
specified in `RFC 2068'. The returned page (string) will show the
STATUS-CODE and REASON-PHRASE and any additional HTML-STRINGS ...;
with *HTTP:BYLINE* or SLIB's default at the bottom.
- -- Function: http:forwarding-page title dly uri html-string ... |
- The string or symbol TITLE is the page title. DLY is a |
+ -- Function: http:forwarding-page title dly uri html-string ...
+ The string or symbol TITLE is the page title. DLY is a
non-negative integer. The HTML-STRINGS ... are typically used to
explain to the user why this page is being forwarded.
`http:forwarding-page' returns an HTML string for a page which
- automatically forwards to URI after DLY seconds. The returned |
+ automatically forwards to URI after DLY seconds. The returned
page (string) contains any HTML-STRINGS ... followed by a manual
link to URI, in case the browser does not forward automatically.
- -- Function: http:serve-query serve-proc input-port output-port |
+ -- Function: http:serve-query serve-proc input-port output-port
reads the "URI" and "query-string" from INPUT-PORT. If the query
is a valid `"POST"' or `"GET"' query, then `http:serve-query' calls
SERVE-PROC with three arguments, the REQUEST-LINE, QUERY-STRING,
@@ -4860,7 +4955,7 @@ File: slib.info, Node: HTTP and CGI, Next: Parsing HTML, Prev: HTML Tables,
(close-port port)))
(lambda () (close-port socket))))
- -- Function: cgi:serve-query serve-proc |
+ -- Function: cgi:serve-query serve-proc
reads the "URI" and "query-string" from `(current-input-port)'.
If the query is a valid `"POST"' or `"GET"' query, then
`cgi:serve-query' calls SERVE-PROC with three arguments, the
@@ -4877,8 +4972,8 @@ File: slib.info, Node: HTTP and CGI, Next: Parsing HTML, Prev: HTML Tables,
Otherwise, `cgi:serve-query' replies (to `(current-input-port)')
with appropriate HTML describing the problem.
- -- Function: make-query-alist-command-server rdb command-table |
- -- Function: make-query-alist-command-server rdb command-table #t |
+ -- Function: make-query-alist-command-server rdb command-table
+ -- Function: make-query-alist-command-server rdb command-table #t
Returns a procedure of one argument. When that procedure is called
with a QUERY-ALIST (as returned by `uri:decode-query', the value
of the `*command*' association will be the command invoked in
@@ -4894,12 +4989,12 @@ File: slib.info, Node: HTTP and CGI, Next: Parsing HTML, Prev: HTML Tables,

File: slib.info, Node: Parsing HTML, Next: URI, Prev: HTTP and CGI, Up: Textual Conversion Packages
-4.9 Parsing HTML |
-================ |
+4.9 Parsing HTML
+================
`(require 'html-for-each)'
- -- Function: html-for-each file word-proc markup-proc white-proc |
+ -- Function: html-for-each file word-proc markup-proc white-proc
newline-proc
FILE is an input port or a string naming an existing file
containing HTML text. WORD-PROC is a procedure of one argument or
@@ -4934,8 +5029,8 @@ File: slib.info, Node: Parsing HTML, Next: URI, Prev: HTTP and CGI, Up: Text
`html-for-each' returns an unspecified value.
- -- Function: html:read-title file limit |
- -- Function: html:read-title file |
+ -- Function: html:read-title file limit
+ -- Function: html:read-title file
FILE is an input port or a string naming an existing file
containing HTML text. If supplied, LIMIT must be an integer.
LIMIT defaults to 1000.
@@ -4948,7 +5043,7 @@ File: slib.info, Node: Parsing HTML, Next: URI, Prev: HTTP and CGI, Up: Text
from FILE is not `#\<', or if the end of title is not found within
the first (approximately) LIMIT words.
- -- Function: htm-fields htm |
+ -- Function: htm-fields htm
HTM is a hypertext markup string.
If HTM is a (hypertext) comment, then `htm-fields' returns #f.
@@ -4961,27 +5056,27 @@ File: slib.info, Node: Parsing HTML, Next: URI, Prev: HTTP and CGI, Up: Text

File: slib.info, Node: URI, Next: Printing Scheme, Prev: Parsing HTML, Up: Textual Conversion Packages
-4.10 URI |
-======== |
+4.10 URI
+========
`(require 'uri)'
Implements "Uniform Resource Identifiers" (URI) as described in RFC
2396.
- -- Function: make-uri |
- -- Function: make-uri fragment |
- -- Function: make-uri query fragment |
- -- Function: make-uri path query fragment |
- -- Function: make-uri authority path query fragment |
- -- Function: make-uri scheme authority path query fragment |
+ -- Function: make-uri
+ -- Function: make-uri fragment
+ -- Function: make-uri query fragment
+ -- Function: make-uri path query fragment
+ -- Function: make-uri authority path query fragment
+ -- Function: make-uri scheme authority path query fragment
Returns a Uniform Resource Identifier string from component
arguments.
- -- Function: uri:make-path path |
+ -- Function: uri:make-path path
Returns a URI string combining the components of list PATH.
- -- Function: html:anchor name |
+ -- Function: html:anchor name
Returns a string which defines this location in the (HTML) file as
NAME. The hypertext `<A HREF="#NAME">' will link to this point.
@@ -4989,23 +5084,23 @@ Implements "Uniform Resource Identifiers" (URI) as described in RFC
=>
"<A NAME=\"(section%207)\"></A>"
- -- Function: html:link uri highlighted |
+ -- Function: html:link uri highlighted
Returns a string which links the HIGHLIGHTED text to URI.
(html:link (make-uri "(section 7)") "section 7")
=>
"<A HREF=\"#(section%207)\">section 7</A>"
- -- Function: html:base uri |
- Returns a string specifying the "base" URI of a document, for inclusion |
- in the HEAD of the document (*note head: HTML.). |
+ -- Function: html:base uri
+ Returns a string specifying the "base" URI of a document, for inclusion
+ in the HEAD of the document (*note head: HTML.).
- -- Function: html:isindex prompt |
+ -- Function: html:isindex prompt
Returns a string specifying the search PROMPT of a document, for
inclusion in the HEAD of the document (*note head: HTML.).
- -- Function: uri->tree uri-reference base-tree |
- -- Function: uri->tree uri-reference |
+ -- Function: uri->tree uri-reference base-tree
+ -- Function: uri->tree uri-reference
Returns a list of 5 elements corresponding to the parts (SCHEME
AUTHORITY PATH QUERY FRAGMENT) of string URI-REFERENCE. Elements
corresponding to absent parts are #f.
@@ -5024,27 +5119,27 @@ Implements "Uniform Resource Identifiers" (URI) as described in RFC
=>
(http "www.ics.uci.edu" ("" "pub" "ietf" "uri" "") #f "Related")
- -- Function: uri:split-fields txt chr |
+ -- Function: uri:split-fields txt chr
Returns a list of TXT split at each occurrence of CHR. CHR does
not appear in the returned list of strings.
- -- Function: uri:decode-query query-string |
+ -- Function: uri:decode-query query-string
Converts a "URI" encoded QUERY-STRING to a query-alist.
`uric:' prefixes indicate procedures dealing with URI-components.
- -- Function: uric:encode uri-component allows |
+ -- Function: uric:encode uri-component allows
Returns a copy of the string URI-COMPONENT in which all "unsafe"
- octets (as defined in RFC 2396) have been `%' "escaped". `uric:decode' |
- decodes strings encoded by `uric:encode'. |
+ octets (as defined in RFC 2396) have been `%' "escaped". `uric:decode'
+ decodes strings encoded by `uric:encode'.
- -- Function: uric:decode uri-component |
+ -- Function: uric:decode uri-component
Returns a copy of the string URI-COMPONENT in which each `%'
escaped characters in URI-COMPONENT is replaced with the character
it encodes. This routine is useful for showing URI contents on
error pages.
- -- Function: uri:path->keys path-list ptypes |
+ -- Function: uri:path->keys path-list ptypes
PATH-LIST is a path-list as returned by `uri:split-fields'.
`uri:path->keys' returns a list of items returned by
`uri:decode-path', coerced to types PTYPES.
@@ -5052,29 +5147,29 @@ Implements "Uniform Resource Identifiers" (URI) as described in RFC
File-system Locators and Predicates
-----------------------------------
- -- Function: path->uri path |
+ -- Function: path->uri path
Returns a URI-string for PATH on the local host.
- -- Function: absolute-uri? str |
+ -- Function: absolute-uri? str
Returns #t if STR is an absolute-URI as indicated by a
syntactically valid (per RFC 2396) "scheme"; otherwise returns #f.
- -- Function: absolute-path? file-name |
+ -- Function: absolute-path? file-name
Returns #t if FILE-NAME is a fully specified pathname (does not
depend on the current working directory); otherwise returns #f.
- -- Function: null-directory? str |
+ -- Function: null-directory? str
Returns #t if changing directory to STR would leave the current
directory unchanged; otherwise returns #f.
- -- Function: glob-pattern? str |
+ -- Function: glob-pattern? str
Returns #t if the string STR contains characters used for
specifying glob patterns, namely `*', `?', or `['.
Before RFC 2396, the "File Transfer Protocol" (FTP) served a similar
purpose.
- -- Function: parse-ftp-address uri |
+ -- Function: parse-ftp-address uri
Returns a list of the decoded FTP URI; or #f if indecipherable.
FTP "Uniform Resource Locator", "ange-ftp", and "getit" formats
are handled. The returned list has four elements which are
@@ -5091,8 +5186,8 @@ purpose.

File: slib.info, Node: Printing Scheme, Next: Time and Date, Prev: URI, Up: Textual Conversion Packages
-4.11 Printing Scheme |
-==================== |
+4.11 Printing Scheme
+====================
* Menu:
@@ -5103,8 +5198,8 @@ File: slib.info, Node: Printing Scheme, Next: Time and Date, Prev: URI, Up:

File: slib.info, Node: Generic-Write, Next: Object-To-String, Prev: Printing Scheme, Up: Printing Scheme
-4.11.1 Generic-Write |
--------------------- |
+4.11.1 Generic-Write
+--------------------
`(require 'generic-write)'
@@ -5114,7 +5209,7 @@ prints it. The interface to the procedure is sufficiently general to
easily implement other useful formatting procedures such as pretty
printing, output to a string and truncated output.
- -- Procedure: generic-write obj display? width output |
+ -- Procedure: generic-write obj display? width output
OBJ
Scheme data value to transform.
@@ -5146,28 +5241,28 @@ printing, output to a string and truncated output.

File: slib.info, Node: Object-To-String, Next: Pretty-Print, Prev: Generic-Write, Up: Printing Scheme
-4.11.2 Object-To-String |
------------------------ |
+4.11.2 Object-To-String
+-----------------------
`(require 'object->string)'
- -- Function: object->string obj |
+ -- Function: object->string obj
Returns the textual representation of OBJ as a string.
- -- Function: object->limited-string obj limit |
+ -- Function: object->limited-string obj limit
Returns the textual representation of OBJ as a string of length at
most LIMIT.

File: slib.info, Node: Pretty-Print, Prev: Object-To-String, Up: Printing Scheme
-4.11.3 Pretty-Print |
-------------------- |
+4.11.3 Pretty-Print
+-------------------
`(require 'pretty-print)'
- -- Procedure: pretty-print obj |
- -- Procedure: pretty-print obj port |
+ -- Procedure: pretty-print obj
+ -- Procedure: pretty-print obj port
`pretty-print's OBJ on PORT. If PORT is not specified,
`current-output-port' is used.
@@ -5180,8 +5275,8 @@ File: slib.info, Node: Pretty-Print, Prev: Object-To-String, Up: Printing Sch
-| (16 17 18 19 20)
-| (21 22 23 24 25))
- -- Procedure: pretty-print->string obj |
- -- Procedure: pretty-print->string obj width |
+ -- Procedure: pretty-print->string obj
+ -- Procedure: pretty-print->string obj width
Returns the string of OBJ `pretty-print'ed in WIDTH columns. If
WIDTH is not specified, `(output-port-width)' is used.
@@ -5220,14 +5315,14 @@ File: slib.info, Node: Pretty-Print, Prev: Object-To-String, Up: Printing Sch
`(require 'pprint-file)'
- -- Procedure: pprint-file infile |
- -- Procedure: pprint-file infile outfile |
+ -- Procedure: pprint-file infile
+ -- Procedure: pprint-file infile outfile
Pretty-prints all the code in INFILE. If OUTFILE is specified,
the output goes to OUTFILE, otherwise it goes to
`(current-output-port)'.
- -- Function: pprint-filter-file infile proc outfile |
- -- Function: pprint-filter-file infile proc |
+ -- Function: pprint-filter-file infile proc outfile
+ -- Function: pprint-filter-file infile proc
INFILE is a port or a string naming an existing file. Scheme
source code expressions and definitions are read from the port (or
file) and PROC is applied to them sequentially.
@@ -5252,15 +5347,15 @@ thus can reduce loading time. The following will write into

File: slib.info, Node: Time and Date, Next: NCBI-DNA, Prev: Printing Scheme, Up: Textual Conversion Packages
-4.12 Time and Date |
-================== |
+4.12 Time and Date
+==================
* Menu:
* Time Zone::
* Posix Time:: 'posix-time
* Common-Lisp Time:: 'common-lisp-time
-* Time Infrastructure:: |
+* Time Infrastructure::
If `(provided? 'current-time)':
@@ -5268,29 +5363,29 @@ The procedures `current-time', `difftime', and `offset-time' deal with
a "calendar time" datatype which may or may not be disjoint from other
Scheme datatypes.
- -- Function: current-time |
+ -- Function: current-time
Returns the time since 00:00:00 GMT, January 1, 1970, measured in
seconds. Note that the reference time is different from the
reference time for `get-universal-time' in *Note Common-Lisp
Time::.
- -- Function: difftime caltime1 caltime0 |
+ -- Function: difftime caltime1 caltime0
Returns the difference (number of seconds) between twe calendar
times: CALTIME1 - CALTIME0. CALTIME0 may also be a number.
- -- Function: offset-time caltime offset |
+ -- Function: offset-time caltime offset
Returns the calendar time of CALTIME offset by OFFSET number of
seconds `(+ caltime offset)'.

File: slib.info, Node: Time Zone, Next: Posix Time, Prev: Time and Date, Up: Time and Date
-4.12.1 Time Zone |
----------------- |
+4.12.1 Time Zone
+----------------
(require 'time-zone)
- -- Data Format: TZ-string |
+ -- Data Format: TZ-string
POSIX standards specify several formats for encoding time-zone
rules.
@@ -5344,17 +5439,17 @@ File: slib.info, Node: Time Zone, Next: Posix Time, Prev: Time and Date, Up:
Day 0 is a Sunday.
- -- Data Type: time-zone |
+ -- Data Type: time-zone
is a datatype encoding how many hours from Greenwich Mean Time the
local time is, and the "Daylight Savings Time" rules for changing
it.
- -- Function: time-zone TZ-string |
+ -- Function: time-zone TZ-string
Creates and returns a time-zone object specified by the string
TZ-STRING. If `time-zone' cannot interpret TZ-STRING, `#f' is
returned.
- -- Function: tz:params caltime tz |
+ -- Function: tz:params caltime tz
TZ is a time-zone object. `tz:params' returns a list of three
items:
0. An integer. 0 if standard time is in effect for timezone TZ
@@ -5370,7 +5465,7 @@ File: slib.info, Node: Time Zone, Next: Posix Time, Prev: Time and Date, Up:
made of any timezone at any calendar time.
- -- Function: tz:std-offset tz |
+ -- Function: tz:std-offset tz
TZ is a time-zone object. `tz:std-offset' returns the number of
seconds west of the Prime Meridian timezone TZ is.
@@ -5378,13 +5473,13 @@ File: slib.info, Node: Time Zone, Next: Posix Time, Prev: Time and Date, Up:
The rest of these procedures and variables are provided for POSIX
compatability. Because of shared state they are not thread-safe.
- -- Function: tzset |
+ -- Function: tzset
Returns the default time-zone.
- -- Function: tzset tz |
+ -- Function: tzset tz
Sets (and returns) the default time-zone to TZ.
- -- Function: tzset TZ-string |
+ -- Function: tzset TZ-string
Sets (and returns) the default time-zone to that specified by
TZ-STRING.
@@ -5392,19 +5487,19 @@ compatability. Because of shared state they are not thread-safe.
This function is automatically called by the time conversion
procedures which depend on the time zone (*note Time and Date::).
- -- Variable: *timezone* |
+ -- Variable: *timezone*
Contains the difference, in seconds, between Greenwich Mean Time
and local standard time (for example, in the U.S. Eastern time
zone (EST), timezone is 5*60*60). `*timezone*' is initialized by
`tzset'.
- -- Variable: daylight? |
+ -- Variable: daylight?
is `#t' if the default timezone has rules for "Daylight Savings
Time". _Note:_ DAYLIGHT? does not tell you when Daylight Savings
Time is in effect, just that the default zone sometimes has
Daylight Savings Time.
- -- Variable: tzname |
+ -- Variable: tzname
is a vector of strings. Index 0 has the abbreviation for the
standard timezone; If DAYLIGHT?, then index 1 has the abbreviation
for the Daylight Savings timezone.
@@ -5412,16 +5507,16 @@ compatability. Because of shared state they are not thread-safe.

File: slib.info, Node: Posix Time, Next: Common-Lisp Time, Prev: Time Zone, Up: Time and Date
-4.12.2 Posix Time |
------------------ |
+4.12.2 Posix Time
+-----------------
(require 'posix-time)
- |
- -- Data Type: Calendar-Time |
+
+ -- Data Type: Calendar-Time
is a datatype encapsulating time.
- -- Data Type: Coordinated Universal Time |
+ -- Data Type: Coordinated Universal Time
(abbreviated "UTC") is a vector of integers representing time:
0. seconds (0 - 61)
@@ -5444,13 +5539,13 @@ File: slib.info, Node: Posix Time, Next: Common-Lisp Time, Prev: Time Zone,
8. 1 for daylight savings, 0 for regular time
- -- Function: gmtime caltime |
+ -- Function: gmtime caltime
Converts the calendar time CALTIME to UTC and returns it.
- -- Function: localtime caltime tz |
+ -- Function: localtime caltime tz
Returns CALTIME converted to UTC relative to timezone TZ.
- -- Function: localtime caltime |
+ -- Function: localtime caltime
converts the calendar time CALTIME to a vector of integers
expressed relative to the user's time zone. `localtime' sets the
variable *TIMEZONE* with the difference between Coordinated
@@ -5458,44 +5553,44 @@ File: slib.info, Node: Posix Time, Next: Common-Lisp Time, Prev: Time Zone,
tzset: Time Zone.).
- -- Function: gmktime univtime |
+ -- Function: gmktime univtime
Converts a vector of integers in GMT Coordinated Universal Time
(UTC) format to a calendar time.
- -- Function: mktime univtime |
+ -- Function: mktime univtime
Converts a vector of integers in local Coordinated Universal Time
(UTC) format to a calendar time.
- -- Function: mktime univtime tz |
+ -- Function: mktime univtime tz
Converts a vector of integers in Coordinated Universal Time (UTC)
format (relative to time-zone TZ) to calendar time.
- -- Function: asctime univtime |
+ -- Function: asctime univtime
Converts the vector of integers CALTIME in Coordinated Universal
Time (UTC) format into a string of the form `"Wed Jun 30 21:49:08
1993"'.
- -- Function: gtime caltime |
- -- Function: ctime caltime |
- -- Function: ctime caltime tz |
+ -- Function: gtime caltime
+ -- Function: ctime caltime
+ -- Function: ctime caltime tz
Equivalent to `(asctime (gmtime CALTIME))', `(asctime (localtime
CALTIME))', and `(asctime (localtime CALTIME TZ))', respectively.

File: slib.info, Node: Common-Lisp Time, Next: Time Infrastructure, Prev: Posix Time, Up: Time and Date
- |
-4.12.3 Common-Lisp Time |
------------------------ |
- -- Function: get-decoded-time |
+4.12.3 Common-Lisp Time
+-----------------------
+
+ -- Function: get-decoded-time
Equivalent to `(decode-universal-time (get-universal-time))'.
- -- Function: get-universal-time |
+ -- Function: get-universal-time
Returns the current time as "Universal Time", number of seconds
since 00:00:00 Jan 1, 1900 GMT. Note that the reference time is
different from `current-time'.
- -- Function: decode-universal-time univtime |
+ -- Function: decode-universal-time univtime
Converts UNIVTIME to "Decoded Time" format. Nine values are
returned:
0. seconds (0 - 61)
@@ -5520,8 +5615,8 @@ File: slib.info, Node: Common-Lisp Time, Next: Time Infrastructure, Prev: Pos
Notice that the values returned by `decode-universal-time' do not
match the arguments to `encode-universal-time'.
- -- Function: encode-universal-time second minute hour date month year |
- -- Function: encode-universal-time second minute hour date month year |
+ -- Function: encode-universal-time second minute hour date month year
+ -- Function: encode-universal-time second minute hour date month year
time-zone
Converts the arguments in Decoded Time format to Universal Time
format. If TIME-ZONE is not specified, the returned time is
@@ -5533,47 +5628,47 @@ File: slib.info, Node: Common-Lisp Time, Next: Time Infrastructure, Prev: Pos

File: slib.info, Node: Time Infrastructure, Prev: Common-Lisp Time, Up: Time and Date
- |
-4.12.4 Time Infrastructure |
--------------------------- |
- |
-`(require 'time-core)' |
- |
- -- Function: time:gmtime tm |
- -- Function: time:invert decoder target |
- -- Function: time:split t tm_isdst tm_gmtoff tm_zone |
- |
- `(require 'tzfile)' |
- |
- -- Function: tzfile:read path |
- |
+
+4.12.4 Time Infrastructure
+--------------------------
+
+`(require 'time-core)'
+
+ -- Function: time:gmtime tm
+ -- Function: time:invert decoder target
+ -- Function: time:split t tm_isdst tm_gmtoff tm_zone
+
+ `(require 'tzfile)'
+
+ -- Function: tzfile:read path
+

File: slib.info, Node: NCBI-DNA, Next: Schmooz, Prev: Time and Date, Up: Textual Conversion Packages
- |
-4.13 NCBI-DNA |
-============= |
- -- Function: ncbi:read-dna-sequence port |
+4.13 NCBI-DNA
+=============
+
+ -- Function: ncbi:read-dna-sequence port
Reads the NCBI-format DNA sequence following the word `ORIGIN'
from PORT.
- -- Function: ncbi:read-file file |
+ -- Function: ncbi:read-file file
Reads the NCBI-format DNA sequence following the word `ORIGIN'
from FILE.
- -- Function: mrna<-cdna str |
+ -- Function: mrna<-cdna str
Replaces `T' with `U' in STR
- -- Function: codons<-cdna cdna |
+ -- Function: codons<-cdna cdna
Returns a list of three-letter symbol codons comprising the protein
sequence encoded by CDNA starting with its first occurence of
`atg'.
- -- Function: protein<-cdna cdna |
+ -- Function: protein<-cdna cdna
Returns a list of three-letter symbols for the protein sequence
encoded by CDNA starting with its first occurence of `atg'.
- -- Function: p<-cdna cdna |
+ -- Function: p<-cdna cdna
Returns a string of one-letter amino acid codes for the protein
sequence encoded by CDNA starting with its first occurence of
`atg'.
@@ -5581,18 +5676,18 @@ File: slib.info, Node: NCBI-DNA, Next: Schmooz, Prev: Time and Date, Up: Tex
These cDNA count routines provide a means to check the nucleotide
sequence with the `BASE COUNT' line preceding the sequence from NCBI.
- -- Function: cdna:base-count cdna |
+ -- Function: cdna:base-count cdna
Returns a list of counts of `a', `c', `g', and `t' occurrencing in
CDNA.
- -- Function: cdna:report-base-count cdna |
+ -- Function: cdna:report-base-count cdna
Prints the counts of `a', `c', `g', and `t' occurrencing in CDNA.

File: slib.info, Node: Schmooz, Prev: NCBI-DNA, Up: Textual Conversion Packages
-4.14 Schmooz |
-============ |
+4.14 Schmooz
+============
"Schmooz" is a simple, lightweight markup language for interspersing
Texinfo documentation with Scheme source code. Schmooz does not create
@@ -5603,16 +5698,16 @@ imported into the documentation using the Texinfo command `@include'.
process files. Files containing schmooz documentation should not
contain `(require 'schmooz)'.
- -- Procedure: schmooz filename.scm ... |
+ -- Procedure: schmooz filename.scm ...
FILENAME.scm should be a string ending with `.scm' naming an
existing file containing Scheme source code. `schmooz' extracts
top-level comments containing schmooz commands from FILENAME.scm
and writes the converted Texinfo source to a file named
FILENAME.txi.
- -- Procedure: schmooz filename.texi ... |
- -- Procedure: schmooz filename.tex ... |
- -- Procedure: schmooz filename.txi ... |
+ -- Procedure: schmooz filename.texi ...
+ -- Procedure: schmooz filename.tex ...
+ -- Procedure: schmooz filename.txi ...
FILENAME should be a string naming an existing file containing
Texinfo source code. For every occurrence of the string `@include
FILENAME.txi' within that file, `schmooz' calls itself with the
@@ -5690,8 +5785,8 @@ directives in schmooz comments.

File: slib.info, Node: Mathematical Packages, Next: Database Packages, Prev: Textual Conversion Packages, Up: Top
-5 Mathematical Packages |
-*********************** |
+5 Mathematical Packages
+***********************
* Menu:
@@ -5706,14 +5801,15 @@ File: slib.info, Node: Mathematical Packages, Next: Database Packages, Prev:
* Color::
* Root Finding:: 'root
* Minimizing:: 'minimize
+* The Limit:: 'limit |
* Commutative Rings:: 'commutative-ring
* Matrix Algebra:: 'determinant

File: slib.info, Node: Bit-Twiddling, Next: Modular Arithmetic, Prev: Mathematical Packages, Up: Mathematical Packages
-5.1 Bit-Twiddling |
-================= |
+5.1 Bit-Twiddling
+=================
`(require 'logical)'
@@ -5723,39 +5819,39 @@ The bit-twiddling functions are made available through the use of the
behave as though operating on integers in two's-complement
representation.
-5.1.1 Bitwise Operations |
------------------------- |
+5.1.1 Bitwise Operations
+------------------------
- -- Function: logand n1 ... |
- -- Function: bitwise-and n1 ... |
- Returns the integer which is the bit-wise AND of the integer |
+ -- Function: logand n1 ...
+ -- Function: bitwise-and n1 ...
+ Returns the integer which is the bit-wise AND of the integer
arguments.
Example:
(number->string (logand #b1100 #b1010) 2)
=> "1000"
- -- Function: logior n1 ... |
- -- Function: bitwise-ior n1 ... |
- Returns the integer which is the bit-wise OR of the integer |
+ -- Function: logior n1 ...
+ -- Function: bitwise-ior n1 ...
+ Returns the integer which is the bit-wise OR of the integer
arguments.
Example:
(number->string (logior #b1100 #b1010) 2)
=> "1110"
- -- Function: logxor n1 ... |
- -- Function: bitwise-xor n1 ... |
- Returns the integer which is the bit-wise XOR of the integer |
+ -- Function: logxor n1 ...
+ -- Function: bitwise-xor n1 ...
+ Returns the integer which is the bit-wise XOR of the integer
arguments.
Example:
(number->string (logxor #b1100 #b1010) 2)
=> "110"
- -- Function: lognot n |
- -- Function: bitwise-not n |
- Returns the integer which is the one's-complement of the integer |
+ -- Function: lognot n
+ -- Function: bitwise-not n
+ Returns the integer which is the one's-complement of the integer
argument.
Example:
@@ -5764,25 +5860,25 @@ representation.
(number->string (lognot #b0) 2)
=> "-1"
- -- Function: bitwise-if mask n0 n1 |
- -- Function: bitwise-merge mask n0 n1 |
+ -- Function: bitwise-if mask n0 n1
+ -- Function: bitwise-merge mask n0 n1
Returns an integer composed of some bits from integer N0 and some
from integer N1. A bit of the result is taken from N0 if the
corresponding bit of integer MASK is 1 and from N1 if that bit of
MASK is 0.
- -- Function: logtest j k |
- -- Function: any-bits-set? j k |
+ -- Function: logtest j k
+ -- Function: any-bits-set? j k
(logtest j k) == (not (zero? (logand j k)))
(logtest #b0100 #b1011) => #f
(logtest #b0100 #b0111) => #t
-5.1.2 Integer Properties |
------------------------- |
- |
- -- Function: logcount n |
- -- Function: bit-count n |
+5.1.2 Integer Properties
+------------------------
+
+ -- Function: logcount n
+ -- Function: bit-count n
Returns the number of bits in integer N. If integer is positive,
the 1-bits in its binary representation are counted. If negative,
the 0-bits in its two's-complement binary representation are
@@ -5796,55 +5892,55 @@ representation.
(logcount -2)
=> 1
- -- Function: integer-length n |
- Returns the number of bits neccessary to represent N. |
+ -- Function: integer-length n
+ Returns the number of bits neccessary to represent N.
- Example: |
- (integer-length #b10101010) |
- => 8 |
- (integer-length 0) |
- => 0 |
- (integer-length #b1111) |
- => 4 |
- |
- -- Function: log2-binary-factors n |
- -- Function: first-set-bit n |
- Returns the number of factors of two of integer N. This value is |
- also the bit-index of the least-significant `1' bit in N. |
- |
- (require 'printf) |
- (do ((idx 0 (+ 1 idx))) |
- ((> idx 16)) |
- (printf "%s(%3d) ==> %-5d %s(%2d) ==> %-5d\n" |
- 'log2-binary-factors |
- (- idx) (log2-binary-factors (- idx)) |
- 'log2-binary-factors |
- idx (log2-binary-factors idx))) |
- -| |
- log2-binary-factors( 0) ==> -1 log2-binary-factors( 0) ==> -1 |
- log2-binary-factors( -1) ==> 0 log2-binary-factors( 1) ==> 0 |
- log2-binary-factors( -2) ==> 1 log2-binary-factors( 2) ==> 1 |
- log2-binary-factors( -3) ==> 0 log2-binary-factors( 3) ==> 0 |
- log2-binary-factors( -4) ==> 2 log2-binary-factors( 4) ==> 2 |
- log2-binary-factors( -5) ==> 0 log2-binary-factors( 5) ==> 0 |
- log2-binary-factors( -6) ==> 1 log2-binary-factors( 6) ==> 1 |
- log2-binary-factors( -7) ==> 0 log2-binary-factors( 7) ==> 0 |
- log2-binary-factors( -8) ==> 3 log2-binary-factors( 8) ==> 3 |
- log2-binary-factors( -9) ==> 0 log2-binary-factors( 9) ==> 0 |
- log2-binary-factors(-10) ==> 1 log2-binary-factors(10) ==> 1 |
- log2-binary-factors(-11) ==> 0 log2-binary-factors(11) ==> 0 |
- log2-binary-factors(-12) ==> 2 log2-binary-factors(12) ==> 2 |
- log2-binary-factors(-13) ==> 0 log2-binary-factors(13) ==> 0 |
- log2-binary-factors(-14) ==> 1 log2-binary-factors(14) ==> 1 |
- log2-binary-factors(-15) ==> 0 log2-binary-factors(15) ==> 0 |
- log2-binary-factors(-16) ==> 4 log2-binary-factors(16) ==> 4 |
- |
-5.1.3 Bit Within Word |
---------------------- |
- |
- -- Function: logbit? index n |
- -- Function: bit-set? index n |
- (logbit? index n) == (logtest (expt 2 index) n) |
+ Example:
+ (integer-length #b10101010)
+ => 8
+ (integer-length 0)
+ => 0
+ (integer-length #b1111)
+ => 4
+
+ -- Function: log2-binary-factors n
+ -- Function: first-set-bit n
+ Returns the number of factors of two of integer N. This value is
+ also the bit-index of the least-significant `1' bit in N.
+
+ (require 'printf)
+ (do ((idx 0 (+ 1 idx)))
+ ((> idx 16))
+ (printf "%s(%3d) ==> %-5d %s(%2d) ==> %-5d\n"
+ 'log2-binary-factors
+ (- idx) (log2-binary-factors (- idx))
+ 'log2-binary-factors
+ idx (log2-binary-factors idx)))
+ -|
+ log2-binary-factors( 0) ==> -1 log2-binary-factors( 0) ==> -1
+ log2-binary-factors( -1) ==> 0 log2-binary-factors( 1) ==> 0
+ log2-binary-factors( -2) ==> 1 log2-binary-factors( 2) ==> 1
+ log2-binary-factors( -3) ==> 0 log2-binary-factors( 3) ==> 0
+ log2-binary-factors( -4) ==> 2 log2-binary-factors( 4) ==> 2
+ log2-binary-factors( -5) ==> 0 log2-binary-factors( 5) ==> 0
+ log2-binary-factors( -6) ==> 1 log2-binary-factors( 6) ==> 1
+ log2-binary-factors( -7) ==> 0 log2-binary-factors( 7) ==> 0
+ log2-binary-factors( -8) ==> 3 log2-binary-factors( 8) ==> 3
+ log2-binary-factors( -9) ==> 0 log2-binary-factors( 9) ==> 0
+ log2-binary-factors(-10) ==> 1 log2-binary-factors(10) ==> 1
+ log2-binary-factors(-11) ==> 0 log2-binary-factors(11) ==> 0
+ log2-binary-factors(-12) ==> 2 log2-binary-factors(12) ==> 2
+ log2-binary-factors(-13) ==> 0 log2-binary-factors(13) ==> 0
+ log2-binary-factors(-14) ==> 1 log2-binary-factors(14) ==> 1
+ log2-binary-factors(-15) ==> 0 log2-binary-factors(15) ==> 0
+ log2-binary-factors(-16) ==> 4 log2-binary-factors(16) ==> 4
+
+5.1.3 Bit Within Word
+---------------------
+
+ -- Function: logbit? index n
+ -- Function: bit-set? index n
+ (logbit? index n) == (logtest (expt 2 index) n)
(logbit? 0 #b1101) => #t
(logbit? 1 #b1101) => #f
@@ -5852,7 +5948,7 @@ representation.
(logbit? 3 #b1101) => #t
(logbit? 4 #b1101) => #f
- -- Function: copy-bit index from bit |
+ -- Function: copy-bit index from bit
Returns an integer the same as FROM except in the INDEXth bit,
which is 1 if BIT is `#t' and 0 if BIT is `#f'.
@@ -5861,10 +5957,10 @@ representation.
(number->string (copy-bit 2 0 #t) 2) => "100"
(number->string (copy-bit 2 #b1111 #f) 2) => "1011"
-5.1.4 Field of Bits |
-------------------- |
+5.1.4 Field of Bits
+-------------------
- -- Function: bit-field n start end |
+ -- Function: bit-field n start end
Returns the integer composed of the START (inclusive) through END
(exclusive) bits of N. The STARTth bit becomes the 0-th bit in
the result.
@@ -5875,22 +5971,22 @@ representation.
(number->string (bit-field #b1101101010 4 9) 2)
=> "10110"
- -- Function: copy-bit-field to from start end |
+ -- Function: copy-bit-field to from start end
Returns an integer the same as TO except possibly in the START
(inclusive) through END (exclusive) bits, which are the same as
those of FROM. The 0-th bit of FROM becomes the STARTth bit of
the result.
Example:
- (number->string (copy-bit-field #b1101101010 0 0 4) 2) |
+ (number->string (copy-bit-field #b1101101010 0 0 4) 2)
=> "1101100000"
- (number->string (copy-bit-field #b1101101010 -1 0 4) 2) |
+ (number->string (copy-bit-field #b1101101010 -1 0 4) 2)
=> "1101101111"
- (number->string (copy-bit-field #b110100100010000 -1 5 9) 2) |
- => "110100111110000" |
+ (number->string (copy-bit-field #b110100100010000 -1 5 9) 2)
+ => "110100111110000"
- -- Function: ash n count |
- -- Function: arithmetic-shift n count |
+ -- Function: ash n count
+ -- Function: arithmetic-shift n count
Returns an integer equivalent to `(inexact->exact (floor (* N
(expt 2 COUNT))))'.
@@ -5900,36 +5996,36 @@ representation.
(number->string (ash #b1010 -1) 2)
=> "101"
- -- Function: rotate-bit-field n count start end |
- Returns N with the bit-field from START to END cyclically permuted |
- by COUNT bits towards high-order. |
+ -- Function: rotate-bit-field n count start end
+ Returns N with the bit-field from START to END cyclically permuted
+ by COUNT bits towards high-order.
Example:
- (number->string (rotate-bit-field #b0100 3 0 4) 2) |
+ (number->string (rotate-bit-field #b0100 3 0 4) 2)
=> "10"
- (number->string (rotate-bit-field #b0100 -1 0 4) 2) |
+ (number->string (rotate-bit-field #b0100 -1 0 4) 2)
=> "10"
- (number->string (rotate-bit-field #b110100100010000 -1 5 9) 2) |
- => "110100010010000" |
- (number->string (rotate-bit-field #b110100100010000 1 5 9) 2) |
- => "110100000110000" |
+ (number->string (rotate-bit-field #b110100100010000 -1 5 9) 2)
+ => "110100010010000"
+ (number->string (rotate-bit-field #b110100100010000 1 5 9) 2)
+ => "110100000110000"
- -- Function: reverse-bit-field n start end |
- Returns N with the order of bits START to END reversed. |
+ -- Function: reverse-bit-field n start end
+ Returns N with the order of bits START to END reversed.
- (number->string (reverse-bit-field #xa7 0 8) 16) |
+ (number->string (reverse-bit-field #xa7 0 8) 16)
=> "e5"
-5.1.5 Bits as Booleans |
----------------------- |
- |
- -- Function: integer->list k len |
- -- Function: integer->list k |
+5.1.5 Bits as Booleans
+----------------------
+
+ -- Function: integer->list k len
+ -- Function: integer->list k
`integer->list' returns a list of LEN booleans corresponding to
each bit of the given integer. #t is coded for each 1; #f for 0.
The LEN argument defaults to `(integer-length K)'.
- -- Function: list->integer list |
+ -- Function: list->integer list
`list->integer' returns an integer formed from the booleans in the
list LIST, which must be a list of booleans. A 1 bit is coded for
each #t; a 0 bit for #f.
@@ -5937,19 +6033,19 @@ representation.
`integer->list' and `list->integer' are inverses so far as
`equal?' is concerned.
- -- Function: booleans->integer bool1 ... |
+ -- Function: booleans->integer bool1 ...
Returns the integer coded by the BOOL1 ... arguments.
- |
+

File: slib.info, Node: Modular Arithmetic, Next: Prime Numbers, Prev: Bit-Twiddling, Up: Mathematical Packages
-5.2 Modular Arithmetic |
-====================== |
+5.2 Modular Arithmetic
+======================
`(require 'modular)'
- -- Function: mod x1 x2 |
- -- Function: rem x1 x2 |
+ -- 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
@@ -5967,18 +6063,18 @@ File: slib.info, Node: Modular Arithmetic, Next: Prime Numbers, Prev: Bit-Twi
(mod (* 5/2 pi) (* 2 pi)) => 1.5707963267948965
(rem (* -5/2 pi) (* 2 pi)) => -1.5707963267948965
- -- Function: extended-euclid n1 n2 |
+ -- 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 |
+ -- Function: symmetric:modulus n
Returns `(quotient (+ -1 n) -2)' for positive odd integer N.
- -- Function: modulus->integer modulus |
+ -- Function: modulus->integer modulus
Returns the non-negative integer characteristic of the ring formed
when MODULUS is used with `modular:' procedures.
- -- Function: modular:normalize modulus n |
+ -- Function: modular:normalize modulus n
Returns the integer `(modulo N (modulus->integer MODULUS))' in the
representation specified by MODULUS.
@@ -5994,46 +6090,46 @@ For all of these functions, if the first argument (MODULUS) is:
`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)'. |
+ modulo `(+ 1 (* -2 MODULUS))', but with "symmetric" representation;
+ i.e. `(<= (- MODULUS) N MODULUS)'.
If all the arguments are fixnums the computation will use only fixnums.
- -- Function: modular:invertable? modulus k |
+ -- Function: modular:invertable? modulus k
Returns `#t' if there exists an integer n such that K * n == 1 mod
MODULUS, and `#f' otherwise.
- -- Function: modular:invert modulus n2 |
+ -- Function: modular:invert modulus n2
Returns an integer n such that 1 = (n * N2) mod MODULUS. If N2
has no inverse mod MODULUS an error is signaled.
- -- Function: modular:negate modulus n2 |
+ -- Function: modular:negate modulus n2
Returns (-N2) mod MODULUS.
- -- Function: modular:+ modulus n2 n3 |
+ -- Function: modular:+ modulus n2 n3
Returns (N2 + N3) mod MODULUS.
- -- Function: modular:- modulus n2 n3 |
+ -- Function: modular:- modulus n2 n3
Returns (N2 - N3) mod MODULUS.
- -- Function: modular:* modulus n2 n3 |
+ -- Function: modular:* modulus n2 n3
Returns (N2 * N3) mod MODULUS.
The Scheme code for `modular:*' with negative MODULUS is not
completed for fixnum-only implementations.
- -- Function: modular:expt modulus n2 n3 |
+ -- Function: modular:expt modulus n2 n3
Returns (N2 ^ N3) mod MODULUS.

File: slib.info, Node: Prime Numbers, Next: Random Numbers, Prev: Modular Arithmetic, Up: Mathematical Packages
-5.3 Prime Numbers |
-================= |
+5.3 Prime Numbers
+=================
`(require 'factor)'
- -- Variable: prime:prngs |
+ -- Variable: prime:prngs
PRIME:PRNGS is the random-state (*note Random Numbers::) used by
these procedures. If you call these procedures from more than one
thread (or from interrupt), `random' may complain about reentrant
@@ -6044,28 +6140,28 @@ the Solovay-Strassen primality test. See
* Robert Solovay and Volker Strassen, `A Fast Monte-Carlo Test for
Primality', SIAM Journal on Computing, 1977, pp 84-85.
- -- Function: jacobi-symbol p q |
+ -- Function: jacobi-symbol p q
Returns the value (+1, -1, or 0) of the Jacobi-Symbol of exact
non-negative integer P and exact positive odd integer Q.
- -- Variable: prime:trials |
+ -- Variable: prime:trials
PRIME:TRIALS the maxinum number of iterations of Solovay-Strassen
that will be done to test a number for primality.
- -- Function: prime? n |
+ -- Function: prime? n
Returns `#f' if N is composite; `#t' if N is prime. There is a
slight chance `(expt 2 (- prime:trials))' that a composite will
return `#t'.
- -- Function: primes< start count |
+ -- Function: primes< start count
Returns a list of the first COUNT prime numbers less than START.
If there are fewer than COUNT prime numbers less than START, then
the returned list will have fewer than START elements.
- -- Function: primes> start count |
+ -- Function: primes> start count
Returns a list of the first COUNT prime numbers greater than START.
- -- Function: factor k |
+ -- Function: factor k
Returns a list of the prime factors of K. The order of the
factors is unspecified. In order to obtain a sorted list do
`(sort! (factor K) <)'.
@@ -6073,14 +6169,14 @@ the Solovay-Strassen primality test. See

File: slib.info, Node: Random Numbers, Next: Fast Fourier Transform, Prev: Prime Numbers, Up: Mathematical Packages
-5.4 Random Numbers |
-================== |
+5.4 Random Numbers
+==================
A pseudo-random number generator is only as good as the tests it passes.
George Marsaglia of Florida State University developed a battery of
-tests named "DIEHARD" (`http://stat.fsu.edu/~geo/diehard.html'). |
+tests named "DIEHARD" (`http://stat.fsu.edu/~geo/diehard.html').
`diehard.c' has a bug which the patch
-`http://swiss.csail.mit.edu/ftpdir/users/jaffer/diehard.c.pat' corrects. |
+`http://swiss.csail.mit.edu/ftpdir/users/jaffer/diehard.c.pat' corrects.
SLIB's PRNG generates 8 bits at a time. With the degenerate seed
`0', the numbers generated pass DIEHARD; but when bits are combined
@@ -6095,13 +6191,13 @@ 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.4.1 Exact Random Numbers
+--------------------------
`(require 'random)'
- -- Function: random n state |
- -- Function: random n |
+ -- Function: random n state
+ -- Function: random n
N must be an exact positive integer. `random' returns an exact
integer between zero (inclusive) and N (exclusive). The values
returned by `random' are uniformly distributed from 0 to N.
@@ -6112,7 +6208,7 @@ File: slib.info, Node: Exact Random Numbers, Next: Inexact Random Numbers, Pr
to maintain the state of the pseudo-random-number generator and is
altered as a side effect of calls to `random'.
- -- Variable: *random-state* |
+ -- Variable: *random-state*
Holds a data structure that encodes the internal state of the
random-number generator that `random' uses by default. The nature
of this data structure is implementation-dependent. It may be
@@ -6120,13 +6216,13 @@ File: slib.info, Node: Exact Random Numbers, Next: Inexact Random Numbers, Pr
function correctly as a random-number state object in another
implementation.
- -- Function: copy-random-state state |
+ -- Function: copy-random-state state
Returns a new copy of argument STATE.
- -- Function: copy-random-state |
+ -- Function: copy-random-state
Returns a new copy of `*random-state*'.
- -- Function: seed->random-state seed |
+ -- Function: seed->random-state seed
Returns a new object of type suitable for use as the value of the
variable `*random-state*' or as a second argument to `random'.
The number or string SEED is used to initialize the state. If
@@ -6135,8 +6231,8 @@ File: slib.info, Node: Exact Random Numbers, Next: Inexact Random Numbers, Pr
Calling `seed->random-state' with unequal arguments will nearly
always return unequal states.
- -- Function: make-random-state |
- -- Function: make-random-state obj |
+ -- Function: make-random-state
+ -- Function: make-random-state obj
Returns a new object of type suitable for use as the value of the
variable `*random-state*' or as a second argument to `random'. If
the optional argument OBJ is given, it should be a printable
@@ -6147,43 +6243,43 @@ 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.4.2 Inexact Random Numbers
+----------------------------
`(require 'random-inexact)'
- -- Function: random:uniform |
- -- Function: random:uniform state |
+ -- Function: random:uniform
+ -- Function: random:uniform state
Returns an uniformly distributed inexact real random number in the
range between 0 and 1.
- -- Function: random:exp |
- -- Function: random:exp state |
+ -- Function: random:exp
+ -- Function: random:exp state
Returns an inexact real in an exponential distribution with mean
1. For an exponential distribution with mean U use
`(* U (random:exp))'.
- -- Function: random:normal |
- -- Function: random:normal state |
+ -- Function: random:normal
+ -- Function: random:normal state
Returns an inexact real in a normal distribution with mean 0 and
standard deviation 1. For a normal distribution with mean M and
standard deviation D use `(+ M (* D (random:normal)))'.
- -- Procedure: random:normal-vector! vect |
- -- Procedure: random:normal-vector! vect state |
+ -- Procedure: random:normal-vector! vect
+ -- Procedure: random:normal-vector! vect state
Fills VECT with inexact real random numbers which are independent
and standard normally distributed (i.e., with mean 0 and variance
1).
- -- Procedure: random:hollow-sphere! vect |
- -- Procedure: random:hollow-sphere! vect state |
+ -- Procedure: random:hollow-sphere! vect
+ -- Procedure: random:hollow-sphere! vect state
Fills VECT with inexact real random numbers the sum of whose
squares is equal to 1.0. Thinking of VECT as coordinates in space
of dimension n = `(vector-length VECT)', the coordinates are
uniformly distributed over the surface of the unit n-shere.
- -- Procedure: random:solid-sphere! vect |
- -- Procedure: random:solid-sphere! vect state |
+ -- Procedure: random:solid-sphere! vect
+ -- Procedure: random:solid-sphere! vect state
Fills VECT with inexact real random numbers the sum of whose
squares is less than 1.0. Thinking of VECT as coordinates in
space of dimension N = `(vector-length VECT)', the coordinates are
@@ -6193,17 +6289,17 @@ File: slib.info, Node: Inexact Random Numbers, Prev: Exact Random Numbers, Up

File: slib.info, Node: Fast Fourier Transform, Next: Cyclic Checksum, Prev: Random Numbers, Up: Mathematical Packages
-5.5 Fast Fourier Transform |
-========================== |
+5.5 Fast Fourier Transform
+==========================
`(require 'fft)'
- -- Function: fft array |
+ -- 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.
- -- Function: fft-1 array |
+ -- Function: fft-1 array
`fft-1' returns an array of complex numbers comprising the inverse
Discrete Fourier Transform of ARRAY.
@@ -6222,12 +6318,12 @@ File: slib.info, Node: Fast Fourier Transform, Next: Cyclic Checksum, Prev: R

File: slib.info, Node: Cyclic Checksum, Next: Graphing, Prev: Fast Fourier Transform, Up: Mathematical Packages
-5.6 Cyclic Checksum |
-=================== |
+5.6 Cyclic Checksum
+===================
-`(require 'crc)' Cyclic Redundancy Checks using Galois field GF(2) |
-polynomial arithmetic are used for error detection in many data |
-transmission and storage applications. |
+`(require 'crc)' Cyclic Redundancy Checks using Galois field GF(2)
+polynomial arithmetic are used for error detection in many data
+transmission and storage applications.
The generator polynomials for various CRC protocols are availble from
many sources. But the polynomial is just one of many parameters which
@@ -6244,26 +6340,26 @@ existing systems:
non-inverted) to the data stream.
-The performance of a particular CRC polynomial over packets of given |
-sizes varies widely. In terms of the probability of undetected errors, |
-some uses of extant CRC polynomials are suboptimal by several orders of |
-magnitude. |
- |
-If you are considering CRC for a new application, consult the following |
-article to find the optimum CRC polynomial for your range of data |
-lengths: |
- |
- * Philip Koopman and Tridib Chakravarty, |
- "Cyclic Redundancy Code (CRC) Polynomial Selection For Embedded |
- Networks", |
- The International Conference on Dependable Systems and Networks, |
- DSN-2004. |
- |
-`http://www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf' |
- |
+The performance of a particular CRC polynomial over packets of given
+sizes varies widely. In terms of the probability of undetected errors,
+some uses of extant CRC polynomials are suboptimal by several orders of
+magnitude.
+
+If you are considering CRC for a new application, consult the following
+article to find the optimum CRC polynomial for your range of data
+lengths:
+
+ * Philip Koopman and Tridib Chakravarty,
+ "Cyclic Redundancy Code (CRC) Polynomial Selection For Embedded
+ Networks",
+ The International Conference on Dependable Systems and Networks,
+ DSN-2004.
+
+`http://www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf'
+
There is even some controversy over the polynomials themselves.
- -- Constant: crc-32-polynomial |
+ -- Constant: crc-32-polynomial
For CRC-32, http://www2.sis.pitt.edu/~jkabara/tele-2100/lect08.html
gives x^32+x^26+x^23+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+1.
@@ -6279,7 +6375,7 @@ There is even some controversy over the polynomials themselves.
SLIB `crc-32-polynomial' uses the latter definition.
- -- Constant: crc-ccitt-polynomial |
+ -- Constant: crc-ccitt-polynomial
http://www.math.grin.edu/~rebelsky/Courses/CS364/2000S/Outlines/outline.12.html,
http://duchon.umuc.edu/Web_Pages/duchon/99_f_cm435/ShiftRegister.htm,
http://www.cs.ncl.ac.uk/people/harry.whitfield/home.formal/CRCs.html,
@@ -6287,7 +6383,7 @@ There is even some controversy over the polynomials themselves.
http://www.gpfn.sk.ca/~rhg/csc8550s02/crc.html give CRC-CCITT:
x^16+x^12+x^5+1.
- -- Constant: crc-16-polynomial |
+ -- Constant: crc-16-polynomial
http://www.math.grin.edu/~rebelsky/Courses/CS364/2000S/Outlines/outline.12.html,
http://duchon.umuc.edu/Web_Pages/duchon/99_f_cm435/ShiftRegister.htm,
http://www.cs.ncl.ac.uk/people/harry.whitfield/home.formal/CRCs.html,
@@ -6295,7 +6391,7 @@ There is even some controversy over the polynomials themselves.
http://www.usb.org/developers/data/crcdes.pdf give CRC-16:
x^16+x^15+x^2+1.
- -- Constant: crc-12-polynomial |
+ -- Constant: crc-12-polynomial
http://www.math.grin.edu/~rebelsky/Courses/CS364/2000S/Outlines/outline.12.html,
http://www.cs.ncl.ac.uk/people/harry.whitfield/home.formal/CRCs.html,
http://www.it.iitb.ac.in/it605/lectures/link/node4.html, and
@@ -6313,10 +6409,10 @@ There is even some controversy over the polynomials themselves.
These differ in bit 1 and calculations using them return different
values. With citations near evenly split, it is hard to know
- which is correct. Thanks to Philip Koopman for breaking the tie |
- in favor of the latter (#xC07). |
+ which is correct. Thanks to Philip Koopman for breaking the tie
+ in favor of the latter (#xC07).
- -- Constant: crc-10-polynomial |
+ -- Constant: crc-10-polynomial
http://www.math.grin.edu/~rebelsky/Courses/CS364/2000S/Outlines/outline.12.html
gives CRC-10: x^10+x^9+x^5+x^4+1; but
http://cell-relay.indiana.edu/cell-relay/publications/software/CRC/crc10.html,
@@ -6327,29 +6423,29 @@ There is even some controversy over the polynomials themselves.
http://www.nobugconsulting.ro/crc.php give CRC-10:
x^10+x^9+x^5+x^4+x+1.
- -- Constant: crc-08-polynomial |
+ -- Constant: crc-08-polynomial
http://www.math.grin.edu/~rebelsky/Courses/CS364/2000S/Outlines/outline.12.html,
http://www.cs.ncl.ac.uk/people/harry.whitfield/home.formal/CRCs.html,
http://www.it.iitb.ac.in/it605/lectures/link/node4.html, and
http://www.nobugconsulting.ro/crc.php give CRC-8: x^8+x^2+x^1+1
- -- Constant: atm-hec-polynomial |
+ -- Constant: atm-hec-polynomial
http://cell-relay.indiana.edu/cell-relay/publications/software/CRC/32bitCRC.tutorial.html
and http://www.gpfn.sk.ca/~rhg/csc8550s02/crc.html give ATM HEC:
x^8+x^2+x+1.
- -- Constant: dowcrc-polynomial |
+ -- Constant: dowcrc-polynomial
http://www.cs.ncl.ac.uk/people/harry.whitfield/home.formal/CRCs.html
gives DOWCRC: x^8+x^5+x^4+1.
- -- Constant: usb-token-polynomial |
+ -- Constant: usb-token-polynomial
http://www.usb.org/developers/data/crcdes.pdf and
http://www.nobugconsulting.ro/crc.php give USB-token: x^5+x^2+1.
Each of these polynomial constants is a string of `1's and `0's, the
exponent of each power of X in descending order.
- -- Function: crc:make-table poly |
+ -- Function: crc:make-table poly
POLY must be string of `1's and `0's beginning with `1' and having
length greater than 8. `crc:make-table' returns a vector of 256
integers, such that:
@@ -6367,14 +6463,14 @@ exponent of each power of X in descending order.
`crc:make-table' returns #f.
- -- Function: cksum file |
+ -- Function: cksum file
Computes the P1003.2/D11.2 (POSIX.2) 32-bit checksum of FILE.
(require 'crc)
(cksum (in-vicinity (library-vicinity) "ratize.scm"))
=> 157103930
- -- Function: cksum port |
+ -- Function: cksum port
Computes the checksum of the bytes read from PORT until the
end-of-file.
@@ -6385,10 +6481,10 @@ checksum of the bytes in STR, can be defined as follows:
(require 'string-port)
(define (cksum-string str) (call-with-input-string str cksum))
- -- Function: crc16 file |
+ -- Function: crc16 file
Computes the USB data-packet (16-bit) CRC of FILE.
- -- Function: crc16 port |
+ -- Function: crc16 port
Computes the USB data-packet (16-bit) CRC of the bytes read from
PORT until the end-of-file.
@@ -6396,10 +6492,10 @@ checksum of the bytes in STR, can be defined as follows:
in http://www.usb.org/developers/data/crcdes.pdf.
- -- Function: crc5 file |
+ -- Function: crc5 file
Computes the USB token (5-bit) CRC of FILE.
- -- Function: crc5 port |
+ -- Function: crc5 port
Computes the USB token (5-bit) CRC of the bytes read from PORT
until the end-of-file.
@@ -6410,8 +6506,8 @@ 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.7 Graphing
+============
* Menu:
@@ -6421,12 +6517,12 @@ 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.7.1 Character Plotting
+------------------------
`(require 'charplot)'
- -- Variable: charplot:dimensions |
+ -- Variable: charplot:dimensions
A list of the maximum height (number of lines) and maximum width
(number of columns) for the graph, its scales, and labels.
@@ -6434,7 +6530,7 @@ File: slib.info, Node: Character Plotting, Next: PostScript Graphing, Prev: G
`output-port-height' and `output-port-width' of
`current-output-port'.
- -- Procedure: plot coords x-label y-label |
+ -- Procedure: 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
the x and y axes.
@@ -6471,8 +6567,8 @@ File: slib.info, Node: Character Plotting, Next: PostScript Graphing, Prev: G
|:_____._____:_____._____:_____._____:____|
x 2 4 6
- -- Procedure: plot func x1 x2 |
- -- Procedure: plot func x1 x2 npts |
+ -- Procedure: plot func x1 x2
+ -- Procedure: plot func x1 x2 npts
Plots the function of one argument FUNC over the range X1 to X2.
If the optional integer argument NPTS is supplied, it specifies
the number of points to evaluate FUNC at.
@@ -6500,7 +6596,7 @@ File: slib.info, Node: Character Plotting, Next: PostScript Graphing, Prev: G
|_:_____._____:_____._____:_____._____:___|
0 2 4 6
- -- Procedure: histograph data label |
+ -- Procedure: histograph data label
Creates and displays a histogram of the numerical values contained
in vector or list DATA
@@ -6534,20 +6630,20 @@ 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.7.2 PostScript Graphing
+-------------------------
`(require 'eps-graph)'
This is a graphing package creating encapsulated-PostScript files. Its
motivations and design choice are described in
-`http://swiss.csail.mit.edu/~jaffer/Docupage/grapheps' |
+`http://swiss.csail.mit.edu/~jaffer/Docupage/grapheps'
A dataset to be plotted is taken from a 2-dimensional array.
Corresponding coordinates are in rows. Coordinates from any pair of
columns can be plotted.
- -- Function: create-postscript-graph filename.eps size elt1 ... |
+ -- Function: create-postscript-graph filename.eps size elt1 ...
FILENAME.EPS should be a string naming an output file to be
created. SIZE should be an exact integer, a list of two exact
integers, or #f. ELT1, ... are values returned by graphing
@@ -6567,7 +6663,7 @@ These graphing procedures should be called as arguments to
significant; PostScript graphics state is affected serially from the
first ELT argument to the last.
- -- Function: whole-page |
+ -- Function: whole-page
Pushes a rectangle for the whole encapsulated page onto the
PostScript stack. This pushed rectangle is an implicit argument to
`partition-page' or `setup-plot'.
@@ -6585,26 +6681,26 @@ 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.7.2.1 Column Ranges
+.....................
-A "range" is a list of two numbers, the minimum and the maximum. Ranges |
-can be given explicity or computed in PostScript by `column-range'. |
+A "range" is a list of two numbers, the minimum and the maximum. Ranges
+can be given explicity or computed in PostScript by `column-range'.
- -- Function: column-range array k |
+ -- Function: column-range array k
Returns the range of values in 2-dimensional ARRAY column K.
- -- Function: pad-range range p |
+ -- Function: pad-range range p
Expands RANGE by P/100 on each end.
- -- Function: snap-range range |
+ -- Function: snap-range range
Expands RANGE to round number of ticks.
- -- Function: combine-ranges range1 range2 ... |
+ -- Function: combine-ranges range1 range2 ...
Returns the minimal range covering all RANGE1, RANGE2, ...
- -- Function: setup-plot x-range y-range pagerect |
- -- Function: setup-plot x-range y-range |
+ -- Function: setup-plot x-range y-range pagerect
+ -- Function: setup-plot x-range y-range
X-RANGE and Y-RANGE should each be a list of two numbers or the
value returned by `pad-range', `snap-range', or `combine-range'.
PAGERECT is the rectangle bounding the graph to be drawn; if
@@ -6626,10 +6722,10 @@ 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.7.2.2 Drawing the Graph
+.........................
- -- Function: plot-column array x-column y-column proc3s |
+ -- Function: plot-column array x-column y-column proc3s
Plots points with x coordinate in X-COLUMN of ARRAY and y
coordinate Y-COLUMN of ARRAY. The symbol PROC3S specifies the
type of glyph or drawing style for presenting these coordinates.
@@ -6684,21 +6780,21 @@ 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.7.2.3 Graphics Context
+........................
- -- Function: in-graphic-context arg ... |
+ -- Function: in-graphic-context arg ...
Saves the current graphics state, executes ARGS, then restores to
saved graphics state.
- -- Function: set-color color |
+ -- Function: set-color color
COLOR should be a string naming a Resene color, a saturate color,
or a number between 0 and 100.
`set-color' sets the PostScript color to the color of the given
string, or a grey value between black (0) and white (100).
- -- Function: set-font name fontheight |
+ -- Function: set-font name fontheight
NAME should be a (case-sensitive) string naming a PostScript font.
FONTHEIGHT should be a positive real number.
@@ -6714,21 +6810,21 @@ Symbol
Line parameters do no affect fonts; they do effect glyphs.
- -- Function: set-linewidth w |
+ -- Function: set-linewidth w
The default linewidth is 1. Setting it to 0 makes the lines drawn
as skinny as possible. Linewidth must be much smaller than
glyphsize for readable glyphs.
- -- Function: set-linedash j k |
+ -- Function: set-linedash j k
Lines are drawn J-on K-off.
- -- Function: set-linedash j |
+ -- Function: set-linedash j
Lines are drawn J-on J-off.
- -- Function: set-linedash |
+ -- Function: set-linedash
Turns off dashing.
- -- Function: set-glyphsize w |
+ -- Function: set-glyphsize w
Sets the (PostScript) variable glyphsize to W. The default
glyphsize is 6.
@@ -6737,39 +6833,39 @@ 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.7.2.4 Rectangles
+..................
A "rectangle" is a list of 4 numbers; the first two elements are the x
and y coordinates of lower left corner of the rectangle. The other two
elements are the width and height of the rectangle.
- -- Function: whole-page |
+ -- Function: whole-page
Pushes a rectangle for the whole encapsulated page onto the
PostScript stack. This pushed rectangle is an implicit argument to
`partition-page' or `setup-plot'.
- -- Function: partition-page xparts yparts |
+ -- Function: partition-page xparts yparts
Pops the rectangle currently on top of the stack and pushes XPARTS
* YPARTS sub-rectangles onto the stack in decreasing y and
increasing x order. If you are drawing just one graph, then you
don't need `partition-page'.
- -- Variable: plotrect |
+ -- Variable: plotrect
The rectangle where data points should be plotted. PLOTRECT is
set by `setup-plot'.
- -- Variable: graphrect |
+ -- Variable: graphrect
The PAGERECT argument of the most recent call to `setup-plot'.
Includes plotrect, legends, etc.
- -- Function: fill-rect rect |
+ -- Function: fill-rect rect
fills RECT with the current color.
- -- Function: outline-rect rect |
+ -- Function: outline-rect rect
Draws the perimiter of RECT in the current color.
- -- Function: clip-to-rect rect |
+ -- Function: clip-to-rect rect
Modifies the current graphics-state so that nothing will be drawn
outside of the rectangle RECT. Use `in-graphic-context' to limit
the extent of `clip-to-rect'.
@@ -6777,35 +6873,35 @@ 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.7.2.5 Legending
+.................
- -- Function: title-top title subtitle |
- -- Function: title-top title |
+ -- Function: title-top title subtitle
+ -- Function: title-top title
Puts a TITLE line and an optional SUBTITLE line above the
`graphrect'.
- -- Function: title-bottom title subtitle |
- -- Function: title-bottom title |
+ -- Function: title-bottom title subtitle
+ -- Function: title-bottom title
Puts a TITLE line and an optional SUBTITLE line below the
`graphrect'.
- -- Variable: topedge |
- -- Variable: bottomedge |
+ -- Variable: topedge
+ -- Variable: bottomedge
These edge coordinates of `graphrect' are suitable for passing as
the first argument to `rule-horizontal'.
- -- Variable: leftedge |
- -- Variable: rightedge |
+ -- Variable: leftedge
+ -- Variable: rightedge
These edge coordinates of `graphrect' are suitable for passing as
the first argument to `rule-vertical'.
- -- Function: set-margin-templates left right |
- The margin-templates are strings whose displayed width is used to |
- reserve space for the left and right side numerical legends. The |
- default values are "-.0123456789". |
- |
- -- Function: rule-vertical x-coord text tick-width |
+ -- Function: set-margin-templates left right
+ The margin-templates are strings whose displayed width is used to
+ reserve space for the left and right side numerical legends. The
+ default values are "-.0123456789".
+
+ -- Function: rule-vertical x-coord text tick-width
Draws a vertical ruler with X coordinate X-COORD and labeled with
string TEXT. If TICK-WIDTH is positive, then the ticks are
TICK-WIDTH long on the right side of X-COORD; and TEXT and numeric
@@ -6813,7 +6909,7 @@ 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 |
+ -- Function: rule-horizontal x-coord text tick-height
Draws a horizontal ruler with X coordinate X-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
@@ -6821,38 +6917,43 @@ File: slib.info, Node: Legending, Next: Legacy Plotting, Prev: Rectangles, U
the ticks are -TICK-HEIGHT long on the left side of X-COORD; and
TEXT and numeric legends are on the right.
- -- Function: y-axis |
+ -- Function: y-axis
Draws the y-axis.
- -- Function: x-axis |
+ -- Function: x-axis
Draws the x-axis.
- -- Function: grid-verticals |
+ -- Function: grid-verticals
Draws vertical lines through `graphrect' at each tick on the
vertical ruler.
- -- Function: grid-horizontals |
+ -- Function: grid-horizontals
Draws horizontal lines through `graphrect' at each tick on the
horizontal ruler.

File: slib.info, Node: Legacy Plotting, Next: Example Graph, Prev: Legending, Up: PostScript Graphing
-5.7.2.6 Legacy Plotting |
-....................... |
+5.7.2.6 Legacy Plotting
+.......................
- -- Variable: graph:dimensions |
+ -- Variable: graph:dimensions
A list of the width and height of the graph to be plotted using
`plot'.
- -- Function: plot func x1 x2 npts |
- -- Function: plot func x1 x2 |
+ -- Function: plot func x1 x2 npts
+ -- Function: plot func x1 x2
Creates and displays using `(system "gv tmp.eps")' an encapsulated
PostScript graph of the function of one argument FUNC over the
range X1 to X2. If the optional integer argument NPTS is
supplied, it specifies the number of points to evaluate FUNC at.
- -- Function: plot coords x-label y-label |
+ -- 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
the x and y axes.
@@ -6860,8 +6961,8 @@ 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.7.2.7 Example Graph
+.....................
The file `am1.5.html', a table of solar irradiance, is fetched with
`wget' if it isn't already in the working directory. The file is read
@@ -6914,7 +7015,7 @@ scales.
(define lines '())
(do ((line (read-line iprt) (read-line iprt)))
((eof-object? line)
- (let ((nra (make-array (A:floR64b) |
+ (let ((nra (make-array (A:floR64b)
(length lines)
(length (car lines)))))
(do ((lns lines (cdr lns))
@@ -6962,27 +7063,27 @@ scales.

File: slib.info, Node: Solid Modeling, Next: Color, Prev: Graphing, Up: Mathematical Packages
-5.8 Solid Modeling |
-================== |
+5.8 Solid Modeling
+==================
`(require 'solid)'
-`http://swiss.csail.mit.edu/~jaffer/Solid/#Example' gives an example |
+`http://swiss.csail.mit.edu/~jaffer/Solid/#Example' gives an example
use of this package.
- -- Function: vrml node ... |
+ -- Function: vrml node ...
Returns the VRML97 string (including header) of the concatenation
of strings NODES, ....
- -- Function: vrml-append node1 node2 ... |
+ -- Function: vrml-append node1 node2 ...
Returns the concatenation with interdigitated newlines of strings
NODE1, NODE2, ....
- -- Function: vrml-to-file file node ... |
+ -- Function: vrml-to-file file node ...
Writes to file named FILE the VRML97 string (including header) of
the concatenation of strings NODES, ....
- -- Function: world:info title info ... |
+ -- Function: world:info title info ...
Returns a VRML97 string setting the title of the file in which it
appears to TITLE. Additional strings INFO, ... are comments.
@@ -6991,11 +7092,11 @@ appear in the resulting VRML code. This string turns off the headlight
at the viewpoint:
" NavigationInfo {headlight FALSE}"
- -- Function: scene:panorama front right back left top bottom |
+ -- Function: scene:panorama front right back left top bottom
Specifies the distant images on the inside faces of the cube
enclosing the virtual world.
- -- Function: scene:sphere colors angles |
+ -- Function: scene:sphere colors angles
COLORS is a list of color objects. Each may be of type *Note
color: Color Data-Type, a 24-bit sRGB integer, or a list of 3
numbers between 0.0 and 1.0.
@@ -7006,16 +7107,16 @@ at the viewpoint:
are taken from the colors paired with the angles nearest them.
`scene:sphere' fills horizontal bands with interpolated colors on
- the background sphere encasing the world. |
+ the background sphere encasing the world.
- -- Function: scene:sky-and-dirt |
- Returns a blue and brown background sphere encasing the world. |
+ -- Function: scene:sky-and-dirt
+ Returns a blue and brown background sphere encasing the world.
- -- Function: scene:sky-and-grass |
- Returns a blue and green background sphere encasing the world. |
+ -- Function: scene:sky-and-grass
+ Returns a blue and green background sphere encasing the world.
- -- Function: scene:sun latitude julian-day hour turbidity strength |
- -- Function: scene:sun latitude julian-day hour turbidity |
+ -- Function: scene:sun latitude julian-day hour turbidity strength
+ -- Function: scene:sun latitude julian-day hour turbidity
LATITUDE is the virtual place's latitude in degrees. JULIAN-DAY
is an integer from 0 to 366, the day of the year. HOUR is a real
number from 0 to 24 for the time of day; 12 is noon. TURBIDITY is
@@ -7025,8 +7126,8 @@ at the viewpoint:
would be at HOUR on JULIAN-DAY at LATITUDE. If STRENGTH is
positive, included is a light source of STRENGTH (default 1).
- -- Function: scene:overcast latitude julian-day hour turbidity strength |
- -- Function: scene:overcast latitude julian-day hour turbidity |
+ -- Function: scene:overcast latitude julian-day hour turbidity strength
+ -- Function: scene:overcast latitude julian-day hour turbidity
LATITUDE is the virtual place's latitude in degrees. JULIAN-DAY
is an integer from 0 to 366, the day of the year. HOUR is a real
number from 0 to 24 for the time of day; 12 is noon. TURBIDITY is
@@ -7039,14 +7140,14 @@ at the viewpoint:
Viewpoints are objects in the virtual world, and can be transformed
individually or with solid objects.
- -- Function: scene:viewpoint name distance compass pitch |
- -- Function: scene:viewpoint name distance compass |
+ -- Function: scene:viewpoint name distance compass pitch
+ -- Function: scene:viewpoint name distance compass
Returns a viewpoint named NAME facing the origin and placed
DISTANCE from it. COMPASS is a number from 0 to 360 giving the
compass heading. PITCH is a number from -90 to 90, defaulting to
0, specifying the angle from the horizontal.
- -- Function: scene:viewpoints proximity |
+ -- Function: scene:viewpoints proximity
Returns 6 viewpoints, one at the center of each face of a cube
with sides 2 * PROXIMITY, centered on the origin.
@@ -7068,8 +7169,8 @@ It is sometimes useful for light sources to be brighter than `1'. When
INTENSITY arguments are greater than 1, these functions gang multiple
sources to reach the desired strength.
- -- Function: light:ambient color intensity |
- -- Function: light:ambient color |
+ -- Function: light:ambient color intensity
+ -- Function: light:ambient color
Ambient light shines on all surfaces with which it is grouped.
COLOR is a an object of type *Note color: Color Data-Type, a
@@ -7080,9 +7181,9 @@ sources to reach the desired strength.
`light:ambient' returns a light source or sources of COLOR with
total strength of INTENSITY (or 1 if omitted).
- -- Function: light:directional color direction intensity |
- -- Function: light:directional color direction |
- -- Function: light:directional color |
+ -- Function: light:directional color direction intensity
+ -- Function: light:directional color direction
+ -- Function: light:directional color
Directional light shines parallel rays with uniform intensity on
all objects with which it is grouped.
@@ -7102,10 +7203,10 @@ sources to reach the desired strength.
`light:directional' returns a light source or sources of COLOR
with total strength of INTENSITY, shining from DIRECTION.
- -- Function: light:beam attenuation radius aperture peak |
- -- Function: light:beam attenuation radius aperture |
- -- Function: light:beam attenuation radius |
- -- Function: light:beam attenuation |
+ -- Function: light:beam attenuation radius aperture peak
+ -- Function: light:beam attenuation radius aperture
+ -- Function: light:beam attenuation radius
+ -- Function: light:beam attenuation
ATTENUATION is a list or vector of three nonnegative real numbers
specifying the reduction of intensity, the reduction of intensity
with distance, and the reduction of intensity as the square of
@@ -7116,10 +7217,10 @@ sources to reach the desired strength.
the light's axis through which it sheds some light. PEAK is a
real number between 0 and 90, the angle of greatest illumination.
- -- Function: light:point location color intensity beam |
- -- Function: light:point location color intensity |
- -- Function: light:point location color |
- -- Function: light:point location |
+ -- Function: light:point location color intensity beam
+ -- Function: light:point location color intensity
+ -- Function: light:point location color
+ -- Function: light:point location
Point light radiates from LOCATION, intensity decreasing with
distance, towards all objects with which it is grouped.
@@ -7134,11 +7235,11 @@ sources to reach the desired strength.
that the pointlight itself is not visible. To make it so, place
an object with emissive appearance at LOCATION.
- -- Function: light:spot location direction color intensity beam |
- -- Function: light:spot location direction color intensity |
- -- Function: light:spot location direction color |
- -- Function: light:spot location direction |
- -- Function: light:spot location |
+ -- Function: light:spot location direction color intensity beam
+ -- Function: light:spot location direction color intensity
+ -- Function: light:spot location direction color
+ -- Function: light:spot location direction
+ -- Function: light:spot location
Spot light radiates from LOCATION towards DIRECTION, intensity
decreasing with distance, illuminating objects with which it is
grouped.
@@ -7164,8 +7265,8 @@ sources to reach the desired strength.
Object Primitives
-----------------
- -- Function: solid:box geometry appearance |
- -- Function: solid:box geometry |
+ -- Function: solid:box geometry appearance
+ -- Function: solid:box geometry
GEOMETRY must be a number or a list or vector of three numbers.
If GEOMETRY is a number, the `solid:box' returns a cube with sides
of length GEOMETRY centered on the origin. Otherwise, `solid:box'
@@ -7173,41 +7274,41 @@ Object Primitives
origin. APPEARANCE determines the surface properties of the
returned object.
- -- Function: solid:cylinder radius height appearance |
- -- Function: solid:cylinder radius height |
- Returns a right cylinder with dimensions `(abs RADIUS)' and `(abs |
- HEIGHT)' centered on the origin. If HEIGHT is positive, then the |
- cylinder ends will be capped. If RADIUS is negative, then only |
- the ends will appear. APPEARANCE determines the surface |
- properties of the returned object. |
+ -- Function: solid:cylinder radius height appearance
+ -- Function: solid:cylinder radius height
+ Returns a right cylinder with dimensions `(abs RADIUS)' and `(abs
+ HEIGHT)' centered on the origin. If HEIGHT is positive, then the
+ cylinder ends will be capped. If RADIUS is negative, then only
+ the ends will appear. APPEARANCE determines the surface
+ properties of the returned object.
- -- Function: solid:disk radius thickness appearance |
- -- Function: solid:disk radius thickness |
+ -- Function: solid:disk radius thickness appearance
+ -- Function: solid:disk radius thickness
THICKNESS must be a positive real number. `solid:disk' returns a
circular disk with dimensions RADIUS and THICKNESS centered on the
origin. APPEARANCE determines the surface properties of the
returned object.
- -- Function: solid:cone radius height appearance |
- -- Function: solid:cone radius height |
+ -- Function: solid:cone radius height appearance
+ -- Function: solid:cone radius height
Returns an isosceles cone with dimensions RADIUS and HEIGHT
centered on the origin. APPEARANCE determines the surface
properties of the returned object.
- -- Function: solid:pyramid side height appearance |
- -- Function: solid:pyramid side height |
+ -- Function: solid:pyramid side height appearance
+ -- Function: solid:pyramid side height
Returns an isosceles pyramid with dimensions SIDE and HEIGHT
centered on the origin. APPEARANCE determines the surface
properties of the returned object.
- -- Function: solid:sphere radius appearance |
- -- Function: solid:sphere radius |
+ -- Function: solid:sphere radius appearance
+ -- Function: solid:sphere radius
Returns a sphere of radius RADIUS centered on the origin.
APPEARANCE determines the surface properties of the returned
object.
- -- Function: solid:ellipsoid geometry appearance |
- -- Function: solid:ellipsoid geometry |
+ -- Function: solid:ellipsoid geometry appearance
+ -- Function: solid:ellipsoid geometry
GEOMETRY must be a number or a list or vector of three numbers.
If GEOMETRY is a number, the `solid:ellipsoid' returns a sphere of
diameter GEOMETRY centered on the origin. Otherwise,
@@ -7215,23 +7316,23 @@ Object Primitives
centered on the origin. APPEARANCE determines the surface
properties of the returned object.
- -- Function: solid:polyline coordinates appearance |
- -- Function: solid:polyline coordinates |
- COORDINATES must be a list or vector of coordinate lists or vectors |
- specifying the x, y, and z coordinates of points. |
- `solid:polyline' returns lines connecting successive pairs of |
- points. If called with one argument, then the polyline will be |
- white. If APPEARANCE is given, then the polyline will have its |
- emissive color only; being black if APPEARANCE does not have an |
- emissive color. |
- |
- The following code will return a red line between points at `(1 2 |
- 3)' and `(4 5 6)': |
+ -- Function: solid:polyline coordinates appearance
+ -- Function: solid:polyline coordinates
+ COORDINATES must be a list or vector of coordinate lists or vectors
+ specifying the x, y, and z coordinates of points.
+ `solid:polyline' returns lines connecting successive pairs of
+ points. If called with one argument, then the polyline will be
+ white. If APPEARANCE is given, then the polyline will have its
+ emissive color only; being black if APPEARANCE does not have an
+ emissive color.
+
+ The following code will return a red line between points at `(1 2
+ 3)' and `(4 5 6)':
(solid:polyline '((1 2 3) (4 5 6)) (solid:color #f 0 #f 0 '(1 0 0)))
- |
- -- Function: solid:basrelief width height depth colorray appearance |
- -- Function: solid:basrelief width height depth appearance |
- -- Function: solid:basrelief width height depth |
+
+ -- Function: solid:basrelief width height depth colorray appearance
+ -- Function: solid:basrelief width height depth appearance
+ -- Function: solid:basrelief width height depth
One of WIDTH, HEIGHT, or DEPTH must be a 2-dimensional array; the
others must be real numbers giving the length of the basrelief in
those dimensions. The rest of this description assumes that
@@ -7252,52 +7353,52 @@ Object Primitives
COLORRAY paints the corresponding face of HEIGHT. Other
dimensions for COLORRAY are in error.
- -- Function: solid:text fontstyle str len appearance |
- -- Function: solid:text fontstyle str len |
- FONTSTYLE must be a value returned by `solid:font'. |
- |
- STR must be a string or list of strings. |
- |
- LEN must be #f, a nonnegative integer, or list of nonnegative |
- integers. |
- |
- APPEARANCE, if given, determines the surface properties of the |
- returned object. |
- |
- `solid:text' returns a two-sided, flat text object positioned in |
- the Z=0 plane of the local coordinate system |
- |
+ -- Function: solid:text fontstyle str len appearance
+ -- Function: solid:text fontstyle str len
+ FONTSTYLE must be a value returned by `solid:font'.
+
+ STR must be a string or list of strings.
+
+ LEN must be #f, a nonnegative integer, or list of nonnegative
+ integers.
+
+ APPEARANCE, if given, determines the surface properties of the
+ returned object.
+
+ `solid:text' returns a two-sided, flat text object positioned in
+ the Z=0 plane of the local coordinate system
+
Surface Attributes
------------------
- -- Function: solid:color diffuseColor ambientIntensity specularColor |
+ -- Function: solid:color diffuseColor ambientIntensity specularColor
shininess emissiveColor transparency
- -- Function: solid:color diffuseColor ambientIntensity specularColor |
+ -- Function: solid:color diffuseColor ambientIntensity specularColor
shininess emissiveColor
- -- Function: solid:color diffuseColor ambientIntensity specularColor |
+ -- Function: solid:color diffuseColor ambientIntensity specularColor
shininess
- -- Function: solid:color diffuseColor ambientIntensity specularColor |
- -- Function: solid:color diffuseColor ambientIntensity |
- -- Function: solid:color diffuseColor |
- Returns an "appearance", the optical properties of the objects with |
- which it is associated. AMBIENTINTENSITY, SHININESS, and |
+ -- Function: solid:color diffuseColor ambientIntensity specularColor
+ -- Function: solid:color diffuseColor ambientIntensity
+ -- Function: solid:color diffuseColor
+ Returns an "appearance", the optical properties of the objects with
+ which it is associated. AMBIENTINTENSITY, SHININESS, and
TRANSPARENCY must be numbers between 0 and 1. DIFFUSECOLOR,
SPECULARCOLOR, and EMISSIVECOLOR are objects of type *Note color:
Color Data-Type, 24-bit sRGB integers or lists of 3 numbers
between 0.0 and 1.0. If a color argument is omitted or #f, then
the default color will be used.
- -- Function: solid:texture image color scale rotation center |
- translation |
- -- Function: solid:texture image color scale rotation center |
- -- Function: solid:texture image color scale rotation |
- -- Function: solid:texture image color scale |
- -- Function: solid:texture image color |
- -- Function: solid:texture image |
- Returns an "appearance", the optical properties of the objects with |
- which it is associated. IMAGE is a string naming a JPEG or PNG |
- image resource. COLOR is #f, a color, or the string returned by |
- `solid:color'. The rest of the optional arguments specify |
+ -- Function: solid:texture image color scale rotation center
+ translation
+ -- Function: solid:texture image color scale rotation center
+ -- Function: solid:texture image color scale rotation
+ -- Function: solid:texture image color scale
+ -- Function: solid:texture image color
+ -- Function: solid:texture image
+ Returns an "appearance", the optical properties of the objects with
+ which it is associated. IMAGE is a string naming a JPEG or PNG
+ image resource. COLOR is #f, a color, or the string returned by
+ `solid:color'. The rest of the optional arguments specify
2-dimensional transforms applying to the IMAGE.
SCALE must be #f, a number, or list or vector of 2 numbers
@@ -7308,75 +7409,75 @@ Surface Attributes
list or vector of 2 numbers specifying the translation to apply to
IMAGE.
- -- Function: solid:font family style justify size spacing language |
- direction |
- Returns a fontstyle object suitable for passing as an argument to |
- `solid:text'. Any of the arguments may be #f, in which case its |
- default value, which is first in each list of allowed values, is |
- used. |
- |
- FAMILY is a case-sensitive string naming a font; `SERIF', `SANS', |
- and `TYPEWRITER' are supported at the minimum. |
- |
- STYLE is a case-sensitive string `PLAIN', `BOLD', `ITALIC', or |
- `BOLDITALIC'. |
- |
- JUSTIFY is a case-sensitive string `FIRST', `BEGIN', `MIDDLE', or |
- `END'; or a list of one or two case-sensitive strings (same |
- choices). The mechanics of JUSTIFY get complicated; it is |
- explained by tables 6.2 to 6.7 of |
+ -- Function: solid:font family style justify size spacing language
+ direction
+ Returns a fontstyle object suitable for passing as an argument to
+ `solid:text'. Any of the arguments may be #f, in which case its
+ default value, which is first in each list of allowed values, is
+ used.
+
+ FAMILY is a case-sensitive string naming a font; `SERIF', `SANS',
+ and `TYPEWRITER' are supported at the minimum.
+
+ STYLE is a case-sensitive string `PLAIN', `BOLD', `ITALIC', or
+ `BOLDITALIC'.
+
+ JUSTIFY is a case-sensitive string `FIRST', `BEGIN', `MIDDLE', or
+ `END'; or a list of one or two case-sensitive strings (same
+ choices). The mechanics of JUSTIFY get complicated; it is
+ explained by tables 6.2 to 6.7 of
`http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1/part1/nodesRef.html#Table6.2'
- |
- SIZE is the extent, in the non-advancing direction, of the text. |
- SIZE defaults to 1. |
- |
- SPACING is the ratio of the line (or column) offset to SIZE. |
- SPACING defaults to 1. |
- |
- LANGUAGE is the RFC-1766 language name. |
- |
- DIRECTION is a list of two numbers: `(X Y)'. If |
- `(> (abs X) (abs Y))', then the text will be arrayed horizontally; |
- otherwise vertically. The direction in which characters are |
- arrayed is determined by the sign of the major axis: positive X |
- being left-to-right; positive Y being top-to-bottom. |
- |
+
+ SIZE is the extent, in the non-advancing direction, of the text.
+ SIZE defaults to 1.
+
+ SPACING is the ratio of the line (or column) offset to SIZE.
+ SPACING defaults to 1.
+
+ LANGUAGE is the RFC-1766 language name.
+
+ DIRECTION is a list of two numbers: `(X Y)'. If
+ `(> (abs X) (abs Y))', then the text will be arrayed horizontally;
+ otherwise vertically. The direction in which characters are
+ arrayed is determined by the sign of the major axis: positive X
+ being left-to-right; positive Y being top-to-bottom.
+
Aggregating Objects
-------------------
- -- Function: solid:center-row-of number solid spacing |
+ -- Function: solid:center-row-of number solid spacing
Returns a row of NUMBER SOLID objects spaced evenly SPACING apart.
- -- Function: solid:center-array-of number-a number-b solid spacing-a |
+ -- Function: solid:center-array-of number-a number-b solid spacing-a
spacing-b
Returns NUMBER-B rows, SPACING-B apart, of NUMBER-A SOLID objects
SPACING-A apart.
- -- Function: solid:center-pile-of number-a number-b number-c solid |
+ -- Function: solid:center-pile-of number-a number-b number-c solid
spacing-a spacing-b spacing-c
Returns NUMBER-C planes, SPACING-C apart, of NUMBER-B rows,
SPACING-B apart, of NUMBER-A SOLID objects SPACING-A apart.
- -- Function: solid:arrow center |
+ -- Function: solid:arrow center
CENTER must be a list or vector of three numbers. Returns an
upward pointing metallic arrow centered at CENTER.
- -- Function: solid:arrow |
+ -- Function: solid:arrow
Returns an upward pointing metallic arrow centered at the origin.
Spatial Transformations
-----------------------
- -- Function: solid:translation center solid ... |
+ -- Function: solid:translation center solid ...
CENTER must be a list or vector of three numbers.
`solid:translation' Returns an aggregate of SOLIDS, ... with their
origin moved to CENTER.
- -- Function: solid:scale scale solid ... |
+ -- Function: solid:scale scale solid ...
SCALE must be a number or a list or vector of three numbers.
`solid:scale' Returns an aggregate of SOLIDS, ... scaled per SCALE.
- -- Function: solid:rotation axis angle solid ... |
+ -- Function: solid:rotation axis angle solid ...
AXIS must be a list or vector of three numbers. `solid:rotation'
Returns an aggregate of SOLIDS, ... rotated ANGLE degrees around
the axis AXIS.
@@ -7384,10 +7485,10 @@ Spatial Transformations

File: slib.info, Node: Color, Next: Root Finding, Prev: Solid Modeling, Up: Mathematical Packages
-5.9 Color |
-========= |
+5.9 Color
+=========
-`http://swiss.csail.mit.edu/~jaffer/Color' |
+`http://swiss.csail.mit.edu/~jaffer/Color'
The goals of this package are to provide methods to specify, compute,
and transform colors in a core set of additive color spaces. The color
@@ -7407,15 +7508,15 @@ 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.9.1 Color Data-Type
+---------------------
`(require 'color)'
- -- Function: color? obj |
+ -- Function: color? obj
Returns #t if OBJ is a color.
- -- Function: color? obj typ |
+ -- Function: color? obj typ
Returns #t if OBJ is a color of color-space TYP. The symbol TYP
must be one of:
@@ -7433,37 +7534,37 @@ File: slib.info, Node: Color Data-Type, Next: Color Spaces, Prev: Color, Up:
* L*C*h
- -- Function: make-color space arg ... |
+ -- Function: make-color space arg ...
Returns a color of type SPACE.
- * For SPACE arguments `CIEXYZ', `RGB709', and `sRGB', the sole |
- ARG is a list of three numbers. |
- |
- * For SPACE arguments `L*a*b*', `L*u*v*', and `L*C*h', ARG is a |
- list of three numbers optionally followed by a whitepoint. |
- |
- * For `xRGB', ARG is an integer. |
- |
- * For `e-sRGB', the arguments are as for `e-sRGB->color'. |
- |
- -- Function: color-space color |
+ * For SPACE arguments `CIEXYZ', `RGB709', and `sRGB', the sole
+ ARG is a list of three numbers.
+
+ * For SPACE arguments `L*a*b*', `L*u*v*', and `L*C*h', ARG is a
+ list of three numbers optionally followed by a whitepoint.
+
+ * For `xRGB', ARG is an integer.
+
+ * For `e-sRGB', the arguments are as for `e-sRGB->color'.
+
+ -- Function: color-space color
Returns the symbol for the color-space in which COLOR is embedded.
- -- Function: color-precision color |
+ -- Function: color-precision color
For colors in digital color-spaces, `color-precision' returns the
number of bits used for each of the R, G, and B channels of the
encoding. Otherwise, `color-precision' returns #f
- -- Function: color-white-point color |
+ -- Function: color-white-point color
Returns the white-point of COLOR in all color-spaces except CIEXYZ.
- -- Function: convert-color color space white-point |
- -- Function: convert-color color space |
- -- Function: convert-color color e-sRGB precision |
+ -- Function: convert-color color space white-point
+ -- Function: convert-color color space
+ -- Function: convert-color color e-sRGB precision
Converts COLOR into SPACE at optional WHITE-POINT.
-5.9.1.1 External Representation |
-............................... |
+5.9.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.
@@ -7498,16 +7599,16 @@ sRGB #x<RRGGBB>
Where RRGGBB is a non-negative six-digit hexadecimal number.
- -- Function: color->string color |
+ -- Function: color->string color
Returns a string representation of COLOR.
- -- Function: string->color string |
+ -- Function: string->color string
Returns the color represented by STRING. If STRING is not a
syntactically valid notation for a color, then `string->color'
returns #f.
-5.9.1.2 White |
-............. |
+5.9.1.2 White
+.............
We experience color relative to the illumination around us. CIEXYZ
coordinates, although subject to uniform scaling, are objective. Thus
@@ -7519,11 +7620,11 @@ spaces a WHITE-POINT argument can be specified. The default if none is
specified is the white-point with which the color was created or last
converted; and D65 if none has been specified.
- -- Constant: D65 |
+ -- Constant: D65
Is the color of 6500.K (blackbody) illumination. D65 is close to
the average color of daylight.
- -- Constant: D50 |
+ -- Constant: D50
Is the color of 5000.K (blackbody) illumination. D50 is the color
of indoor lighting by incandescent bulbs, whose filaments have
temperatures around 5000.K.
@@ -7541,58 +7642,58 @@ 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.9.2 Color Spaces
+------------------
Measurement-based Color Spaces
..............................
The "tristimulus" color spaces are those whose component values are
proportional measurements of light intensity. The CIEXYZ(1931) system
-provides 3 sets of spectra to dot-product with a spectrum of interest. |
-The result of those dot-products is coordinates in CIEXYZ space. All |
+provides 3 sets of spectra to dot-product with a spectrum of interest.
+The result of those dot-products is coordinates in CIEXYZ space. All
tristimuls color spaces are related to CIEXYZ by linear transforms,
namely matrix multiplication. Of the color spaces listed here, CIEXYZ
and RGB709 are tristimulus spaces.
- -- Color Space: CIEXYZ |
+ -- Color Space: CIEXYZ
The CIEXYZ color space covers the full "gamut". It is the basis
for color-space conversions.
- CIEXYZ is a list of three inexact numbers between 0.0 and 1.1. |
- '(0. 0. 0.) is black; '(1. 1. 1.) is white. |
+ CIEXYZ is a list of three inexact numbers between 0.0 and 1.1.
+ '(0. 0. 0.) is black; '(1. 1. 1.) is white.
- -- Function: ciexyz->color xyz |
+ -- Function: ciexyz->color xyz
XYZ must be a list of 3 numbers. If XYZ is valid CIEXYZ
coordinates, then `ciexyz->color' returns the color specified by
XYZ; otherwise returns #f.
- -- Function: color:ciexyz x y z |
+ -- Function: color:ciexyz x y z
Returns the CIEXYZ color composed of X, Y, Z. If the coordinates
do not encode a valid CIEXYZ color, then an error is signaled.
- -- Function: color->ciexyz color |
+ -- Function: color->ciexyz color
Returns the list of 3 numbers encoding COLOR in CIEXYZ.
- -- Color Space: RGB709 |
+ -- Color Space: RGB709
BT.709-4 (03/00) `Parameter values for the HDTV standards for
production and international programme exchange' specifies
parameter values for chromaticity, sampling, signal format, frame
rates, etc., of high definition television signals.
An RGB709 color is represented by a list of three inexact numbers
- between 0.0 and 1.0. '(0. 0. 0.) is black '(1. 1. 1.) is white. |
+ between 0.0 and 1.0. '(0. 0. 0.) is black '(1. 1. 1.) is white.
- -- Function: rgb709->color rgb |
+ -- Function: rgb709->color rgb
RGB must be a list of 3 numbers. If RGB is valid RGB709
coordinates, then `rgb709->color' returns the color specified by
RGB; otherwise returns #f.
- -- Function: color:rgb709 r g b |
+ -- Function: color:rgb709 r g b
Returns the RGB709 color composed of R, G, B. If the coordinates
do not encode a valid RGB709 color, then an error is signaled.
- -- Function: color->rgb709 color |
+ -- Function: color->rgb709 color
Returns the list of 3 numbers encoding COLOR in RGB709.
Perceptual Uniformity
@@ -7605,7 +7706,7 @@ range of distances (6:1) in the L*a*b* and L*u*v* spaces than in
tristimulus spaces (80:1). For this reason, color distances are
computed in L*a*b* (or L*C*h).
- -- Color Space: L*a*b* |
+ -- Color Space: L*a*b*
Is a CIE color space which better matches the human visual system's
perception of color. It is a list of three numbers:
@@ -7615,48 +7716,48 @@ computed in L*a*b* (or L*C*h).
* -200 <= b* <= 200
- -- Function: l*a*b*->color L*a*b* white-point |
+ -- Function: l*a*b*->color L*a*b* white-point
L*A*B* must be a list of 3 numbers. If L*A*B* is valid L*a*b*
coordinates, then `l*a*b*->color' returns the color specified by
L*A*B*; otherwise returns #f.
- -- Function: color:l*a*b* L* a* b* white-point |
+ -- Function: color:l*a*b* L* a* b* white-point
Returns the L*a*b* color composed of L*, A*, B* with WHITE-POINT.
- -- Function: color:l*a*b* L* a* b* |
+ -- Function: color:l*a*b* L* a* b*
Returns the L*a*b* color composed of L*, A*, B*. If the
coordinates do not encode a valid L*a*b* color, then an error is
signaled.
- -- Function: color->l*a*b* color white-point |
+ -- Function: color->l*a*b* color white-point
Returns the list of 3 numbers encoding COLOR in L*a*b* with
WHITE-POINT.
- -- Function: color->l*a*b* color |
+ -- Function: color->l*a*b* color
Returns the list of 3 numbers encoding COLOR in L*a*b*.
- -- Color Space: L*u*v* |
+ -- Color Space: L*u*v*
Is another CIE encoding designed to better match the human visual
system's perception of color.
- -- Function: l*u*v*->color L*u*v* white-point |
+ -- Function: l*u*v*->color L*u*v* white-point
L*U*V* must be a list of 3 numbers. If L*U*V* is valid L*u*v*
coordinates, then `l*u*v*->color' returns the color specified by
L*U*V*; otherwise returns #f.
- -- Function: color:l*u*v* L* u* v* white-point |
+ -- Function: color:l*u*v* L* u* v* white-point
Returns the L*u*v* color composed of L*, U*, V* with WHITE-POINT.
- -- Function: color:l*u*v* L* u* v* |
+ -- Function: color:l*u*v* L* u* v*
Returns the L*u*v* color composed of L*, U*, V*. If the
coordinates do not encode a valid L*u*v* color, then an error is
signaled.
- -- Function: color->l*u*v* color white-point |
+ -- Function: color->l*u*v* color white-point
Returns the list of 3 numbers encoding COLOR in L*u*v* with
WHITE-POINT.
- -- Function: color->l*u*v* color |
+ -- Function: color->l*u*v* color
Returns the list of 3 numbers encoding COLOR in L*u*v*.
Cylindrical Coordinates
@@ -7672,7 +7773,7 @@ specification of color must be device-dependent. But take heart! A
cylindrical system can be based on L*a*b* and is used for predicting how
close colors seem to observers.
- -- Color Space: L*C*h |
+ -- Color Space: L*C*h
Expresses the *a and b* of L*a*b* in polar coordinates. It is a
list of three numbers:
@@ -7691,23 +7792,23 @@ close colors seem to observers.
270 blue, purple, magenta 360
- -- Function: l*c*h->color L*C*h white-point |
+ -- Function: l*c*h->color L*C*h white-point
L*C*H must be a list of 3 numbers. If L*C*H is valid L*C*h
coordinates, then `l*c*h->color' returns the color specified by
L*C*H; otherwise returns #f.
- -- Function: color:l*c*h L* C* h white-point |
+ -- Function: color:l*c*h L* C* h white-point
Returns the L*C*h color composed of L*, C*, H with WHITE-POINT.
- -- Function: color:l*c*h L* C* h |
+ -- Function: color:l*c*h L* C* h
Returns the L*C*h color composed of L*, C*, H. If the coordinates
do not encode a valid L*C*h color, then an error is signaled.
- -- Function: color->l*c*h color white-point |
+ -- Function: color->l*c*h color white-point
Returns the list of 3 numbers encoding COLOR in L*C*h with
WHITE-POINT.
- -- Function: color->l*c*h color |
+ -- Function: color->l*c*h color
Returns the list of 3 numbers encoding COLOR in L*C*h.
Digital Color Spaces
@@ -7716,7 +7817,7 @@ Digital Color Spaces
The color spaces discussed so far are impractical for image data because
of numerical precision and computational requirements. In 1998 the IEC
adopted `A Standard Default Color Space for the Internet - sRGB'
-(`http://www.w3.org/Graphics/Color/sRGB'). sRGB was cleverly designed |
+(`http://www.w3.org/Graphics/Color/sRGB'). sRGB was cleverly designed
to employ the 24-bit (256x256x256) color encoding already in widespread
use; and the 2.2 gamma intrinsic to CRT monitors.
@@ -7726,36 +7827,36 @@ then each coordinate is individually subjected to the same non-linear
mapping. Inverse operations in the reverse order create the inverse
transform.
- -- Color Space: sRGB |
+ -- Color Space: sRGB
Is "A Standard Default Color Space for the Internet". Most display
monitors will work fairly well with sRGB directly. Systems using
ICC profiles (1) should work very well with sRGB.
- -- Function: srgb->color rgb |
+ -- Function: srgb->color rgb
RGB must be a list of 3 numbers. If RGB is valid sRGB coordinates,
then `srgb->color' returns the color specified by RGB; otherwise
returns #f.
- -- Function: color:srgb r g b |
+ -- Function: color:srgb r g b
Returns the sRGB color composed of R, G, B. If the coordinates do
not encode a valid sRGB color, then an error is signaled.
- -- Color Space: xRGB |
+ -- Color Space: xRGB
Represents the equivalent sRGB color with a single 24-bit integer.
The most significant 8 bits encode red, the middle 8 bits blue,
and the least significant 8 bits green.
- -- Function: color->srgb color |
+ -- Function: color->srgb color
Returns the list of 3 integers encoding COLOR in sRGB.
- -- Function: color->xrgb color |
+ -- Function: color->xrgb color
Returns the 24-bit integer encoding COLOR in sRGB.
- -- Function: xrgb->color k |
+ -- Function: xrgb->color k
Returns the sRGB color composed of the 24-bit integer K.
- -- Color Space: e-sRGB |
+ -- Color Space: e-sRGB
Is "Photography - Electronic still picture imaging - Extended sRGB
color encoding" (PIMA 7667:2001). It extends the gamut of sRGB;
and its higher precision numbers provide a larger dynamic range.
@@ -7772,32 +7873,32 @@ transform.
e-sRGB16
0 to 65535
- -- Function: e-srgb->color precision rgb |
+ -- Function: e-srgb->color precision rgb
PRECISION must be the integer 10, 12, or 16. RGB must be a list
of 3 numbers. If RGB is valid e-sRGB coordinates, then
`e-srgb->color' returns the color specified by RGB; otherwise
returns #f.
- -- Function: color:e-srgb 10 r g b |
+ -- Function: color:e-srgb 10 r g b
Returns the e-sRGB10 color composed of integers R, G, B.
- -- Function: color:e-srgb 12 r g b |
+ -- Function: color:e-srgb 12 r g b
Returns the e-sRGB12 color composed of integers R, G, B.
- -- Function: color:e-srgb 16 r g b |
+ -- Function: color:e-srgb 16 r g b
Returns the e-sRGB16 color composed of integers R, G, B. If the
coordinates do not encode a valid e-sRGB color, then an error is
signaled.
- -- Function: color->e-srgb precision color |
+ -- Function: color->e-srgb precision color
PRECISION must be the integer 10, 12, or 16. `color->e-srgb'
returns the list of 3 integers encoding COLOR in sRGB10, sRGB12,
or sRGB16.
---------- Footnotes ----------
- (1) A comprehensive encoding of transforms between CIEXYZ and device |
-color spaces is the International Color Consortium profile format, |
+ (1) A comprehensive encoding of transforms between CIEXYZ and device
+color spaces is the International Color Consortium profile format,
ICC.1:1998-09:
The intent of this format is to provide a cross-platform device
@@ -7808,8 +7909,8 @@ ICC.1:1998-09:

File: slib.info, Node: Spectra, Next: Color Difference Metrics, Prev: Color Spaces, Up: Color
-5.9.3 Spectra |
-------------- |
+5.9.3 Spectra
+-------------
The following functions compute colors from spectra, scale color
luminance, and extract chromaticity. XYZ is used in the names of
@@ -7831,15 +7932,15 @@ CIEXYZ values are calculated as dot-product with the X, Y (Luminance),
and Z "Spectral Tristimulus Values". The files `cie1931.xyz' and
`cie1964.xyz' in the distribution contain these CIE-defined values.
- -- Feature: cie1964 |
+ -- Feature: cie1964
Loads the Spectral Tristimulus Values defining `CIE 1964
Supplementary Standard Colorimetric Observer'.
- -- Feature: cie1931 |
+ -- Feature: cie1931
Loads the Spectral Tristimulus Values defining `CIE 1931
Supplementary Standard Colorimetric Observer'.
- -- Feature: ciexyz |
+ -- Feature: ciexyz
Requires Spectral Tristimulus Values, defaulting to cie1931.
`(require 'cie1964)' or `(require 'cie1931)' will `load-ciexyz'
@@ -7847,55 +7948,55 @@ specific values used by the following spectrum conversion procedures.
The spectrum conversion procedures `(require 'ciexyz)' to assure that a
set is loaded.
- -- Function: read-cie-illuminant path |
- PATH must be a string naming a file consisting of 107 numbers for |
- 5.nm intervals from 300.nm to 830.nm. `read-cie-illuminant' reads |
- (using Scheme `read') these numbers and returns a length 107 |
- vector filled with them. |
- |
- (define CIE:SI-D65 |
- (read-CIE-illuminant (in-vicinity (library-vicinity) "ciesid65.dat"))) |
- (spectrum->XYZ CIE:SI-D65 300e-9 830e-9) |
- => (25.108569422374994 26.418013465625001 28.764075683374993) |
- |
- -- Function: read-normalized-illuminant path |
- PATH must be a string naming a file consisting of 107 numbers for |
- 5.nm intervals from 300.nm to 830.nm. |
- `read-normalized-illuminant' reads (using Scheme `read') these |
- numbers and returns a length 107 vector filled with them, |
- normalized so that `spectrum->XYZ' of the illuminant returns its |
- whitepoint. |
- |
- CIE Standard Illuminants A and D65 are included with SLIB: |
- |
- (define CIE:SI-A |
+ -- Function: read-cie-illuminant path
+ PATH must be a string naming a file consisting of 107 numbers for
+ 5.nm intervals from 300.nm to 830.nm. `read-cie-illuminant' reads
+ (using Scheme `read') these numbers and returns a length 107
+ vector filled with them.
+
+ (define CIE:SI-D65
+ (read-CIE-illuminant (in-vicinity (library-vicinity) "ciesid65.dat")))
+ (spectrum->XYZ CIE:SI-D65 300e-9 830e-9)
+ => (25.108569422374994 26.418013465625001 28.764075683374993)
+
+ -- Function: read-normalized-illuminant path
+ PATH must be a string naming a file consisting of 107 numbers for
+ 5.nm intervals from 300.nm to 830.nm.
+ `read-normalized-illuminant' reads (using Scheme `read') these
+ numbers and returns a length 107 vector filled with them,
+ normalized so that `spectrum->XYZ' of the illuminant returns its
+ whitepoint.
+
+ CIE Standard Illuminants A and D65 are included with SLIB:
+
+ (define CIE:SI-A
(read-normalized-illuminant (in-vicinity (library-vicinity) "ciesia.dat")))
- (define CIE:SI-D65 |
+ (define CIE:SI-D65
(read-normalized-illuminant (in-vicinity (library-vicinity) "ciesid65.dat")))
- (spectrum->XYZ CIE:SI-A 300e-9 830e-9) |
- => (1.098499460820401 999.9999999999998e-3 355.8173930654951e-3) |
- (CIEXYZ->sRGB (spectrum->XYZ CIE:SI-A 300e-9 830e-9)) |
- => (255 234 133) |
- (spectrum->XYZ CIE:SI-D65 300e-9 830e-9) |
- => (950.4336673552745e-3 1.0000000000000002 1.0888053986649182) |
- (CIEXYZ->sRGB (spectrum->XYZ CIE:SI-D65 300e-9 830e-9)) |
- => (255 255 255) |
- |
- -- Function: illuminant-map proc siv |
- SIV must be a one-dimensional array or vector of 107 numbers. |
- `illuminant-map' returns a vector of length 107 containing the |
- result of applying PROC to each element of SIV. |
- |
- -- Function: illuminant-map->XYZ proc siv |
- `(spectrum->XYZ (illuminant-map PROC SIV) 300e-9 830e-9)' |
- |
- -- Function: spectrum->XYZ proc |
+ (spectrum->XYZ CIE:SI-A 300e-9 830e-9)
+ => (1.098499460820401 999.9999999999998e-3 355.8173930654951e-3)
+ (CIEXYZ->sRGB (spectrum->XYZ CIE:SI-A 300e-9 830e-9))
+ => (255 234 133)
+ (spectrum->XYZ CIE:SI-D65 300e-9 830e-9)
+ => (950.4336673552745e-3 1.0000000000000002 1.0888053986649182)
+ (CIEXYZ->sRGB (spectrum->XYZ CIE:SI-D65 300e-9 830e-9))
+ => (255 255 255)
+
+ -- Function: illuminant-map proc siv
+ SIV must be a one-dimensional array or vector of 107 numbers.
+ `illuminant-map' returns a vector of length 107 containing the
+ result of applying PROC to each element of SIV.
+
+ -- Function: illuminant-map->XYZ proc siv
+ `(spectrum->XYZ (illuminant-map PROC SIV) 300e-9 830e-9)'
+
+ -- Function: spectrum->XYZ proc
PROC must be a function of one argument. `spectrum->XYZ' computes
the CIEXYZ(1931) values for the spectrum returned by PROC when
called with arguments from 380e-9 to 780e-9, the wavelength in
meters.
- -- Function: spectrum->XYZ spectrum x1 x2 |
+ -- Function: spectrum->XYZ spectrum x1 x2
X1 and X2 must be positive real numbers specifying the wavelengths
(in meters) corresponding to the zeroth and last elements of
vector or list SPECTRUM. `spectrum->XYZ' returns the CIEXYZ(1931)
@@ -7915,22 +8016,22 @@ set is loaded.
(map (lambda (x) (/ x y_n)) xyz)
=> (0.2933441826889158 0.2988931825387761 0.25783646831201573)
- -- Function: spectrum->chromaticity proc |
- -- Function: spectrum->chromaticity spectrum x1 x2 |
+ -- Function: spectrum->chromaticity proc
+ -- Function: spectrum->chromaticity spectrum x1 x2
Computes the chromaticity for the given spectrum.
- -- Function: wavelength->XYZ w |
+ -- Function: wavelength->XYZ w
W must be a number between 380e-9 to 780e-9. `wavelength->XYZ'
returns (unnormalized) XYZ values for a monochromatic light source
- with wavelength W. |
+ with wavelength W.
- -- Function: wavelength->chromaticity w |
- W must be a number between 380e-9 to 780e-9. |
- `wavelength->chromaticity' returns the chromaticity for a |
- monochromatic light source with wavelength W. |
- |
- -- Function: blackbody-spectrum temp |
- -- Function: blackbody-spectrum temp span |
+ -- Function: wavelength->chromaticity w
+ W must be a number between 380e-9 to 780e-9.
+ `wavelength->chromaticity' returns the chromaticity for a
+ monochromatic light source with wavelength W.
+
+ -- Function: blackbody-spectrum temp
+ -- Function: blackbody-spectrum temp span
Returns a procedure of one argument (wavelength in meters), which
returns the radiance of a black body at TEMP.
@@ -7939,10 +8040,10 @@ set is loaded.
procedure correspond to the power of the photons with wavelengths
W to W+1e-9.
- -- Function: temperature->XYZ x |
+ -- Function: temperature->XYZ x
The positive number X is a temperature in degrees kelvin.
- `temperature->XYZ' computes the unnormalized CIEXYZ(1931) values |
- for the spectrum of a black body at temperature X. |
+ `temperature->XYZ' computes the unnormalized CIEXYZ(1931) values
+ for the spectrum of a black body at temperature X.
Compute the chromaticities of 6500.K and 5000.K blackbody
radiation:
@@ -7954,29 +8055,29 @@ set is loaded.
(XYZ->chromaticity (temperature->XYZ 5000))
=> (0.34508082841161052 0.3516084965163377)
- -- Function: temperature->chromaticity x |
+ -- Function: temperature->chromaticity x
The positive number X is a temperature in degrees kelvin.
- `temperature->cromaticity' computes the chromaticity for the |
- spectrum of a black body at temperature X. |
+ `temperature->cromaticity' computes the chromaticity for the
+ spectrum of a black body at temperature X.
- Compute the chromaticities of 6500.K and 5000.K blackbody |
- radiation: |
+ Compute the chromaticities of 6500.K and 5000.K blackbody
+ radiation:
- (require 'color-space) |
- (temperature->chromaticity 6500) |
- => (0.3135191660557008 0.3236456786200268) |
+ (require 'color-space)
+ (temperature->chromaticity 6500)
+ => (0.3135191660557008 0.3236456786200268)
- (temperature->chromaticity 5000) |
- => (0.34508082841161052 0.3516084965163377) |
+ (temperature->chromaticity 5000)
+ => (0.34508082841161052 0.3516084965163377)
- -- Function: XYZ->chromaticity xyz |
+ -- Function: XYZ->chromaticity xyz
Returns a two element list: the x and y components of XYZ
normalized to 1 (= X + Y + Z).
- -- Function: chromaticity->CIEXYZ x y |
+ -- Function: chromaticity->CIEXYZ x y
Returns the list of X, and Y, 1 - Y - X.
- -- Function: chromaticity->whitepoint x y |
+ -- Function: chromaticity->whitepoint x y
Returns the CIEXYZ(1931) values having luminosity 1 and
chromaticity X and Y.
@@ -7988,18 +8089,18 @@ obvious range. With no given whitepoint, the only reasonable course is
to ascertain the luminance range of a dataset and normalize the values
to lie from 0 to 1.
- -- Function: XYZ->xyY xyz |
+ -- Function: XYZ->xyY xyz
Returns a three element list: the X and Y components of XYZ
normalized to 1, and CIE luminance Y.
- -- Function: xyY->XYZ xyY |
+ -- Function: xyY->XYZ xyY
- -- Function: xyY:normalize-colors colors |
+ -- Function: xyY:normalize-colors colors
COLORS is a list of xyY triples. `xyY:normalize-colors' scales
each chromaticity so it sums to 1 or less; and divides the Y
values by the maximum Y in the dataset, so all lie between 0 and 1.
- -- Function: xyY:normalize-colors colors n |
+ -- Function: xyY:normalize-colors colors n
If N is positive real, then `xyY:normalize-colors' divides the Y
values by N times the maximum Y in the dataset.
@@ -8022,8 +8123,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.9.4 Color Difference Metrics
+------------------------------
`(require 'color-space)'
@@ -8035,18 +8136,18 @@ lab2, lch1, or lch2.
The wrapped functions operate on objects of type color, color1 and
color2 in the function entries.
- -- Function: L*a*b*:DE* lab1 lab2 |
+ -- Function: L*a*b*:DE* lab1 lab2
Returns the Euclidean distance between LAB1 and LAB2.
- -- Function: CIE:DE* color1 color2 white-point |
- -- Function: CIE:DE* color1 color2 |
+ -- Function: CIE:DE* color1 color2 white-point
+ -- Function: CIE:DE* color1 color2
Returns the Euclidean distance in L*a*b* space between COLOR1 and
COLOR2.
- -- Function: L*C*h:DE*94 lch1 lch2 parametric-factors |
- -- Function: L*C*h:DE*94 lch1 lch2 |
- -- Function: CIE:DE*94 color1 color2 parametric-factors |
- -- Function: CIE:DE*94 color1 color2 |
+ -- Function: L*C*h:DE*94 lch1 lch2 parametric-factors
+ -- Function: L*C*h:DE*94 lch1 lch2
+ -- Function: CIE:DE*94 color1 color2 parametric-factors
+ -- Function: CIE:DE*94 color1 color2
Measures distance in the L*C*h cylindrical color-space. The three
axes are individually scaled (depending on C*) in their
contributions to the total distance.
@@ -8079,12 +8180,12 @@ Great Britain created a more sophisticated color-distance function for
use in judging the consistency of dye lots. With CMC:DE* it is possible
to use a single value pass/fail tolerance for all shades.
- -- Function: CMC-DE lch1 lch2 parametric-factors |
- -- Function: CMC-DE lch1 lch2 l c |
- -- Function: CMC-DE lch1 lch2 l |
- -- Function: CMC-DE lch1 lch2 |
- -- Function: CMC:DE* color1 color2 l c |
- -- Function: CMC:DE* color1 color2 |
+ -- Function: CMC-DE lch1 lch2 parametric-factors
+ -- Function: CMC-DE lch1 lch2 l c
+ -- Function: CMC-DE lch1 lch2 l
+ -- Function: CMC-DE lch1 lch2
+ -- Function: CMC:DE* color1 color2 l c
+ -- Function: CMC:DE* color1 color2
`CMC:DE' is a L*C*h metric. The PARAMETRIC-FACTORS argument is a
list of 2 numbers L and C. L and C parameterize this metric. 1
and 1 are recommended for perceptibility; the default, 2 and 1,
@@ -8093,8 +8194,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.9.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
@@ -8102,54 +8203,54 @@ checking.
`(require 'color-space)'
- -- Constant: CIEXYZ:D65 |
+ -- Constant: CIEXYZ:D65
Is the color of 6500.K (blackbody) illumination. D65 is close to
the average color of daylight.
- -- Constant: CIEXYZ:D50 |
+ -- Constant: CIEXYZ:D50
Is the color of 5000.K (blackbody) illumination. D50 is the color
of indoor lighting by incandescent bulbs.
- -- Constant: CIEXYZ:A |
- -- Constant: CIEXYZ:B |
- -- Constant: CIEXYZ:C |
- -- Constant: CIEXYZ:E |
+ -- Constant: CIEXYZ:A
+ -- Constant: CIEXYZ:B
+ -- Constant: CIEXYZ:C
+ -- Constant: CIEXYZ:E
CIE 1931 illuminants normalized to 1 = y.
- -- Function: color:linear-transform matrix row |
+ -- Function: color:linear-transform matrix row
- -- Function: CIEXYZ->RGB709 xyz |
- -- Function: RGB709->CIEXYZ srgb |
+ -- Function: CIEXYZ->RGB709 xyz
+ -- Function: RGB709->CIEXYZ srgb
- -- Function: CIEXYZ->L*u*v* xyz white-point |
- -- Function: CIEXYZ->L*u*v* xyz |
- -- Function: L*u*v*->CIEXYZ L*u*v* white-point |
- -- Function: L*u*v*->CIEXYZ L*u*v* |
+ -- Function: CIEXYZ->L*u*v* xyz white-point
+ -- Function: CIEXYZ->L*u*v* xyz
+ -- Function: L*u*v*->CIEXYZ L*u*v* white-point
+ -- Function: L*u*v*->CIEXYZ L*u*v*
The WHITE-POINT defaults to CIEXYZ:D65.
- -- Function: CIEXYZ->L*a*b* xyz white-point |
- -- Function: CIEXYZ->L*a*b* xyz |
- -- Function: L*a*b*->CIEXYZ L*a*b* white-point |
- -- Function: L*a*b*->CIEXYZ L*a*b* |
+ -- Function: CIEXYZ->L*a*b* xyz white-point
+ -- Function: CIEXYZ->L*a*b* xyz
+ -- Function: L*a*b*->CIEXYZ L*a*b* white-point
+ -- Function: L*a*b*->CIEXYZ L*a*b*
The XYZ WHITE-POINT defaults to CIEXYZ:D65.
- -- Function: L*a*b*->L*C*h L*a*b* |
- -- Function: L*C*h->L*a*b* L*C*h |
+ -- Function: L*a*b*->L*C*h L*a*b*
+ -- Function: L*C*h->L*a*b* L*C*h
- -- Function: CIEXYZ->sRGB xyz |
- -- Function: sRGB->CIEXYZ srgb |
+ -- Function: CIEXYZ->sRGB xyz
+ -- Function: sRGB->CIEXYZ srgb
- -- Function: CIEXYZ->xRGB xyz |
- -- Function: xRGB->CIEXYZ srgb |
+ -- Function: CIEXYZ->xRGB xyz
+ -- Function: xRGB->CIEXYZ srgb
- -- Function: sRGB->xRGB xyz |
- -- Function: xRGB->sRGB srgb |
+ -- Function: sRGB->xRGB xyz
+ -- Function: xRGB->sRGB srgb
- -- Function: CIEXYZ->e-sRGB n xyz |
- -- Function: e-sRGB->CIEXYZ n srgb |
+ -- Function: CIEXYZ->e-sRGB n xyz
+ -- Function: e-sRGB->CIEXYZ n srgb
- -- Function: sRGB->e-sRGB n srgb |
- -- Function: e-sRGB->sRGB n srgb |
+ -- Function: sRGB->e-sRGB n srgb
+ -- Function: e-sRGB->sRGB n srgb
The integer N must be 10, 12, or 16. Because sRGB and e-sRGB use
the same RGB709 chromaticities, conversion between them is simpler
than conversion through CIEXYZ.
@@ -8157,15 +8258,15 @@ checking.
Do not convert e-sRGB precision through `e-sRGB->sRGB' then
`sRGB->e-sRGB' - values would be truncated to 8-bits!
- -- Function: e-sRGB->e-sRGB n1 srgb n2 |
+ -- Function: e-sRGB->e-sRGB n1 srgb n2
The integers N1 and N2 must be 10, 12, or 16. `e-sRGB->e-sRGB'
converts SRGB to e-sRGB of precision N2.

File: slib.info, Node: Color Names, Next: Daylight, Prev: Color Conversions, Up: Color
-5.9.6 Color Names |
------------------ |
+5.9.6 Color Names
+-----------------
`(require 'color-names)'
@@ -8173,7 +8274,7 @@ Rather than ballast the color dictionaries with numbered grays,
`file->color-dictionary' discards them. They are provided through the
`grey' procedure:
- -- Function: grey k |
+ -- Function: grey k
Returns `(inexact->exact (round (* k 2.55)))', the X11 color
grey<k>.
@@ -8183,37 +8284,37 @@ to color-strings (*note External Representation: Color Data-Type.).
The column names in a color dictionary are unimportant; the first field
is the key, and the second is the color-string.
- -- Function: color-name:canonicalize name |
+ -- Function: color-name:canonicalize name
Returns a downcased copy of the string or symbol NAME with `_',
`-', and whitespace removed.
- -- Function: color-name->color name table1 table2 ... |
+ -- Function: color-name->color name table1 table2 ...
TABLE1, TABLE2, ... must be color-dictionary tables.
`color-name->color' searches for the canonical form of NAME in
TABLE1, TABLE2, ... in order; returning the color-string of the
first matching record; #f otherwise.
- -- Function: color-dictionaries->lookup table1 table2 ... |
+ -- Function: color-dictionaries->lookup table1 table2 ...
TABLE1, TABLE2, ... must be color-dictionary tables.
`color-dictionaries->lookup' returns a procedure which searches
for the canonical form of its string argument in TABLE1, TABLE2,
...; returning the color-string of the first matching record; and
#f otherwise.
- -- Function: color-dictionary name rdb base-table-type |
+ -- Function: color-dictionary name rdb base-table-type
RDB must be a string naming a relational database file; and the
symbol NAME a table therein. The database will be opened as
BASE-TABLE-TYPE. `color-dictionary' returns the read-only table
NAME in database NAME if it exists; #f otherwise.
- -- Function: color-dictionary name rdb |
+ -- Function: color-dictionary name rdb
RDB must be an open relational database or a string naming a
relational database file; and the symbol NAME a table therein.
`color-dictionary' returns the read-only table NAME in database
NAME if it exists; #f otherwise.
- -- Function: load-color-dictionary name rdb base-table-type |
- -- Function: load-color-dictionary name rdb |
+ -- Function: load-color-dictionary name rdb base-table-type
+ -- Function: load-color-dictionary name rdb
RDB must be a string naming a relational database file; and the
symbol NAME a table therein. If the symbol BASE-TABLE-TYPE is
provided, the database will be opened as BASE-TABLE-TYPE.
@@ -8228,8 +8329,8 @@ Dictionary Creation
`(require 'color-database)'
- -- Function: file->color-dictionary file table-name rdb base-table-type |
- -- Function: file->color-dictionary file table-name rdb |
+ -- Function: file->color-dictionary file table-name rdb base-table-type
+ -- Function: file->color-dictionary file table-name rdb
RDB must be an open relational database or a string naming a
relational database file, TABLE-NAME a symbol, and the string FILE
must name an existing file with colornames and their corresponding
@@ -8237,8 +8338,8 @@ Dictionary Creation
table TABLE-NAME in RDB and enters the associations found in FILE
into it.
- -- Function: url->color-dictionary url table-name rdb base-table-type |
- -- Function: url->color-dictionary url table-name rdb |
+ -- Function: url->color-dictionary url table-name rdb base-table-type
+ -- Function: url->color-dictionary url table-name rdb
RDB must be an open relational database or a string naming a
relational database file and TABLE-NAME a symbol.
`url->color-dictionary' retrieves the resource named by the string
@@ -8248,28 +8349,28 @@ Dictionary Creation
This section has detailed the procedures for creating and loading color
dictionaries. So where are the dictionaries to load?
- `http://swiss.csail.mit.edu/~jaffer/Color/Dictionaries.html' |
+ `http://swiss.csail.mit.edu/~jaffer/Color/Dictionaries.html'
Describes and evaluates several color-name dictionaries on the web.
The following procedure creates a database containing two of these
dictionaries.
- -- Function: make-slib-color-name-db |
+ -- Function: make-slib-color-name-db
Creates an alist-table relational database in library-vicinity
containing the "Resene" and "saturate" color-name dictionaries.
- If the files `resenecolours.txt', `nbs-iscc.txt', and |
- `saturate.txt' exist in the library-vicinity, then they used as |
- the source of color-name data. Otherwise, |
- `make-slib-color-name-db' calls url->color-dictionary with the |
- URLs of appropriate source files. |
+ If the files `resenecolours.txt', `nbs-iscc.txt', and
+ `saturate.txt' exist in the library-vicinity, then they used as
+ the source of color-name data. Otherwise,
+ `make-slib-color-name-db' calls url->color-dictionary with the
+ URLs of appropriate source files.
The Short List
..............
`(require 'saturate)'
- -- Function: saturate name |
+ -- Function: saturate name
Looks for NAME among the 19 saturated colors from `Approximate
Colors on CIE Chromaticity Diagram':
@@ -8279,7 +8380,7 @@ The Short List
purplish blue bluish purple purple reddish purple
red purple purplish red red
- (`http://swiss.csail.mit.edu/~jaffer/Color/saturate.pdf'). If |
+ (`http://swiss.csail.mit.edu/~jaffer/Color/saturate.pdf'). If
NAME is found, the corresponding color is returned. Otherwise #f
is returned. Use saturate only for light source colors.
@@ -8289,9 +8390,9 @@ RGB Values List' available.
`(require 'resene)'
- -- Function: resene name |
+ -- Function: resene name
Looks for NAME among the 1300 entries in the Resene color-name
- dictionary (`http://swiss.csail.mit.edu/~jaffer/Color/resene.pdf'). |
+ dictionary (`http://swiss.csail.mit.edu/~jaffer/Color/resene.pdf').
If NAME is found, the corresponding color is returned. Otherwise
#f is returned. The `Resene RGB Values List' is an excellent
source for surface colors.
@@ -8330,8 +8431,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.9.7 Daylight
+--------------
`(require 'daylight)'
@@ -8340,16 +8441,16 @@ This package calculates the colors of sky as detailed in:
`A Practical Analytic Model for Daylight'
A. J. Preetham, Peter Shirley, Brian Smits
- -- Function: solar-hour julian-day hour |
+ -- Function: solar-hour julian-day hour
Returns the solar-time in hours given the integer JULIAN-DAY in
the range 1 to 366, and the local time in hours.
To be meticulous, subtract 4 minutes for each degree of longitude
west of the standard meridian of your time zone.
- -- Function: solar-declination julian-day |
+ -- Function: solar-declination julian-day
- -- Function: solar-polar declination latitude solar-hour |
+ -- Function: solar-polar declination latitude solar-hour
Returns a list of THETA_S, the solar angle from the zenith, and
PHI_S, the solar azimuth. 0 <= THETA_S measured in degrees.
PHI_S is measured in degrees from due south; west of south being
@@ -8387,20 +8488,20 @@ turbidity values less than 1.3.
1 2 4 8 16 32 64
Meterorological range (km) versus Turbidity
- -- Function: sunlight-spectrum turbidity theta_s |
+ -- Function: sunlight-spectrum turbidity theta_s
Returns a vector of 41 values, the spectrum of sunlight from
380.nm to 790.nm for a given TURBIDITY and THETA_S.
- -- Function: sunlight-chromaticity turbidity theta_s |
- Given TURBIDITY and THETA_S, `sunlight-chromaticity' returns the |
- CIEXYZ triple for color of sunlight scaled to be just inside the |
- RGB709 gamut. |
+ -- Function: sunlight-chromaticity turbidity theta_s
+ Given TURBIDITY and THETA_S, `sunlight-chromaticity' returns the
+ CIEXYZ triple for color of sunlight scaled to be just inside the
+ RGB709 gamut.
- -- Function: zenith-xyy turbidity theta_s |
+ -- Function: zenith-xyy turbidity theta_s
Returns the xyY (chromaticity and luminance) at the zenith. The
Luminance has units kcd/m^2.
- -- Function: overcast-sky-color-xyy turbidity theta_s |
+ -- Function: overcast-sky-color-xyy turbidity theta_s
TURBIDITY is a positive real number expressing the amount of light
scattering. The real number THETA_S is the solar angle from the
zenith in degrees.
@@ -8410,8 +8511,8 @@ turbidity values less than 1.3.
and returning the xyY value for light coming from that elevation
of the sky.
- -- Function: clear-sky-color-xyy turbidity theta_s phi_s |
- -- Function: sky-color-xyy turbidity theta_s phi_s |
+ -- Function: clear-sky-color-xyy turbidity theta_s phi_s
+ -- Function: sky-color-xyy turbidity theta_s phi_s
TURBIDITY is a positive real number expressing the amount of light
scattering. The real number THETA_S is the solar angle from the
zenith in degrees. The real number PHI_S is the solar angle from
@@ -8428,19 +8529,23 @@ turbidity values less than 1.3.

File: slib.info, Node: Root Finding, Next: Minimizing, Prev: Color, Up: Mathematical Packages
-5.10 Root Finding |
-================= |
+5.10 Root Finding
+=================
`(require 'root)'
- -- Function: newton:find-integer-root f df/dx x0 |
+ -- 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
DF/DX(X0) is non-zero, returns an integer X for which F(X) is
closer to zero than either of the integers adjacent to X; or
returns `#f' if such an integer can't be found.
- To find the closest integer to a given integer's square root: |
+ To find the closest integer to a given integer's square root:
(define (integer-sqrt y)
(newton:find-integer-root
@@ -8449,12 +8554,8 @@ File: slib.info, Node: Root Finding, Next: Minimizing, Prev: Color, Up: Math
(ash 1 (quotient (integer-length y) 2))))
(integer-sqrt 15) => 4
-
- -- Function: integer-sqrt y |
- Given a non-negative integer Y, returns the rounded square-root of
- Y.
-
- -- Function: newton:find-root f df/dx x0 prec |
+ |
+ -- 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
positive real number PREC, returns a real X for which `abs'(F(X))
@@ -8471,7 +8572,7 @@ Polynomials', IEEE Transactions on Circuits and Systems, Vol. 36, No.
value of 1000+j0 should have Z_k of 1.0475 + j4.1036 and line k=2
for starting value of 0+j1000 should have Z_k of 1.0988 + j4.0833.
- -- Function: laguerre:find-root f df/dz ddf/dz^2 z0 prec |
+ -- Function: laguerre:find-root f df/dz ddf/dz^2 z0 prec
Given complex valued procedure F of one (complex) argument, its
derivative (with respect to its argument) DF/DX, its second
derivative DDF/DZ^2, initial complex value Z0, and positive real
@@ -8482,7 +8583,7 @@ Polynomials', IEEE Transactions on Circuits and Systems, Vol. 36, No.
If PREC is instead a negative integer, `laguerre:find-root'
returns the result of -PREC iterations.
- -- Function: laguerre:find-polynomial-root deg f df/dz ddf/dz^2 z0 prec |
+ -- Function: laguerre:find-polynomial-root deg f df/dz ddf/dz^2 z0 prec
Given polynomial procedure F of integer degree DEG of one
argument, its derivative (with respect to its argument) DF/DX, its
second derivative DDF/DZ^2, initial complex value Z0, and positive
@@ -8494,8 +8595,8 @@ Polynomials', IEEE Transactions on Circuits and Systems, Vol. 36, No.
`laguerre:find-polynomial-root' returns the result of -PREC
iterations.
- -- Function: secant:find-root f x0 x1 prec |
- -- Function: secant:find-bracketed-root f x0 x1 prec |
+ -- Function: secant:find-root f x0 x1 prec
+ -- Function: secant:find-bracketed-root f x0 x1 prec
Given a real valued procedure F and two real valued starting
points X0 and X1, returns a real X for which `(abs (f x))' is less
than PREC; or returns `#f' if such a real can't be found.
@@ -8521,10 +8622,10 @@ Polynomials', IEEE Transactions on Circuits and Systems, Vol. 36, No.
non-false if the iteration should be stopped.

-File: slib.info, Node: Minimizing, Next: Commutative Rings, Prev: Root Finding, Up: Mathematical Packages
-
-5.11 Minimizing |
-=============== |
+File: slib.info, Node: Minimizing, Next: The Limit, Prev: Root Finding, Up: Mathematical Packages
+ |
+5.11 Minimizing
+===============
`(require 'minimize)'
@@ -8537,7 +8638,7 @@ If the derivative is available, Newton-Raphson is probably a better
choice. If the function is inexpensive to compute, consider
approximating the derivative.
- -- Function: golden-section-search f x0 x1 prec |
+ -- Function: golden-section-search f x0 x1 prec
X_0 are X_1 real numbers. The (single argument) procedure F is
unimodal over the open interval (X_0, X_1). That is, there is
exactly one point in the interval for which the derivative of F is
@@ -8568,10 +8669,110 @@ approximating the derivative.
and Software' Prentice-Hall, 1989, ISBN 0-13-627258-4

-File: slib.info, Node: Commutative Rings, Next: Matrix Algebra, Prev: Minimizing, Up: Mathematical Packages
-
-5.12 Commutative Rings |
-====================== |
+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 |
+ (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: |
+ (tan (atan +inf.0)) ==> 16.331778728383844e15
+ (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 |
+ |
+
+File: slib.info, Node: Commutative Rings, Next: Matrix Algebra, Prev: The Limit, Up: Mathematical Packages
+ |
+5.13 Commutative Rings |
+======================
Scheme provides a consistent and capable set of numeric functions.
Inexacts implement a field; integers a commutative ring (and Euclidean
@@ -8636,28 +8837,28 @@ expressions are handled similarly.
`remainder', `lcm', and `gcd'; but these work only for the more
restrictive Euclidean (Unique Factorization) Domain.
-5.13 Rules and Rulesets |
-======================= |
+5.14 Rules and Rulesets |
+=======================
The "commutative-ring" package allows control of ring properties
through the use of "rulesets".
- -- Variable: *ruleset* |
+ -- Variable: *ruleset*
Contains the set of rules currently in effect. Rules defined by
`cring:define-rule' are stored within the value of *ruleset* at the
time `cring:define-rule' is called. If *RULESET* is `#f', then no
rules apply.
- -- Function: make-ruleset rule1 ... |
- -- Function: make-ruleset name rule1 ... |
+ -- Function: make-ruleset rule1 ...
+ -- Function: make-ruleset name rule1 ...
Returns a new ruleset containing the rules formed by applying
`cring:define-rule' to each 4-element list argument RULE. If the
first argument to `make-ruleset' is a symbol, then the database
table created for the new ruleset will be named NAME. Calling
`make-ruleset' with no rule arguments creates an empty ruleset.
- -- Function: combined-rulesets ruleset1 ... |
- -- Function: combined-rulesets name ruleset1 ... |
+ -- Function: combined-rulesets ruleset1 ...
+ -- Function: combined-rulesets name ruleset1 ...
Returns a new ruleset containing the rules contained in each
ruleset argument RULESET. If the first argument to
`combined-ruleset' is a symbol, then the database table created for
@@ -8666,11 +8867,11 @@ through the use of "rulesets".
Two rulesets are defined by this package.
- -- Constant: distribute* |
+ -- Constant: distribute*
Contains the ruleset to distribute multiplication over addition and
subtraction.
- -- Constant: distribute/ |
+ -- Constant: distribute/
Contains the ruleset to distribute division over addition and
subtraction.
@@ -8682,14 +8883,14 @@ elements simplify by specifying the rules for `+' or `*' for cases
where expressions involving objects reduce to numbers or to expressions
involving different non-numeric elements.
- -- Function: cring:define-rule op sub-op1 sub-op2 reduction |
+ -- Function: cring:define-rule op sub-op1 sub-op2 reduction
Defines a rule for the case when the operation represented by
symbol OP is applied to lists whose `car's are SUB-OP1 and
SUB-OP2, respectively. The argument REDUCTION is a procedure
accepting 2 arguments which will be lists whose `car's are SUB-OP1
and SUB-OP2.
- -- Function: cring:define-rule op sub-op1 'identity reduction |
+ -- Function: cring:define-rule op sub-op1 'identity reduction
Defines a rule for the case when the operation represented by
symbol OP is applied to a list whose `car' is SUB-OP1, and some
other argument. REDUCTION will be called with the list whose
@@ -8710,8 +8911,8 @@ involving different non-numeric elements.
(lambda (exp1 exp2)
(apply + (map (lambda (trm) (* trm exp2)) (cdr exp1))))))
-5.14 How to Create a Commutative Ring |
-===================================== |
+5.15 How to Create a Commutative Ring |
+=====================================
The first step in creating your commutative ring is to write procedures
to create elements of the ring. A non-numeric element of the ring must
@@ -8849,21 +9050,21 @@ objects.

File: slib.info, Node: Matrix Algebra, Prev: Commutative Rings, Up: Mathematical Packages
-5.15 Matrix Algebra |
-=================== |
+5.16 Matrix Algebra |
+===================
`(require 'determinant)'
-A Matrix can be either a list of lists (rows) or an array. Unlike |
-linear-algebra texts, this package uses 0-based coordinates. |
+A Matrix can be either a list of lists (rows) or an array. Unlike
+linear-algebra texts, this package uses 0-based coordinates.
- -- Function: matrix->lists matrix |
+ -- Function: matrix->lists matrix
Returns the list-of-lists form of MATRIX.
- -- Function: matrix->array matrix |
+ -- Function: matrix->array matrix
Returns the (ones-based) array form of MATRIX.
- -- Function: determinant matrix |
+ -- Function: determinant matrix
MATRIX must be a square matrix. `determinant' returns the
determinant of MATRIX.
@@ -8871,14 +9072,14 @@ linear-algebra texts, this package uses 0-based coordinates. |
(determinant '((1 2) (3 4))) => -2
(determinant '((1 2 3) (4 5 6) (7 8 9))) => 0
- -- Function: transpose matrix |
+ -- Function: transpose matrix
Returns a copy of MATRIX flipped over the diagonal containing the
1,1 element.
- -- Function: matrix:product m1 m2 |
+ -- Function: matrix:product m1 m2
Returns the product of matrices M1 and M2.
- -- Function: matrix:inverse matrix |
+ -- Function: matrix:inverse matrix
MATRIX must be a square matrix. If MATRIX is singlar, then
`matrix:inverse' returns #f; otherwise `matrix:inverse' returns the
`matrix:product' inverse of MATRIX.
@@ -8886,8 +9087,8 @@ linear-algebra texts, this package uses 0-based coordinates. |

File: slib.info, Node: Database Packages, Next: Other Packages, Prev: Mathematical Packages, Up: Top
-6 Database Packages |
-******************* |
+6 Database Packages
+*******************
* Menu:
@@ -8898,8 +9099,8 @@ File: slib.info, Node: Database Packages, Next: Other Packages, Prev: Mathema

File: slib.info, Node: Relational Database, Next: Relational Infrastructure, Prev: Database Packages, Up: Database Packages
-6.1 Relational Database |
-======================= |
+6.1 Relational Database
+=======================
`(require 'relational-database)'
@@ -8909,7 +9110,7 @@ Banks'). An SLIB relational database implementation can be created
from any *Note Base Table:: implementation.
Why relational database? For motivations and design issues see
-`http://swiss.csail.mit.edu/~jaffer/DBManifesto.html'. |
+`http://swiss.csail.mit.edu/~jaffer/DBManifesto.html'.
* Menu:
@@ -8923,8 +9124,8 @@ from any *Note Base Table:: implementation.

File: slib.info, Node: Using Databases, Next: Table Operations, Prev: Relational Database, Up: Relational Database
-6.1.1 Using Databases |
---------------------- |
+6.1.1 Using Databases
+---------------------
`(require 'databases)'
@@ -8962,7 +9163,7 @@ Database Operations::. Except for `create-database', each procedure
will accept either a filename or database procedure for its first
argument.
- -- Function: create-database filename base-table-type |
+ -- Function: create-database filename base-table-type
FILENAME should be a string naming a file; or `#f'.
BASE-TABLE-TYPE must be a symbol naming a feature which can be
passed to `require'. `create-database' returns a new, open
@@ -8987,33 +9188,33 @@ Therefore, either pass two arguments to `open-database', or require the
base-table of your database file uses before calling `open-database'
with one argument.
- -- Procedure: open-database! rdb base-table-type |
+ -- Procedure: open-database! rdb base-table-type
Returns _mutable_ open relational database or #f.
- -- Function: open-database rdb base-table-type |
+ -- Function: open-database rdb base-table-type
Returns an open relational database associated with RDB. The
database will be opened with base-table type BASE-TABLE-TYPE).
- -- Function: open-database rdb |
+ -- Function: open-database rdb
Returns an open relational database associated with RDB.
`open-database' will attempt to deduce the correct base-table-type.
- -- Function: write-database rdb filename |
+ -- Function: write-database rdb filename
Writes the mutable relational-database RDB to FILENAME.
- -- Function: sync-database rdb |
+ -- Function: sync-database rdb
Writes the mutable relational-database RDB to the filename it was
opened with.
- -- Function: solidify-database rdb |
+ -- Function: solidify-database rdb
Syncs RDB and makes it immutable.
- -- Function: close-database rdb |
+ -- Function: close-database rdb
RDB will only be closed when the count of `open-database' -
`close-database' calls for RDB (and its filename) is 0.
`close-database' returns #t if successful; and #f otherwise.
- -- Function: mdbm:report |
+ -- Function: mdbm:report
Prints a table of open database files. The columns are the
base-table type, number of opens, `!' for mutable, the filename,
and the lock certificate (if locked).
@@ -9026,14 +9227,14 @@ with one argument.
Opening Tables
..............
- -- Function: open-table rdb table-name |
+ -- Function: open-table rdb table-name
RDB must be a relational database and TABLE-NAME a symbol.
`open-table' returns a "methods" procedure for an existing
relational table in RDB if it exists and can be opened for
reading, otherwise returns `#f'.
- -- Procedure: open-table! rdb table-name |
+ -- Procedure: open-table! rdb table-name
RDB must be a relational database and TABLE-NAME a symbol.
`open-table!' returns a "methods" procedure for an existing
@@ -9043,17 +9244,17 @@ Opening Tables
Defining Tables
...............
- -- Function: define-domains rdb row5 ... |
+ -- Function: define-domains rdb row5 ...
Adds the domain rows ROW5 ... to the `*domains-data*' table in
RDB. The format of the row is given in *Note Catalog
Representation::.
(define-domains rdb '(permittivity #f complex? c64 #f))
- -- Function: add-domain rdb row5 |
+ -- Function: add-domain rdb row5
Use `define-domains' instead.
- -- Function: define-tables rdb spec-0 ... |
+ -- Function: define-tables rdb spec-0 ...
Adds tables as specified in SPEC-0 ... to the open
relational-database RDB. Each SPEC has the form:
@@ -9086,7 +9287,7 @@ Defining Tables
Listing Tables
..............
- -- Function: list-table-definition rdb table-name |
+ -- Function: list-table-definition rdb table-name
If symbol TABLE-NAME exists in the open relational-database RDB,
then returns a list of the table-name, its primary key names and
domains, its other key names and domains, and the table's records
@@ -9098,8 +9299,8 @@ Listing Tables

File: slib.info, Node: Table Operations, Next: Database Interpolation, Prev: Using Databases, Up: Relational Database
-6.1.2 Table Operations |
----------------------- |
+6.1.2 Table Operations
+----------------------
These are the descriptions of the methods available from an open
relational table. A method is retrieved from a table by calling the
@@ -9112,7 +9313,7 @@ keys arguments are denoted KEY1 KEY2 .... It is an error to call an
operation for a table which takes primary key arguments with the wrong
number of primary keys for that table.
- -- Operation on relational-table: get column-name |
+ -- Operation on relational-table: get column-name
Returns a procedure of arguments KEY1 KEY2 ... which returns the
value for the COLUMN-NAME column of the row associated with
primary keys KEY1, KEY2 ... if that row exists in the table, or
@@ -9133,15 +9334,15 @@ number of primary keys for that table.

File: slib.info, Node: Single Row Operations, Next: Match-Keys, Prev: Table Operations, Up: Table Operations
-6.1.2.1 Single Row Operations |
-............................. |
+6.1.2.1 Single Row Operations
+.............................
The term "row" used below refers to a Scheme list of values (one for
each column) in the order specified in the descriptor (table) for this
table. Missing values appear as `#f'. Primary keys must not be
missing.
- -- Operation on relational-table: row:insert |
+ -- Operation on relational-table: row:insert
Adds the row ROW to this table. If a row for the primary key(s)
specified by ROW already exists in this table an error is
signaled. The value returned is unspecified.
@@ -9160,13 +9361,13 @@ missing.
(string->list d))))
string))
- -- Operation on relational-table: row:update |
+ -- Operation on relational-table: row:update
Returns a procedure of one argument, ROW, which adds the row, ROW,
to this table. If a row for the primary key(s) specified by ROW
already exists in this table, it will be overwritten. The value
returned is unspecified.
- -- Operation on relational-table: row:retrieve |
+ -- Operation on relational-table: row:retrieve
Returns a procedure of arguments KEY1 KEY2 ... which returns the
row associated with primary keys KEY1, KEY2 ... if it exists, or
`#f' otherwise.
@@ -9174,12 +9375,12 @@ missing.
((plat 'row:retrieve) 'linux) => (linux i386 linux gcc)
((plat 'row:retrieve) 'multics) => #f
- -- Operation on relational-table: row:remove |
+ -- Operation on relational-table: row:remove
Returns a procedure of arguments KEY1 KEY2 ... which removes and
returns the row associated with primary keys KEY1, KEY2 ... if it
exists, or `#f' otherwise.
- -- Operation on relational-table: row:delete |
+ -- Operation on relational-table: row:delete
Returns a procedure of arguments KEY1 KEY2 ... which deletes the
row associated with primary keys KEY1, KEY2 ... if it exists. The
value returned is unspecified.
@@ -9187,8 +9388,8 @@ missing.

File: slib.info, Node: Match-Keys, Next: Multi-Row Operations, Prev: Single Row Operations, Up: Table Operations
-6.1.2.2 Match-Keys |
-.................. |
+6.1.2.2 Match-Keys
+..................
The (optional) MATCH-KEY1 ... arguments are used to restrict actions of
a whole-table operation to a subset of that table. Those procedures
@@ -9212,7 +9413,7 @@ argument. The arguments and their actions are:
other values
Any other value matches only those keys `equal?' to it.
- -- Operation on relational-table: get* column-name |
+ -- Operation on relational-table: get* column-name
Returns a procedure of optional arguments MATCH-KEY1 ... which
returns a list of the values for the specified column for all rows
in this table. The optional MATCH-KEY1 ... arguments restrict
@@ -9239,10 +9440,10 @@ argument. The arguments and their actions are:

File: slib.info, Node: Multi-Row Operations, Next: Indexed Sequential Access Methods, Prev: Match-Keys, Up: Table Operations
-6.1.2.3 Multi-Row Operations |
-............................ |
+6.1.2.3 Multi-Row Operations
+............................
- -- Operation on relational-table: row:retrieve* |
+ -- Operation on relational-table: row:retrieve*
Returns a procedure of optional arguments MATCH-KEY1 ... which
returns a list of all rows in this table. The optional MATCH-KEY1
... arguments restrict actions to a subset of the table. For
@@ -9256,19 +9457,19 @@ File: slib.info, Node: Multi-Row Operations, Next: Indexed Sequential Access M
(amiga-dice-c m68000 amiga dice-c)
(aix powerpc aix -))
- -- Operation on relational-table: row:remove* |
+ -- Operation on relational-table: row:remove*
Returns a procedure of optional arguments MATCH-KEY1 ... which
removes and returns a list of all rows in this table. The optional
MATCH-KEY1 ... arguments restrict actions to a subset of the table.
- -- Operation on relational-table: row:delete* |
+ -- Operation on relational-table: row:delete*
Returns a procedure of optional arguments MATCH-KEY1 ... which
Deletes all rows from this table. The optional MATCH-KEY1 ...
arguments restrict deletions to a subset of the table. The value
returned is unspecified. The descriptor table and catalog entry
for this table are not affected.
- -- Operation on relational-table: for-each-row |
+ -- Operation on relational-table: for-each-row
Returns a procedure of arguments PROC MATCH-KEY1 ... which calls
PROC with each ROW in this table. The optional MATCH-KEY1 ...
arguments restrict actions to a subset of the table. For details
@@ -9276,13 +9477,13 @@ File: slib.info, Node: Multi-Row Operations, Next: Indexed Sequential Access M
Note that `row:insert*' and `row:update*' do _not_ use match-keys.
- -- Operation on relational-table: row:insert* |
+ -- Operation on relational-table: row:insert*
Returns a procedure of one argument, ROWS, which adds each row in
the list of rows, ROWS, to this table. If a row for the primary
key specified by an element of ROWS already exists in this table,
an error is signaled. The value returned is unspecified.
- -- Operation on relational-table: row:update* |
+ -- Operation on relational-table: row:update*
Returns a procedure of one argument, ROWS, which adds each row in
the list of rows, ROWS, to this table. If a row for the primary
key specified by an element of ROWS already exists in this table,
@@ -9291,8 +9492,8 @@ Note that `row:insert*' and `row:update*' do _not_ use match-keys.

File: slib.info, Node: Indexed Sequential Access Methods, Next: Sequential Index Operations, Prev: Multi-Row Operations, Up: Table Operations
-6.1.2.4 Indexed Sequential Access Methods |
-......................................... |
+6.1.2.4 Indexed Sequential Access Methods
+.........................................
"Indexed Sequential Access Methods" are a way of arranging database
information so that records can be accessed both by key and by key
@@ -9315,38 +9516,38 @@ order. For example:

File: slib.info, Node: Sequential Index Operations, Next: Table Administration, Prev: Indexed Sequential Access Methods, Up: Table Operations
-6.1.2.5 Sequential Index Operations |
-................................... |
+6.1.2.5 Sequential Index Operations
+...................................
The following procedures are individually optional depending on the
base-table implememtation. If an operation is _not_ supported, then
calling the table with that operation symbol will return false.
- -- Operation on relational-table: for-each-row-in-order |
+ -- Operation on relational-table: for-each-row-in-order
Returns a procedure of arguments PROC MATCH-KEY1 ... which calls
PROC with each ROW in this table in the (implementation-dependent)
natural, repeatable ordering for rows. The optional MATCH-KEY1
... arguments restrict actions to a subset of the table. For
details see *Note Match-Keys::.
- -- Operation on relational-table: isam-next |
+ -- Operation on relational-table: isam-next
Returns a procedure of arguments KEY1 KEY2 ... which returns the
key-list identifying the lowest record higher than KEY1 KEY2 ...
which is stored in the relational-table; or false if no higher
record is present.
- -- Operation on relational-table: isam-next column-name |
+ -- Operation on relational-table: isam-next column-name
The symbol COLUMN-NAME names a key field. In the list returned by
`isam-next', that field, or a field to its left, will be changed.
This allows one to skip over less significant key fields.
- -- Operation on relational-table: isam-prev |
+ -- Operation on relational-table: isam-prev
Returns a procedure of arguments KEY1 KEY2 ... which returns the
key-list identifying the highest record less than KEY1 KEY2 ...
which is stored in the relational-table; or false if no lower
record is present.
- -- Operation on relational-table: isam-prev column-name |
+ -- Operation on relational-table: isam-prev column-name
The symbol COLUMN-NAME names a key field. In the list returned by
`isam-next', that field, or a field to its left, will be changed.
This allows one to skip over less significant key fields.
@@ -9372,30 +9573,30 @@ calling the table with that operation symbol will return false.

File: slib.info, Node: Table Administration, Prev: Sequential Index Operations, Up: Table Operations
-6.1.2.6 Table Administration |
-............................ |
+6.1.2.6 Table Administration
+............................
- -- Operation on relational-table: column-names |
- -- Operation on relational-table: column-foreigns |
- -- Operation on relational-table: column-domains |
- -- Operation on relational-table: column-types |
+ -- Operation on relational-table: column-names
+ -- Operation on relational-table: column-foreigns
+ -- Operation on relational-table: column-domains
+ -- Operation on relational-table: column-types
Return a list of the column names, foreign-key table names, domain
names, or type names respectively for this table. These 4 methods
are different from the others in that the list is returned, rather
than a procedure to obtain the list.
- -- Operation on relational-table: primary-limit |
+ -- Operation on relational-table: primary-limit
Returns the number of primary keys fields in the relations in this
table.
- -- Operation on relational-table: close-table |
+ -- Operation on relational-table: close-table
Subsequent operations to this table will signal an error.

File: slib.info, Node: Database Interpolation, Next: Embedded Commands, Prev: Table Operations, Up: Relational Database
-6.1.3 Database Interpolation |
----------------------------- |
+6.1.3 Database Interpolation
+----------------------------
`(require 'database-interpolate)'
@@ -9403,7 +9604,7 @@ Indexed sequential access methods allow finding the keys (having
associations) closest to a given value. This facilitates the
interpolation of associations between those in the table.
- -- Function: interpolate-from-table table column |
+ -- Function: interpolate-from-table table column
TABLE should be a relational table with one numeric primary key
field which supports the `isam-prev' and `isam-next' operations.
COLUMN should be a symbol or exact positive integer designating a
@@ -9419,8 +9620,8 @@ interpolation of associations between those in the table.

File: slib.info, Node: Embedded Commands, Next: Database Macros, Prev: Database Interpolation, Up: Relational Database
-6.1.4 Embedded Commands |
------------------------ |
+6.1.4 Embedded Commands
+-----------------------
`(require 'database-commands)'
@@ -9463,19 +9664,19 @@ code in the `*commands*' table.

File: slib.info, Node: Database Extension, Next: Command Intrinsics, Prev: Embedded Commands, Up: Embedded Commands
-6.1.4.1 Database Extension |
-.......................... |
+6.1.4.1 Database Extension
+..........................
- -- Function: wrap-command-interface rdb |
+ -- Function: wrap-command-interface rdb
Returns relational database RDB wrapped with additional commands
defined in its *commands* table.
- -- Function: add-command-tables rdb |
+ -- Function: add-command-tables rdb
The relational database RDB must be mutable. ADD-COMMAND-TABLES
adds a *command* table to RDB; then returns
`(wrap-command-interface RDB)'.
- -- Function: define-*commands* rdb spec-0 ... |
+ -- Function: define-*commands* rdb spec-0 ...
Adds commands to the `*commands*' table as specified in SPEC-0 ...
to the open relational-database RDB. Each SPEC has the form:
@@ -9493,8 +9694,8 @@ File: slib.info, Node: Database Extension, Next: Command Intrinsics, Prev: Em
(lambda (<name> <rdb>) <expression1> <expression2> ...)
- -- Function: open-command-database filename |
- -- Function: open-command-database filename base-table-type |
+ -- Function: open-command-database filename
+ -- Function: open-command-database filename base-table-type
Returns an open enhanced relational database associated with
FILENAME. The database will be opened with base-table type
BASE-TABLE-TYPE) if supplied. If BASE-TABLE-TYPE is not supplied,
@@ -9502,28 +9703,28 @@ File: slib.info, Node: Database Extension, Next: Command Intrinsics, Prev: Em
base-table-type. If the database can not be opened or if it lacks
the `*commands*' table, `#f' is returned.
- -- Function: open-command-database! filename |
- -- Function: open-command-database! filename base-table-type |
+ -- Function: open-command-database! filename
+ -- Function: open-command-database! filename base-table-type
Returns _mutable_ open enhanced relational database ...
- -- Function: open-command-database database |
+ -- Function: open-command-database database
Returns DATABASE if it is an immutable relational database; #f
otherwise.
- -- Function: open-command-database! database |
+ -- Function: open-command-database! database
Returns DATABASE if it is a mutable relational database; #f
otherwise.

File: slib.info, Node: Command Intrinsics, Next: Define-tables Example, Prev: Database Extension, Up: Embedded Commands
-6.1.4.2 Command Intrinsics |
-.......................... |
+6.1.4.2 Command Intrinsics
+..........................
Some commands are defined in all extended relational-databases. The are
called just like *Note Database Operations::.
- -- Operation on relational-database: add-domain domain-row |
+ -- Operation on relational-database: add-domain domain-row
Adds DOMAIN-ROW to the "domains" table if there is no row in the
domains table associated with key `(car DOMAIN-ROW)' and returns
`#t'. Otherwise returns `#f'.
@@ -9552,18 +9753,18 @@ called just like *Note Database Operations::.
(filename #f #f string #f)
(build-whats #f #f symbol #f)))
- -- Operation on relational-database: delete-domain domain-name |
+ -- Operation on relational-database: delete-domain domain-name
Removes and returns the DOMAIN-NAME row from the "domains" table.
- -- Operation on relational-database: domain-checker domain |
+ -- Operation on relational-database: domain-checker domain
Returns a procedure to check an argument for conformance to domain
DOMAIN.

File: slib.info, Node: Define-tables Example, Next: The *commands* Table, Prev: Command Intrinsics, Up: Embedded Commands
-6.1.4.3 Define-tables Example |
-............................. |
+6.1.4.3 Define-tables Example
+.............................
The following example shows a new database with the name of `foo.db'
being created with tables describing processor families and
@@ -9606,8 +9807,8 @@ saved and changed to immutable.

File: slib.info, Node: The *commands* Table, Next: Command Service, Prev: Define-tables Example, Up: Embedded Commands
-6.1.4.4 The *commands* Table |
-............................ |
+6.1.4.4 The *commands* Table
+............................
The table `*commands*' in an "enhanced" relational-database has the
fields (with domains):
@@ -9668,10 +9869,10 @@ shared state with the domain-integrity-rule.

File: slib.info, Node: Command Service, Next: Command Example, Prev: The *commands* Table, Up: Embedded Commands
-6.1.4.5 Command Service |
-....................... |
+6.1.4.5 Command Service
+.......................
- -- Function: make-command-server rdb table-name |
+ -- Function: make-command-server rdb table-name
Returns a procedure of 2 arguments, a (symbol) command and a
call-back procedure. When this returned procedure is called, it
looks up COMMAND in table TABLE-NAME and calls the call-back
@@ -9721,8 +9922,8 @@ For information about parameters, *Note Parameter lists::.

File: slib.info, Node: Command Example, Prev: Command Service, Up: Embedded Commands
-6.1.4.6 Command Example |
-....................... |
+6.1.4.6 Command Example
+.......................
Here is an example of setting up a command with arguments and parsing
those arguments from a `getopt' style argument list (*note Getopt::).
@@ -9833,8 +10034,8 @@ those arguments from a `getopt' style argument list (*note Getopt::).

File: slib.info, Node: Database Macros, Next: Database Browser, Prev: Embedded Commands, Up: Relational Database
-6.1.5 Database Macros |
---------------------- |
+6.1.5 Database Macros
+---------------------
`(require 'within-database)'
@@ -9855,36 +10056,36 @@ emacs:
* Menu:
-* Within-database:: |
+* Within-database::
* Within-database Example::

File: slib.info, Node: Within-database, Next: Within-database Example, Prev: Database Macros, Up: Database Macros
- |
-6.1.5.1 Within-database |
-....................... |
- |
- -- Function: within-database database statement-1 ... |
+
+6.1.5.1 Within-database
+.......................
+
+ -- Function: within-database database statement-1 ...
`within-database' creates a lexical scope in which the commands
`define-table' and `define-command' create tables and
`*commands*'-table entries respectively in open relational
- database DATABASE. The expressions in `within-database' form are |
- executed in order. |
+ database DATABASE. The expressions in `within-database' form are
+ executed in order.
`within-database' Returns DATABASE.
- -- Syntax: define-command (<name> <rdb>) "comment" <expression1> |
+ -- Syntax: define-command (<name> <rdb>) "comment" <expression1>
<expression2> ...
- -- Syntax: define-command (<name> <rdb>) <expression1> <expression2> |
- ... |
+ -- Syntax: define-command (<name> <rdb>) <expression1> <expression2>
+ ...
Adds to the `*commands*' table a command <name>:
(lambda (<name> <rdb>) <expression1> <expression2> ...)
- -- Syntax: define-table <name> <descriptor-name> <descriptor-name> |
+ -- Syntax: define-table <name> <descriptor-name> <descriptor-name>
<rows>
- -- Syntax: define-table <name> <primary-key-fields> <other-fields> |
+ -- Syntax: define-table <name> <primary-key-fields> <other-fields>
<rows>
where <name> is the table name, <descriptor-name> is the symbol
name of a descriptor table, <primary-key-fields> and
@@ -9909,38 +10110,38 @@ File: slib.info, Node: Within-database, Next: Within-database Example, Prev:
field table, a foreign-key domain will be created for it.
- -- Function: add-macro-support database |
- The relational database DATABASE must be mutable. |
- `add-macro-support' adds a `*macros*' table and `define-macro' |
- macro to DATABASE; then DATABASE is returned. |
- |
- -- Syntax: define-macro (<name> arg1 ...) "comment" <expression1> |
- <expression2> ... |
- -- Syntax: define-macro (<name> arg1 ...) <expression1> <expression2> |
- ... |
- Adds a macro <name> to the `*macros*'. |
- |
- _Note:_ `within-database' creates lexical scope where not only |
- `define-command' and `define-table', but every command and macro |
- are defined, ie.: |
- |
- (within-database my-rdb |
- (define-command (message rdb) |
- (lambda (msg) |
- (display "message: ") |
- (display msg) |
- (newline))) |
- (message "Defining FOO...") |
- ;; ... defining FOO ... |
- (message "Defining BAR...") |
- ;; ... defining BAR ... |
- ) |
- |
+ -- Function: add-macro-support database
+ The relational database DATABASE must be mutable.
+ `add-macro-support' adds a `*macros*' table and `define-macro'
+ macro to DATABASE; then DATABASE is returned.
+
+ -- Syntax: define-macro (<name> arg1 ...) "comment" <expression1>
+ <expression2> ...
+ -- Syntax: define-macro (<name> arg1 ...) <expression1> <expression2>
+ ...
+ Adds a macro <name> to the `*macros*'.
+
+ _Note:_ `within-database' creates lexical scope where not only
+ `define-command' and `define-table', but every command and macro
+ are defined, ie.:
+
+ (within-database my-rdb
+ (define-command (message rdb)
+ (lambda (msg)
+ (display "message: ")
+ (display msg)
+ (newline)))
+ (message "Defining FOO...")
+ ;; ... defining FOO ...
+ (message "Defining BAR...")
+ ;; ... defining BAR ...
+ )
+

File: slib.info, Node: Within-database Example, Prev: Within-database, Up: Database Macros
- |
-6.1.5.2 Within-database Example |
-............................... |
+
+6.1.5.2 Within-database Example
+...............................
Here is an example of `within-database' macros:
@@ -10001,31 +10202,31 @@ Here is an example of `within-database' macros:

File: slib.info, Node: Database Browser, Prev: Database Macros, Up: Relational Database
-6.1.6 Database Browser |
----------------------- |
+6.1.6 Database Browser
+----------------------
(require 'database-browse)
- -- Procedure: browse database |
+ -- Procedure: browse database
Prints the names of all the tables in DATABASE and sets browse's
default to DATABASE.
- -- Procedure: browse |
+ -- Procedure: browse
Prints the names of all the tables in the default database.
- -- Procedure: browse table-name |
+ -- Procedure: browse table-name
For each record of the table named by the symbol TABLE-NAME,
prints a line composed of all the field values.
- -- Procedure: browse pathname |
+ -- Procedure: browse pathname
Opens the database named by the string PATHNAME, prints the names
of all its tables, and sets browse's default to the database.
- -- Procedure: browse database table-name |
+ -- Procedure: browse database table-name
Sets browse's default to DATABASE and prints the records of the
table named by the symbol TABLE-NAME.
- -- Procedure: browse pathname table-name |
+ -- Procedure: browse pathname table-name
Opens the database named by the string PATHNAME and sets browse's
default to it; `browse' prints the records of the table named by
the symbol TABLE-NAME.
@@ -10034,8 +10235,8 @@ File: slib.info, Node: Database Browser, Prev: Database Macros, Up: Relationa

File: slib.info, Node: Relational Infrastructure, Next: Weight-Balanced Trees, Prev: Relational Database, Up: Database Packages
-6.2 Relational Infrastructure |
-============================= |
+6.2 Relational Infrastructure
+=============================
* Menu:
@@ -10047,8 +10248,8 @@ File: slib.info, Node: Relational Infrastructure, Next: Weight-Balanced Trees,

File: slib.info, Node: Base Table, Next: Catalog Representation, Prev: Relational Infrastructure, Up: Relational Infrastructure
-6.2.1 Base Table |
----------------- |
+6.2.1 Base Table
+----------------
A "base-table" is the primitive database layer upon which SLIB
relational databases are built. At the minimum, it must support the
@@ -10059,7 +10260,7 @@ the size of integers, symbols, and strings it supports.
identifier naming it (eg. ALIST-TABLE) after requiring the symbol of
that name.
- -- Feature: alist-table |
+ -- Feature: alist-table
`(require 'alist-table)'
Association-list base tables support all Scheme types and are
@@ -10075,14 +10276,14 @@ that name.
disk-based, WB databases readily store and access hundreds of megabytes
of data. WB comes with two base-table embeddings.
- -- Feature: wb-table |
+ -- Feature: wb-table
`(require 'wb-table)'
`wb-table' supports scheme expressions for keys and values whose
text representations are less than 255 characters in length.
*Note wb-table: (wb)wb-table.
- -- Feature: rwb-isam |
+ -- Feature: rwb-isam
`(require 'rwb-isam)'
"rwb-isam" is a sophisticated base-table implementation built on
@@ -10095,7 +10296,7 @@ implementation from which the *Note Relational Database:: package
constructs a Relational system. It will be of interest primarily to
those wishing to port or write new base-table implementations.
- -- Variable: *base-table-implementations* |
+ -- Variable: *base-table-implementations*
To support automatic dispatch for `open-database', each base-table
module adds an association to *BASE-TABLE-IMPLEMENTATIONS* when
loaded. This association is the list of the base-table symbol and
@@ -10115,8 +10316,8 @@ those wishing to port or write new base-table implementations.

File: slib.info, Node: The Base, Next: Base Tables, Prev: Base Table, Up: Base Table
-6.2.1.1 The Base |
-................ |
+6.2.1.1 The Base
+................
All of these functions are accessed through a single procedure by
calling that procedure with the symbol name of the operation. A
@@ -10129,7 +10330,7 @@ otherwise. For example:
(define foo (alist-table 'foo))
foo => #f
- -- Operation on base-table: make-base filename key-dimension |
+ -- Operation on base-table: make-base filename key-dimension
column-types
Returns a new, open, low-level database (collection of tables)
associated with FILENAME. This returned database has an empty
@@ -10144,7 +10345,7 @@ otherwise. For example:
`#f' a temporary, non-disk based database will be created if such
can be supported by the base table implelentation.
- -- Operation on base-table: open-base filename mutable |
+ -- Operation on base-table: open-base filename mutable
Returns an open low-level database associated with FILENAME. If
MUTABLE is `#t', this database will have methods capable of
effecting change to the database. If MUTABLE is `#f', only
@@ -10154,7 +10355,7 @@ otherwise. For example:
Calling the `close-base' (and possibly other) method on a MUTABLE
database will cause FILENAME to be written to.
- -- Operation on base-table: write-base lldb filename |
+ -- Operation on base-table: write-base lldb filename
Causes the low-level database LLDB to be written to FILENAME. If
the write is successful, also causes LLDB to henceforth be
associated with FILENAME. Calling the `close-database' (and
@@ -10164,14 +10365,14 @@ otherwise. For example:
underlying base table implelentation. If the operations completed
successfully, `#t' is returned. Otherwise, `#f' is returned.
- -- Operation on base-table: sync-base lldb |
+ -- Operation on base-table: sync-base lldb
Causes the file associated with the low-level database LLDB to be
updated to reflect its current state. If the associated filename
is `#f', no action is taken and `#f' is returned. If this
operation completes successfully, `#t' is returned. Otherwise,
`#f' is returned.
- -- Operation on base-table: close-base lldb |
+ -- Operation on base-table: close-base lldb
Causes the low-level database LLDB to be written to its associated
file (if any). If the write is successful, subsequent operations
to LLDB will signal an error. If the operations complete
@@ -10180,10 +10381,10 @@ otherwise. For example:

File: slib.info, Node: Base Tables, Next: Base Field Types, Prev: The Base, Up: Base Table
-6.2.1.2 Base Tables |
-................... |
+6.2.1.2 Base Tables
+...................
- -- Operation on base-table: make-table lldb key-dimension column-types |
+ -- Operation on base-table: make-table lldb key-dimension column-types
Returns the ordinal BASE-ID for a new base table, otherwise
returns `#f'. The base table can then be opened using
`(open-table LLDB BASE-ID)'. The positive integer KEY-DIMENSION
@@ -10191,7 +10392,7 @@ File: slib.info, Node: Base Tables, Next: Base Field Types, Prev: The Base,
table. The list of symbols COLUMN-TYPES describes the types of
each column.
- -- Operation on base-table: open-table lldb base-id key-dimension |
+ -- Operation on base-table: open-table lldb base-id key-dimension
column-types
Returns a HANDLE for an existing base table in the low-level
database LLDB if that table exists and can be opened in the mode
@@ -10201,12 +10402,12 @@ File: slib.info, Node: Base Tables, Next: Base Field Types, Prev: The Base,
number of keys composed to make a PRIMARY-KEY for this table. The
list of symbols COLUMN-TYPES describes the types of each column.
- -- Operation on base-table: kill-table lldb base-id key-dimension |
+ -- Operation on base-table: kill-table lldb base-id key-dimension
column-types
Returns `#t' if the base table associated with BASE-ID was removed
from the low level database LLDB, and `#f' otherwise.
- -- Operation on base-table: catalog-id |
+ -- Operation on base-table: catalog-id
A constant BASE-ID ordinal suitable for passing as a parameter to
`open-table'. CATALOG-ID will be used as the base table for the
system catalog.
@@ -10214,16 +10415,16 @@ File: slib.info, Node: Base Tables, Next: Base Field Types, Prev: The Base,

File: slib.info, Node: Base Field Types, Next: Composite Keys, Prev: Base Tables, Up: Base Table
-6.2.1.3 Base Field Types |
-........................ |
+6.2.1.3 Base Field Types
+........................
- -- Operation on base-table: supported-type? symbol |
+ -- Operation on base-table: supported-type? symbol
Returns `#t' if SYMBOL names a type allowed as a column value by
the implementation, and `#f' otherwise. At a minimum, an
implementation must support the types `integer', `ordinal',
`symbol', `string', and `boolean'.
- -- Operation on base-table: supported-key-type? symbol |
+ -- Operation on base-table: supported-key-type? symbol
Returns `#t' if SYMBOL names a type allowed as a key value by the
implementation, and `#f' otherwise. At a minimum, an
implementation must support the types `ordinal', and `symbol'.
@@ -10234,10 +10435,10 @@ standard Scheme.

File: slib.info, Node: Composite Keys, Next: Base Record Operations, Prev: Base Field Types, Up: Base Table
-6.2.1.4 Composite Keys |
-...................... |
+6.2.1.4 Composite Keys
+......................
- -- Operation on base-table: make-keyifier-1 type |
+ -- Operation on base-table: make-keyifier-1 type
Returns a procedure which accepts a single argument which must be
of type TYPE. This returned procedure returns an object suitable
for being a KEY argument in the functions whose descriptions
@@ -10247,7 +10448,7 @@ File: slib.info, Node: Composite Keys, Next: Base Record Operations, Prev: Ba
function which are not `equal?' must result in returned values
which are not `equal?'.
- -- Operation on base-table: make-list-keyifier key-dimension types |
+ -- Operation on base-table: make-list-keyifier key-dimension types
The list of symbols TYPES must have at least KEY-DIMENSION
elements. Returns a procedure which accepts a list of length
KEY-DIMENSION and whose types must corresopond to the types named
@@ -10260,7 +10461,7 @@ File: slib.info, Node: Composite Keys, Next: Base Record Operations, Prev: Ba
which are not `equal?' must result in returned values which are not
`equal?'.
- -- Operation on base-table: make-key-extractor key-dimension types |
+ -- Operation on base-table: make-key-extractor key-dimension types
column-number
Returns a procedure which accepts objects produced by application
of the result of `(make-list-keyifier KEY-DIMENSION TYPES)'. This
@@ -10268,7 +10469,7 @@ File: slib.info, Node: Composite Keys, Next: Base Record Operations, Prev: Ba
element of the list which was passed to create COMPOSITE-KEY. The
list TYPES must have at least KEY-DIMENSION elements.
- -- Operation on base-table: make-key->list key-dimension types |
+ -- Operation on base-table: make-key->list key-dimension types
Returns a procedure which accepts objects produced by application
of the result of `(make-list-keyifier KEY-DIMENSION TYPES)'. This
procedure returns a list of KEYs which are elementwise `equal?' to
@@ -10277,17 +10478,17 @@ File: slib.info, Node: Composite Keys, Next: Base Record Operations, Prev: Ba

File: slib.info, Node: Base Record Operations, Next: Match Keys, Prev: Composite Keys, Up: Base Table
-6.2.1.5 Base Record Operations |
-.............................. |
+6.2.1.5 Base Record Operations
+..............................
In the following functions, the KEY argument can always be assumed to
be the value returned by a call to a _keyify_ routine.
- -- Operation on base-table: present? handle key |
+ -- Operation on base-table: present? handle key
Returns a non-`#f' value if there is a row associated with KEY in
the table opened in HANDLE and `#f' otherwise.
- -- Operation on base-table: make-getter key-dimension types |
+ -- Operation on base-table: make-getter key-dimension types
Returns a procedure which takes arguments HANDLE and KEY. This
procedure returns a list of the non-primary values of the relation
(in the base table opened in HANDLE) whose primary key is KEY if
@@ -10296,7 +10497,7 @@ be the value returned by a call to a _keyify_ routine.
`make-getter-1' is a new operation. The relational-database module
works with older base-table implementations by using `make-getter'.
- -- Operation on base-table: make-getter-1 key-dimension types index |
+ -- Operation on base-table: make-getter-1 key-dimension types index
Returns a procedure which takes arguments HANDLE and KEY. This
procedure returns the value of the INDEXth field (in the base
table opened in HANDLE) whose primary key is KEY if it exists, and
@@ -10304,21 +10505,21 @@ works with older base-table implementations by using `make-getter'.
INDEX must be larger than KEY-DIMENSION.
- -- Operation on base-table: make-putter key-dimension types |
+ -- Operation on base-table: make-putter key-dimension types
Returns a procedure which takes arguments HANDLE and KEY and
VALUE-LIST. This procedure associates the primary key KEY with
the values in VALUE-LIST (in the base table opened in HANDLE) and
returns an unspecified value.
- -- Operation on base-table: delete handle key |
+ -- Operation on base-table: delete handle key
Removes the row associated with KEY from the table opened in
HANDLE. An unspecified value is returned.

File: slib.info, Node: Match Keys, Next: Aggregate Base Operations, Prev: Base Record Operations, Up: Base Table
-6.2.1.6 Match Keys |
-.................. |
+6.2.1.6 Match Keys
+..................
A MATCH-KEYS argument is a list of length equal to the number of
primary keys. The MATCH-KEYS restrict the actions of the table command
@@ -10340,24 +10541,24 @@ element of the MATCH-KEYS list. The elements and their actions are:

File: slib.info, Node: Aggregate Base Operations, Next: Base ISAM Operations, Prev: Match Keys, Up: Base Table
-6.2.1.7 Aggregate Base Operations |
-................................. |
+6.2.1.7 Aggregate Base Operations
+.................................
The KEY-DIMENSION and COLUMN-TYPES arguments are needed to decode the
composite-keys for matching with MATCH-KEYS.
- -- Operation on base-table: delete* handle key-dimension column-types |
+ -- Operation on base-table: delete* handle key-dimension column-types
match-keys
Removes all rows which satisfy MATCH-KEYS from the table opened in
HANDLE. An unspecified value is returned.
- -- Operation on base-table: for-each-key handle procedure |
- key-dimension column-types match-keys |
+ -- Operation on base-table: for-each-key handle procedure
+ key-dimension column-types match-keys
Calls PROCEDURE once with each KEY in the table opened in HANDLE
which satisfy MATCH-KEYS in an unspecified order. An unspecified
value is returned.
- -- Operation on base-table: map-key handle procedure key-dimension |
+ -- Operation on base-table: map-key handle procedure key-dimension
column-types match-keys
Returns a list of the values returned by calling PROCEDURE once
with each KEY in the table opened in HANDLE which satisfy
@@ -10366,19 +10567,19 @@ composite-keys for matching with MATCH-KEYS.

File: slib.info, Node: Base ISAM Operations, Prev: Aggregate Base Operations, Up: Base Table
-6.2.1.8 Base ISAM Operations |
-............................ |
+6.2.1.8 Base ISAM Operations
+............................
These operations are optional for a Base-Table implementation.
- -- Operation on base-table: ordered-for-each-key handle procedure |
+ -- Operation on base-table: ordered-for-each-key handle procedure
key-dimension column-types match-keys
Calls PROCEDURE once with each KEY in the table opened in HANDLE
which satisfy MATCH-KEYS in the natural order for the types of the
primary key fields of that table. An unspecified value is
returned.
- -- Operation on base-table: make-nexter handle key-dimension |
+ -- Operation on base-table: make-nexter handle key-dimension
column-types index
Returns a procedure of arguments KEY1 KEY2 ... which returns the
key-list identifying the lowest record higher than KEY1 KEY2 ...
@@ -10386,7 +10587,7 @@ These operations are optional for a Base-Table implementation.
INDEX or a lower indexed key; or false if no higher record is
present.
- -- Operation on base-table: make-prever handle key-dimension |
+ -- Operation on base-table: make-prever handle key-dimension
column-types index
Returns a procedure of arguments KEY1 KEY2 ... which returns the
key-list identifying the highest record less than KEY1 KEY2 ...
@@ -10397,8 +10598,8 @@ These operations are optional for a Base-Table implementation.

File: slib.info, Node: Catalog Representation, Next: Relational Database Objects, Prev: Base Table, Up: Relational Infrastructure
-6.2.2 Catalog Representation |
----------------------------- |
+6.2.2 Catalog Representation
+----------------------------
Each database (in an implementation) has a "system catalog" which
describes all the user accessible tables in that database (including
@@ -10466,14 +10667,14 @@ The types for which support is planned are:

File: slib.info, Node: Relational Database Objects, Next: Database Operations, Prev: Catalog Representation, Up: Relational Infrastructure
-6.2.3 Relational Database Objects |
---------------------------------- |
+6.2.3 Relational Database Objects
+---------------------------------
This object-oriented interface is deprecated for typical database
applications; *Note Using Databases:: provides an application programmer
interface which is easier to understand and use.
- -- Function: make-relational-system base-table-implementation |
+ -- Function: make-relational-system base-table-implementation
Returns a procedure implementing a relational database using the
BASE-TABLE-IMPLEMENTATION.
@@ -10496,7 +10697,7 @@ interface which is easier to understand and use.
What follows are the descriptions of the methods available from
relational system returned by a call to `make-relational-system'.
- -- Operation on relational-system: create-database filename |
+ -- Operation on relational-system: create-database filename
Returns an open, nearly empty relational database associated with
FILENAME. The only tables defined are the system catalog and
domain table. Calling the `close-database' method on this database
@@ -10507,7 +10708,7 @@ relational system returned by a call to `make-relational-system'.
`#f' is returned. For the fields and layout of descriptor tables,
*Note Catalog Representation::
- -- Operation on relational-system: open-database filename mutable? |
+ -- Operation on relational-system: open-database filename mutable?
Returns an open relational database associated with FILENAME. If
MUTABLE? is `#t', this database will have methods capable of
effecting change to the database. If MUTABLE? is `#f', only
@@ -10519,8 +10720,8 @@ relational system returned by a call to `make-relational-system'.

File: slib.info, Node: Database Operations, Prev: Relational Database Objects, Up: Relational Infrastructure
-6.2.4 Database Operations |
-------------------------- |
+6.2.4 Database Operations
+-------------------------
This object-oriented interface is deprecated for typical database
applications; *Note Using Databases:: provides an application programmer
@@ -10535,13 +10736,13 @@ the database with the symbol name of the operation. For example:
(define telephone-table-desc
((my-database 'create-table) 'telephone-table-desc))
- -- Operation on relational-database: close-database |
+ -- Operation on relational-database: close-database
Causes the relational database to be written to its associated
file (if any). If the write is successful, subsequent operations
to this database will signal an error. If the operations completed
successfully, `#t' is returned. Otherwise, `#f' is returned.
- -- Operation on relational-database: write-database filename |
+ -- Operation on relational-database: write-database filename
Causes the relational database to be written to FILENAME. If the
write is successful, also causes the database to henceforth be
associated with FILENAME. Calling the `close-database' (and
@@ -10552,55 +10753,55 @@ the database with the symbol name of the operation. For example:
completed successfully, `#t' is returned. Otherwise, `#f' is
returned.
- -- Operation on relational-database: sync-database |
+ -- Operation on relational-database: sync-database
Causes any pending updates to the database file to be written out.
If the operations completed successfully, `#t' is returned.
Otherwise, `#f' is returned.
- -- Operation on relational-database: solidify-database |
+ -- Operation on relational-database: solidify-database
Causes any pending updates to the database file to be written out.
If the writes completed successfully, then the database is
changed to be immutable and `#t' is returned. Otherwise, `#f' is
returned.
- -- Operation on relational-database: table-exists? table-name |
+ -- Operation on relational-database: table-exists? table-name
Returns `#t' if TABLE-NAME exists in the system catalog, otherwise
returns `#f'.
- -- Operation on relational-database: open-table table-name mutable? |
+ -- Operation on relational-database: open-table table-name mutable?
Returns a "methods" procedure for an existing relational table in
this database if it exists and can be opened in the mode indicated
by MUTABLE?, otherwise returns `#f'.
These methods will be present only in mutable databases.
- -- Operation on relational-database: delete-table table-name |
+ -- Operation on relational-database: delete-table table-name
Removes and returns the TABLE-NAME row from the system catalog if
the table or view associated with TABLE-NAME gets removed from the
database, and `#f' otherwise.
- -- Operation on relational-database: create-table table-desc-name |
+ -- Operation on relational-database: create-table table-desc-name
Returns a methods procedure for a new (open) relational table for
describing the columns of a new base table in this database,
otherwise returns `#f'. For the fields and layout of descriptor
tables, *Note Catalog Representation::.
- -- Operation on relational-database: create-table table-name |
+ -- Operation on relational-database: create-table table-name
table-desc-name
Returns a methods procedure for a new (open) relational table with
columns as described by TABLE-DESC-NAME, otherwise returns `#f'.
- -- Operation on relational-database: create-view ?? |
- -- Operation on relational-database: project-table ?? |
- -- Operation on relational-database: restrict-table ?? |
- -- Operation on relational-database: cart-prod-tables ?? |
+ -- Operation on relational-database: create-view ??
+ -- Operation on relational-database: project-table ??
+ -- Operation on relational-database: restrict-table ??
+ -- Operation on relational-database: cart-prod-tables ??
Not yet implemented.

File: slib.info, Node: Weight-Balanced Trees, Prev: Relational Infrastructure, Up: Database Packages
-6.3 Weight-Balanced Trees |
-========================= |
+6.3 Weight-Balanced Trees
+=========================
`(require 'wt-tree)'
@@ -10682,8 +10883,8 @@ once before calling any of the procedures defined here.

File: slib.info, Node: Construction of Weight-Balanced Trees, Next: Basic Operations on Weight-Balanced Trees, Prev: Weight-Balanced Trees, Up: Weight-Balanced Trees
-6.3.1 Construction of Weight-Balanced Trees |
-------------------------------------------- |
+6.3.1 Construction of Weight-Balanced Trees
+-------------------------------------------
Binary trees require there to be a total order on the keys used to
arrange the elements in the tree. Weight balanced trees are organized
@@ -10697,7 +10898,7 @@ compatibility between trees in operations taking two trees. Usually a
small number of tree types are created at the beginning of a program and
used many times throughout the program's execution.
- -- procedure+: make-wt-tree-type key<? |
+ -- procedure+: make-wt-tree-type key<?
This procedure creates and returns a new tree type based on the
ordering predicate KEY<?. KEY<? must be a total ordering, having
the property that for all key values `a', `b' and `c':
@@ -10717,33 +10918,33 @@ used many times throughout the program's execution.
tree operations must all be created with a tree type originating
from the same call to `make-wt-tree-type'.
- -- variable+: number-wt-type |
+ -- variable+: number-wt-type
A standard tree type for trees with numeric keys. `Number-wt-type'
could have been defined by
(define number-wt-type (make-wt-tree-type <))
- -- variable+: string-wt-type |
+ -- variable+: string-wt-type
A standard tree type for trees with string keys. `String-wt-type'
could have been defined by
(define string-wt-type (make-wt-tree-type string<?))
- -- procedure+: make-wt-tree wt-tree-type |
+ -- procedure+: make-wt-tree wt-tree-type
This procedure creates and returns a newly allocated weight
balanced tree. The tree is empty, i.e. it contains no
associations. WT-TREE-TYPE is a weight balanced tree type
obtained by calling `make-wt-tree-type'; the returned tree has
this type.
- -- procedure+: singleton-wt-tree wt-tree-type key datum |
+ -- procedure+: singleton-wt-tree wt-tree-type key datum
This procedure creates and returns a newly allocated weight
balanced tree. The tree contains a single association, that of
DATUM with KEY. WT-TREE-TYPE is a weight balanced tree type
obtained by calling `make-wt-tree-type'; the returned tree has
this type.
- -- procedure+: alist->wt-tree tree-type alist |
+ -- procedure+: alist->wt-tree tree-type alist
Returns a newly allocated weight-balanced tree that contains the
same associations as ALIST. This procedure is equivalent to:
@@ -10759,23 +10960,23 @@ used many times throughout the program's execution.

File: slib.info, Node: Basic Operations on Weight-Balanced Trees, Next: Advanced Operations on Weight-Balanced Trees, Prev: Construction of Weight-Balanced Trees, Up: Weight-Balanced Trees
-6.3.2 Basic Operations on Weight-Balanced Trees |
------------------------------------------------ |
+6.3.2 Basic Operations on Weight-Balanced Trees
+-----------------------------------------------
This section describes the basic tree operations on weight balanced
trees. These operations are the usual tree operations for insertion,
deletion and lookup, some predicates and a procedure for determining the
number of associations in a tree.
- -- procedure+: wt-tree/empty? wt-tree |
+ -- procedure+: wt-tree/empty? wt-tree
Returns `#t' if WT-TREE contains no associations, otherwise
returns `#f'.
- -- procedure+: wt-tree/size wt-tree |
+ -- procedure+: wt-tree/size wt-tree
Returns the number of associations in WT-TREE, an exact
non-negative integer. This operation takes constant time.
- -- procedure+: wt-tree/add wt-tree key datum |
+ -- procedure+: wt-tree/add wt-tree key datum
Returns a new tree containing all the associations in WT-TREE and
the association of DATUM with KEY. If WT-TREE already had an
association for KEY, the new association overrides the old. The
@@ -10783,34 +10984,34 @@ number of associations in a tree.
proportional to the logarithm of the number of associations in
WT-TREE.
- -- procedure+: wt-tree/add! wt-tree key datum |
+ -- procedure+: wt-tree/add! wt-tree key datum
Associates DATUM with KEY in WT-TREE and returns an unspecified
value. If WT-TREE already has an association for KEY, that
association is replaced. The average and worst-case times
required by this operation are proportional to the logarithm of
the number of associations in WT-TREE.
- -- procedure+: wt-tree/member? key wt-tree |
+ -- procedure+: wt-tree/member? key wt-tree
Returns `#t' if WT-TREE contains an association for KEY, otherwise
returns `#f'. The average and worst-case times required by this
operation are proportional to the logarithm of the number of
associations in WT-TREE.
- -- procedure+: wt-tree/lookup wt-tree key default |
+ -- procedure+: wt-tree/lookup wt-tree key default
Returns the datum associated with KEY in WT-TREE. If WT-TREE
doesn't contain an association for KEY, DEFAULT is returned. The
average and worst-case times required by this operation are
proportional to the logarithm of the number of associations in
WT-TREE.
- -- procedure+: wt-tree/delete wt-tree key |
+ -- procedure+: wt-tree/delete wt-tree key
Returns a new tree containing all the associations in WT-TREE,
except that if WT-TREE contains an association for KEY, it is
removed from the result. The average and worst-case times required
by this operation are proportional to the logarithm of the number
of associations in WT-TREE.
- -- procedure+: wt-tree/delete! wt-tree key |
+ -- procedure+: wt-tree/delete! wt-tree key
If WT-TREE contains an association for KEY the association is
removed. Returns an unspecified value. The average and worst-case
times required by this operation are proportional to the logarithm
@@ -10819,28 +11020,28 @@ number of associations in a tree.

File: slib.info, Node: Advanced Operations on Weight-Balanced Trees, Next: Indexing Operations on Weight-Balanced Trees, Prev: Basic Operations on Weight-Balanced Trees, Up: Weight-Balanced Trees
-6.3.3 Advanced Operations on Weight-Balanced Trees |
--------------------------------------------------- |
+6.3.3 Advanced Operations on Weight-Balanced Trees
+--------------------------------------------------
In the following the _size_ of a tree is the number of associations
that the tree contains, and a _smaller_ tree contains fewer
associations.
- -- procedure+: wt-tree/split< wt-tree bound |
+ -- procedure+: wt-tree/split< wt-tree bound
Returns a new tree containing all and only the associations in
WT-TREE which have a key that is less than BOUND in the ordering
relation of the tree type of WT-TREE. The average and worst-case
times required by this operation are proportional to the logarithm
of the size of WT-TREE.
- -- procedure+: wt-tree/split> wt-tree bound |
+ -- procedure+: wt-tree/split> wt-tree bound
Returns a new tree containing all and only the associations in
WT-TREE which have a key that is greater than BOUND in the
ordering relation of the tree type of WT-TREE. The average and
worst-case times required by this operation are proportional to the
logarithm of size of WT-TREE.
- -- procedure+: wt-tree/union wt-tree-1 wt-tree-2 |
+ -- procedure+: wt-tree/union wt-tree-1 wt-tree-2
Returns a new tree containing all the associations from both trees.
This operation is asymmetric: when both trees have an association
for the same key, the returned tree associates the datum from
@@ -10853,7 +11054,7 @@ associations.
the other tree then the time required is at worst proportional to
the logarithm of the size of the larger tree.
- -- procedure+: wt-tree/intersection wt-tree-1 wt-tree-2 |
+ -- procedure+: wt-tree/intersection wt-tree-1 wt-tree-2
Returns a new tree containing all and only those associations from
WT-TREE-1 which have keys appearing as the key of an association
in WT-TREE-2. Thus the associated data in the result are those
@@ -10864,7 +11065,7 @@ associations.
this operation is never worse that proportional to the sum of the
sizes of the trees.
- -- procedure+: wt-tree/difference wt-tree-1 wt-tree-2 |
+ -- procedure+: wt-tree/difference wt-tree-1 wt-tree-2
Returns a new tree containing all and only those associations from
WT-TREE-1 which have keys that _do not_ appear as the key of an
association in WT-TREE-2. If the trees are viewed as sets the
@@ -10874,7 +11075,7 @@ associations.
time required by this operation is never worse that proportional to
the sum of the sizes of the trees.
- -- procedure+: wt-tree/subset? wt-tree-1 wt-tree-2 |
+ -- procedure+: wt-tree/subset? wt-tree-1 wt-tree-2
Returns `#t' iff the key of each association in WT-TREE-1 is the
key of some association in WT-TREE-2, otherwise returns `#f'.
Viewed as a set operation, `wt-tree/subset?' is the improper subset
@@ -10889,7 +11090,7 @@ associations.
required by this operation is proportional to the size of
WT-TREE-1.
- -- procedure+: wt-tree/set-equal? wt-tree-1 wt-tree-2 |
+ -- procedure+: wt-tree/set-equal? wt-tree-1 wt-tree-2
Returns `#t' iff for every association in WT-TREE-1 there is an
association in WT-TREE-2 that has the same key, and _vice versa_.
@@ -10906,7 +11107,7 @@ associations.
In the worst-case the time required by this operation is
proportional to the size of the smaller tree.
- -- procedure+: wt-tree/fold combiner initial wt-tree |
+ -- procedure+: wt-tree/fold combiner initial wt-tree
This procedure reduces WT-TREE by combining all the associations,
using an reverse in-order traversal, so the associations are
visited in reverse order. COMBINER is a procedure of three
@@ -10927,7 +11128,7 @@ associations.
0
WT-TREE)
- -- procedure+: wt-tree/for-each action wt-tree |
+ -- procedure+: wt-tree/for-each action wt-tree
This procedure traverses the tree in-order, applying ACTION to
each association. The associations are processed in increasing
order of their keys. ACTION is a procedure of two arguments which
@@ -10943,17 +11144,17 @@ associations.

File: slib.info, Node: Indexing Operations on Weight-Balanced Trees, Prev: Advanced Operations on Weight-Balanced Trees, Up: Weight-Balanced Trees
-6.3.4 Indexing Operations on Weight-Balanced Trees |
--------------------------------------------------- |
+6.3.4 Indexing Operations on Weight-Balanced Trees
+--------------------------------------------------
Weight balanced trees support operations that view the tree as sorted
sequence of associations. Elements of the sequence can be accessed by
position, and the position of an element in the sequence can be
determined, both in logarthmic time.
- -- procedure+: wt-tree/index wt-tree index |
- -- procedure+: wt-tree/index-datum wt-tree index |
- -- procedure+: wt-tree/index-pair wt-tree index |
+ -- procedure+: wt-tree/index wt-tree index
+ -- procedure+: wt-tree/index-datum wt-tree index
+ -- procedure+: wt-tree/index-pair wt-tree index
Returns the 0-based INDEXth association of WT-TREE in the sorted
sequence under the tree's ordering relation on the keys.
`wt-tree/index' returns the INDEXth key, `wt-tree/index-datum'
@@ -10974,7 +11175,7 @@ determined, both in logarthmic time.
maximum: (wt-tree/index WT-TREE (-1+ (wt-tree/size WT-TREE)))
- -- procedure+: wt-tree/rank wt-tree key |
+ -- procedure+: wt-tree/rank wt-tree key
Determines the 0-based position of KEY in the sorted sequence of
the keys under the tree's ordering relation, or `#f' if the tree
has no association with for KEY. This procedure returns either an
@@ -10982,9 +11183,9 @@ determined, both in logarthmic time.
times required by this operation are proportional to the logarithm
of the number of associations in the tree.
- -- procedure+: wt-tree/min wt-tree |
- -- procedure+: wt-tree/min-datum wt-tree |
- -- procedure+: wt-tree/min-pair wt-tree |
+ -- procedure+: wt-tree/min wt-tree
+ -- procedure+: wt-tree/min-datum wt-tree
+ -- procedure+: wt-tree/min-pair wt-tree
Returns the association of WT-TREE that has the least key under
the tree's ordering relation. `wt-tree/min' returns the least key,
`wt-tree/min-datum' returns the datum associated with the least key
@@ -10999,7 +11200,7 @@ determined, both in logarthmic time.
(define (wt-tree/min-datum tree) (wt-tree/index-datum tree 0))
(define (wt-tree/min-pair tree) (wt-tree/index-pair tree 0))
- -- procedure+: wt-tree/delete-min wt-tree |
+ -- procedure+: wt-tree/delete-min wt-tree
Returns a new tree containing all of the associations in WT-TREE
except the association with the least key under the WT-TREE's
ordering relation. An error is signalled if the tree is empty.
@@ -11009,7 +11210,7 @@ determined, both in logarthmic time.
(wt-tree/delete WT-TREE (wt-tree/min WT-TREE))
- -- procedure+: wt-tree/delete-min! wt-tree |
+ -- procedure+: wt-tree/delete-min! wt-tree
Removes the association with the least key under the WT-TREE's
ordering relation. An error is signalled if the tree is empty.
The average and worst-case times required by this operation are
@@ -11021,8 +11222,8 @@ determined, both in logarthmic time.

File: slib.info, Node: Other Packages, Next: About SLIB, Prev: Database Packages, Up: Top
-7 Other Packages |
-**************** |
+7 Other Packages
+****************
* Menu:
@@ -11037,14 +11238,15 @@ File: slib.info, Node: Other Packages, Next: About SLIB, Prev: Database Packa

File: slib.info, Node: Data Structures, Next: Sorting and Searching, Prev: Other Packages, Up: Other Packages
-7.1 Data Structures |
-=================== |
+7.1 Data Structures
+===================
* Menu:
* Arrays:: 'array
* Subarrays:: 'subarray
* Array Mapping:: 'array-for-each
+* Array Interpolation:: 'array-interpolate |
* Association Lists:: 'alist
* Byte:: 'byte
* Byte/Number Conversions:: 'byte-number
@@ -11061,79 +11263,79 @@ File: slib.info, Node: Data Structures, Next: Sorting and Searching, Prev: Ot

File: slib.info, Node: Arrays, Next: Subarrays, Prev: Data Structures, Up: Data Structures
-7.1.1 Arrays |
------------- |
+7.1.1 Arrays
+------------
-`(require 'array)' or `(require 'srfi-63)' |
+`(require 'array)' or `(require 'srfi-63)'
- -- Function: array? obj |
+ -- Function: array? obj
Returns `#t' if the OBJ is an array, and `#f' if not.
-_Note:_ Arrays are not disjoint from other Scheme types. Vectors and |
-possibly strings also satisfy `array?'. A disjoint array predicate can |
-be written: |
+_Note:_ Arrays are not disjoint from other Scheme types. Vectors and
+possibly strings also satisfy `array?'. A disjoint array predicate can
+be written:
(define (strict-array? obj)
(and (array? obj) (not (string? obj)) (not (vector? obj))))
- -- Function: equal? obj1 obj2 |
- Returns `#t' if OBJ1 and OBJ2 have the same rank and dimensions |
- and the corresponding elements of OBJ1 and OBJ2 are `equal?'. |
-
- `equal?' recursively compares the contents of pairs, vectors, |
- strings, and _arrays_, applying `eqv?' on other objects such as |
- numbers and symbols. A rule of thumb is that objects are |
- generally `equal?' if they print the same. `equal?' may fail to |
- terminate if its arguments are circular data structures. |
-
- (equal? 'a 'a) => #t |
- (equal? '(a) '(a)) => #t |
- (equal? '(a (b) c) |
- '(a (b) c)) => #t |
- (equal? "abc" "abc") => #t |
- (equal? 2 2) => #t |
- (equal? (make-vector 5 'a) |
- (make-vector 5 'a)) => #t |
- (equal? (make-array (A:fixN32b 4) 5 3) |
- (make-array (A:fixN32b 4) 5 3)) => #t |
- (equal? (make-array '#(foo) 3 3) |
- (make-array '#(foo) 3 3)) => #t |
- (equal? (lambda (x) x) |
- (lambda (y) y)) => _unspecified_ |
-
- -- Function: array-rank obj |
- Returns the number of dimensions of OBJ. If OBJ is not an array, |
- 0 is returned. |
-
- -- Function: array-dimensions array |
- Returns a list of dimensions. |
-
- (array-dimensions (make-array '#() 3 5)) |
- => (3 5) |
-
- -- Function: make-array prototype k1 ... |
- Creates and returns an array of type PROTOTYPE with dimensions K1, |
- ... and filled with elements from PROTOTYPE. PROTOTYPE must be |
- an array, vector, or string. The implementation-dependent type of |
- the returned array will be the same as the type of PROTOTYPE; |
- except if that would be a vector or string with rank not equal to |
- one, in which case some variety of array will be returned. |
-
- If the PROTOTYPE has no elements, then the initial contents of the |
- returned array are unspecified. Otherwise, the returned array |
- will be filled with the element at the origin of PROTOTYPE. |
-
- -- Function: create-array prototype k1 ... |
- `create-array' is an alias for `make-array'. |
-
- -- Function: make-shared-array array mapper k1 ... |
+ -- Function: equal? obj1 obj2
+ Returns `#t' if OBJ1 and OBJ2 have the same rank and dimensions
+ and the corresponding elements of OBJ1 and OBJ2 are `equal?'.
+
+ `equal?' recursively compares the contents of pairs, vectors,
+ strings, and _arrays_, applying `eqv?' on other objects such as
+ numbers and symbols. A rule of thumb is that objects are
+ generally `equal?' if they print the same. `equal?' may fail to
+ terminate if its arguments are circular data structures.
+
+ (equal? 'a 'a) => #t
+ (equal? '(a) '(a)) => #t
+ (equal? '(a (b) c)
+ '(a (b) c)) => #t
+ (equal? "abc" "abc") => #t
+ (equal? 2 2) => #t
+ (equal? (make-vector 5 'a)
+ (make-vector 5 'a)) => #t
+ (equal? (make-array (A:fixN32b 4) 5 3)
+ (make-array (A:fixN32b 4) 5 3)) => #t
+ (equal? (make-array '#(foo) 3 3)
+ (make-array '#(foo) 3 3)) => #t
+ (equal? (lambda (x) x)
+ (lambda (y) y)) => _unspecified_
+
+ -- Function: array-rank obj
+ Returns the number of dimensions of OBJ. If OBJ is not an array,
+ 0 is returned.
+
+ -- Function: array-dimensions array
+ Returns a list of dimensions.
+
+ (array-dimensions (make-array '#() 3 5))
+ => (3 5)
+
+ -- Function: make-array prototype k1 ...
+ Creates and returns an array of type PROTOTYPE with dimensions K1,
+ ... and filled with elements from PROTOTYPE. PROTOTYPE must be
+ an array, vector, or string. The implementation-dependent type of
+ the returned array will be the same as the type of PROTOTYPE;
+ except if that would be a vector or string with rank not equal to
+ one, in which case some variety of array will be returned.
+
+ If the PROTOTYPE has no elements, then the initial contents of the
+ returned array are unspecified. Otherwise, the returned array
+ will be filled with the element at the origin of PROTOTYPE.
+
+ -- Function: create-array prototype k1 ...
+ `create-array' is an alias for `make-array'.
+
+ -- Function: make-shared-array array mapper k1 ...
`make-shared-array' can be used to create shared subarrays of other
arrays. The MAPPER is a function that translates coordinates in
the new array into coordinates in the old array. A MAPPER must be
linear, and its range must stay within the bounds of the old
array, but it can be otherwise arbitrary. A simple example:
- (define fred (make-array '#(#f) 8 8)) |
+ (define fred (make-array '#(#f) 8 8))
(define freds-diagonal
(make-shared-array fred (lambda (i) (list i i)) 8))
(array-set! freds-diagonal 'foo 3)
@@ -11145,167 +11347,167 @@ be written: |
(array-ref freds-center 0 0)
=> FOO
- -- Function: list->array rank proto list |
- LIST must be a rank-nested list consisting of all the elements, in |
- row-major order, of the array to be created. |
+ -- Function: list->array rank proto list
+ LIST must be a rank-nested list consisting of all the elements, in
+ row-major order, of the array to be created.
- `list->array' returns an array of rank RANK and type PROTO |
- consisting of all the elements, in row-major order, of LIST. When |
- RANK is 0, LIST is the lone array element; not necessarily a list. |
+ `list->array' returns an array of rank RANK and type PROTO
+ consisting of all the elements, in row-major order, of LIST. When
+ RANK is 0, LIST is the lone array element; not necessarily a list.
- (list->array 2 '#() '((1 2) (3 4))) |
- => #2A((1 2) (3 4)) |
- (list->array 0 '#() 3) |
- => #0A 3 |
+ (list->array 2 '#() '((1 2) (3 4)))
+ => #2A((1 2) (3 4))
+ (list->array 0 '#() 3)
+ => #0A 3
- -- Function: array->list array |
- Returns a rank-nested list consisting of all the elements, in |
- row-major order, of ARRAY. In the case of a rank-0 array, |
- `array->list' returns the single element. |
+ -- Function: array->list array
+ Returns a rank-nested list consisting of all the elements, in
+ row-major order, of ARRAY. In the case of a rank-0 array,
+ `array->list' returns the single element.
- (array->list #2A((ho ho ho) (ho oh oh))) |
- => ((ho ho ho) (ho oh oh)) |
- (array->list #0A ho) |
- => ho |
+ (array->list #2A((ho ho ho) (ho oh oh)))
+ => ((ho ho ho) (ho oh oh))
+ (array->list #0A ho)
+ => ho
- -- Function: vector->array vect proto dim1 ... |
- VECT must be a vector of length equal to the product of exact |
- nonnegative integers DIM1, .... |
- |
- `vector->array' returns an array of type PROTO consisting of all |
- the elements, in row-major order, of VECT. In the case of a |
- rank-0 array, VECT has a single element. |
- |
- (vector->array #(1 2 3 4) #() 2 2) |
- => #2A((1 2) (3 4)) |
- (vector->array '#(3) '#()) |
- => #0A 3 |
- |
- -- Function: array->vector array |
- Returns a new vector consisting of all the elements of ARRAY in |
- row-major order. |
- |
- (array->vector #2A ((1 2)( 3 4))) |
- => #(1 2 3 4) |
- (array->vector #0A ho) |
- => #(ho) |
- |
- -- Function: array-in-bounds? array index1 ... |
- Returns `#t' if its arguments would be acceptable to `array-ref'.
+ -- Function: vector->array vect proto dim1 ...
+ VECT must be a vector of length equal to the product of exact
+ nonnegative integers DIM1, ....
- -- Function: array-ref array k1 ... |
- Returns the (K1, ...) element of ARRAY. |
+ `vector->array' returns an array of type PROTO consisting of all
+ the elements, in row-major order, of VECT. In the case of a
+ rank-0 array, VECT has a single element.
- -- Procedure: array-set! array obj k1 ... |
- Stores OBJ in the (K1, ...) element of ARRAY. The value returned |
- by `array-set!' is unspecified. |
- |
-These functions return a prototypical uniform-array enclosing the |
-optional argument (which must be of the correct type). If the |
-uniform-array type is supported by the implementation, then it is |
-returned; defaulting to the next larger precision type; resorting |
-finally to vector. |
- |
- -- Function: a:floc128b z |
- -- Function: a:floc128b |
- Returns an inexact 128.bit flonum complex uniform-array prototype. |
- |
- -- Function: a:floc64b z |
- -- Function: a:floc64b |
- Returns an inexact 64.bit flonum complex uniform-array prototype. |
- |
- -- Function: a:floc32b z |
- -- Function: a:floc32b |
- Returns an inexact 32.bit flonum complex uniform-array prototype. |
- |
- -- Function: a:floc16b z |
- -- Function: a:floc16b |
- Returns an inexact 16.bit flonum complex uniform-array prototype. |
- |
- -- Function: a:flor128b z |
- -- Function: a:flor128b |
- Returns an inexact 128.bit flonum real uniform-array prototype. |
- |
- -- Function: a:flor64b z |
- -- Function: a:flor64b |
- Returns an inexact 64.bit flonum real uniform-array prototype. |
- |
- -- Function: a:flor32b z |
- -- Function: a:flor32b |
- Returns an inexact 32.bit flonum real uniform-array prototype. |
- |
- -- Function: a:flor16b z |
- -- Function: a:flor16b |
- Returns an inexact 16.bit flonum real uniform-array prototype. |
- |
- -- Function: a:flor128b z |
- -- Function: a:flor128b |
- Returns an exact 128.bit decimal flonum rational uniform-array |
- prototype. |
- |
- -- Function: a:flor64b z |
- -- Function: a:flor64b |
- Returns an exact 64.bit decimal flonum rational uniform-array |
- prototype. |
- |
- -- Function: a:flor32b z |
- -- Function: a:flor32b |
- Returns an exact 32.bit decimal flonum rational uniform-array |
- prototype. |
- |
- -- Function: a:fixz64b n |
- -- Function: a:fixz64b |
- Returns an exact binary fixnum uniform-array prototype with at |
- least 64 bits of precision. |
- |
- -- Function: a:fixz32b n |
- -- Function: a:fixz32b |
- Returns an exact binary fixnum uniform-array prototype with at |
- least 32 bits of precision. |
- |
- -- Function: a:fixz16b n |
- -- Function: a:fixz16b |
- Returns an exact binary fixnum uniform-array prototype with at |
- least 16 bits of precision. |
- |
- -- Function: a:fixz8b n |
- -- Function: a:fixz8b |
- Returns an exact binary fixnum uniform-array prototype with at |
- least 8 bits of precision. |
- |
- -- Function: a:fixn64b k |
- -- Function: a:fixn64b |
- Returns an exact non-negative binary fixnum uniform-array |
- prototype with at least 64 bits of precision. |
- |
- -- Function: a:fixn32b k |
- -- Function: a:fixn32b |
- Returns an exact non-negative binary fixnum uniform-array |
- prototype with at least 32 bits of precision. |
- |
- -- Function: a:fixn16b k |
- -- Function: a:fixn16b |
- Returns an exact non-negative binary fixnum uniform-array |
- prototype with at least 16 bits of precision. |
- |
- -- Function: a:fixn8b k |
- -- Function: a:fixn8b |
- Returns an exact non-negative binary fixnum uniform-array |
- prototype with at least 8 bits of precision. |
- |
- -- Function: a:bool bool |
- -- Function: a:bool |
- Returns a boolean uniform-array prototype. |
+ (vector->array #(1 2 3 4) #() 2 2)
+ => #2A((1 2) (3 4))
+ (vector->array '#(3) '#())
+ => #0A 3
+
+ -- Function: array->vector array
+ Returns a new vector consisting of all the elements of ARRAY in
+ row-major order.
+
+ (array->vector #2A ((1 2)( 3 4)))
+ => #(1 2 3 4)
+ (array->vector #0A ho)
+ => #(ho)
+
+ -- Function: array-in-bounds? array index1 ...
+ Returns `#t' if its arguments would be acceptable to `array-ref'.
+
+ -- Function: array-ref array k1 ...
+ Returns the (K1, ...) element of ARRAY.
+
+ -- Procedure: array-set! array obj k1 ...
+ Stores OBJ in the (K1, ...) element of ARRAY. The value returned
+ by `array-set!' is unspecified.
+
+These functions return a prototypical uniform-array enclosing the
+optional argument (which must be of the correct type). If the
+uniform-array type is supported by the implementation, then it is
+returned; defaulting to the next larger precision type; resorting
+finally to vector.
+
+ -- Function: a:floc128b z
+ -- Function: a:floc128b
+ Returns an inexact 128.bit flonum complex uniform-array prototype.
+
+ -- Function: a:floc64b z
+ -- Function: a:floc64b
+ Returns an inexact 64.bit flonum complex uniform-array prototype.
+
+ -- Function: a:floc32b z
+ -- Function: a:floc32b
+ Returns an inexact 32.bit flonum complex uniform-array prototype.
+
+ -- Function: a:floc16b z
+ -- Function: a:floc16b
+ Returns an inexact 16.bit flonum complex uniform-array prototype.
+
+ -- Function: a:flor128b z
+ -- Function: a:flor128b
+ Returns an inexact 128.bit flonum real uniform-array prototype.
+
+ -- Function: a:flor64b z
+ -- Function: a:flor64b
+ Returns an inexact 64.bit flonum real uniform-array prototype.
+
+ -- Function: a:flor32b z
+ -- Function: a:flor32b
+ Returns an inexact 32.bit flonum real uniform-array prototype.
+
+ -- Function: a:flor16b z
+ -- Function: a:flor16b
+ Returns an inexact 16.bit flonum real uniform-array prototype.
+
+ -- Function: a:flor128b z
+ -- Function: a:flor128b
+ Returns an exact 128.bit decimal flonum rational uniform-array
+ prototype.
+
+ -- Function: a:flor64b z
+ -- Function: a:flor64b
+ Returns an exact 64.bit decimal flonum rational uniform-array
+ prototype.
+
+ -- Function: a:flor32b z
+ -- Function: a:flor32b
+ Returns an exact 32.bit decimal flonum rational uniform-array
+ prototype.
+
+ -- Function: a:fixz64b n
+ -- Function: a:fixz64b
+ Returns an exact binary fixnum uniform-array prototype with at
+ least 64 bits of precision.
+
+ -- Function: a:fixz32b n
+ -- Function: a:fixz32b
+ Returns an exact binary fixnum uniform-array prototype with at
+ least 32 bits of precision.
+
+ -- Function: a:fixz16b n
+ -- Function: a:fixz16b
+ Returns an exact binary fixnum uniform-array prototype with at
+ least 16 bits of precision.
+
+ -- Function: a:fixz8b n
+ -- Function: a:fixz8b
+ Returns an exact binary fixnum uniform-array prototype with at
+ least 8 bits of precision.
+
+ -- Function: a:fixn64b k
+ -- Function: a:fixn64b
+ Returns an exact non-negative binary fixnum uniform-array
+ prototype with at least 64 bits of precision.
+
+ -- Function: a:fixn32b k
+ -- Function: a:fixn32b
+ Returns an exact non-negative binary fixnum uniform-array
+ prototype with at least 32 bits of precision.
+
+ -- Function: a:fixn16b k
+ -- Function: a:fixn16b
+ Returns an exact non-negative binary fixnum uniform-array
+ prototype with at least 16 bits of precision.
+
+ -- Function: a:fixn8b k
+ -- Function: a:fixn8b
+ Returns an exact non-negative binary fixnum uniform-array
+ prototype with at least 8 bits of precision.
+
+ -- Function: a:bool bool
+ -- Function: a:bool
+ Returns a boolean uniform-array prototype.

File: slib.info, Node: Subarrays, Next: Array Mapping, Prev: Arrays, Up: Data Structures
-7.1.2 Subarrays |
---------------- |
+7.1.2 Subarrays
+---------------
`(require 'subarray)'
- -- Function: subarray array select ... |
+ -- Function: subarray array select ...
selects a subset of an array. For ARRAY of rank n, there must be
at least n SELECTS arguments. For 0 <= j < n, SELECTSj is either
an integer, a list of two integers within the range for the jth
@@ -11337,10 +11539,10 @@ File: slib.info, Node: Subarrays, Next: Array Mapping, Prev: Arrays, Up: Dat
> (subarray ra #f '(1 2))
#2A((b c) (e f))
- -- Variable: subarray0 |
- Legacy alias for subarray. |
+ -- Variable: subarray0
+ Legacy alias for subarray.
- -- Function: array-trim array trim ... |
+ -- Function: array-trim array trim ...
Returns a subarray sharing contents with ARRAY except for slices
removed from either side of each dimension. Each of the TRIMS is
an exact integer indicating how much to trim. A positive S trims
@@ -11349,25 +11551,25 @@ File: slib.info, Node: Subarrays, Next: Array Mapping, Prev: Arrays, Up: Dat
lower bound.
For example:
- (array-trim '#(0 1 2 3 4) 1) => #1A(1 2 3 4) |
- (array-trim '#(0 1 2 3 4) -1) => #1A(0 1 2 3) |
+ (array-trim '#(0 1 2 3 4) 1) => #1A(1 2 3 4)
+ (array-trim '#(0 1 2 3 4) -1) => #1A(0 1 2 3)
(require 'array-for-each)
(define (centered-difference ra)
- (array-map ra - (array-trim ra 1) (array-trim ra -1))) |
+ (array-map ra - (array-trim ra 1) (array-trim ra -1)))
(centered-difference '#(0 1 3 5 9 22))
- => #(1 2 2 4 13) |
+ => #(1 2 2 4 13)

-File: slib.info, Node: Array Mapping, Next: Association Lists, Prev: Subarrays, Up: Data Structures
-
-7.1.3 Array Mapping |
-------------------- |
+File: slib.info, Node: Array Mapping, Next: Array Interpolation, Prev: Subarrays, Up: Data Structures
+ |
+7.1.3 Array Mapping
+-------------------
`(require 'array-for-each)'
- -- Procedure: array-map! array0 proc array1 ... |
+ -- Procedure: array-map! array0 proc array1 ...
ARRAY1, ... must have the same number of dimensions as ARRAY0 and
have a range for each index which includes the range for the
corresponding index in ARRAY0. PROC is applied to each tuple of
@@ -11375,7 +11577,7 @@ File: slib.info, Node: Array Mapping, Next: Association Lists, Prev: Subarray
corresponding element in ARRAY0. The value returned is
unspecified. The order of application is unspecified.
- -- Function: array-map prototype proc array1 array2 ... |
+ -- Function: array-map prototype proc array1 array2 ...
ARRAY2, ... must have the same number of dimensions as ARRAY1 and
have a range for each index which includes the range for the
corresponding index in ARRAY1. PROC is applied to each tuple of
@@ -11383,23 +11585,23 @@ File: slib.info, Node: Array Mapping, Next: Association Lists, Prev: Subarray
corresponding element in a new array of type PROTOTYPE. The new
array is returned. The order of application is unspecified.
- -- Function: array-for-each proc array0 ... |
+ -- Function: array-for-each proc array0 ...
PROC is applied to each tuple of elements of ARRAY0 ... in
row-major order. The value returned is unspecified.
- -- Function: array-indexes array |
+ -- Function: array-indexes array
Returns an array of lists of indexes for ARRAY such that, if LI is
a list of indexes for which ARRAY is defined, (equal? LI (apply
array-ref (array-indexes ARRAY) LI)).
- -- Procedure: array-index-map! array proc |
+ -- Procedure: array-index-map! array proc
applies PROC to the indices of each element of ARRAY in turn,
storing the result in the corresponding element. The value
returned and the order of application are unspecified.
One can implement ARRAY-INDEXES as
(define (array-indexes array)
- (let ((ra (apply make-array '#() (array-dimensions array)))) |
+ (let ((ra (apply make-array '#() (array-dimensions array))))
(array-index-map! ra (lambda x x))
ra))
Another example:
@@ -11408,17 +11610,48 @@ File: slib.info, Node: Array Mapping, Next: Association Lists, Prev: Subarray
(array-index-map! v (lambda (i) i))
v))
- -- Procedure: array:copy! destination source |
+ -- Procedure: array:copy! destination source
Copies every element from vector or array SOURCE to the
corresponding element of DESTINATION. DESTINATION must have the
same rank as SOURCE, and be at least as large in each dimension.
The order of copying is unspecified.

-File: slib.info, Node: Association Lists, Next: Byte, Prev: Array Mapping, Up: Data Structures
-
-7.1.4 Association Lists |
------------------------ |
+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)) |
+ |
+
+File: slib.info, Node: Association Lists, Next: Byte, Prev: Array Interpolation, Up: Data Structures
+ |
+7.1.5 Association Lists |
+-----------------------
`(require 'alist)'
@@ -11430,18 +11663,18 @@ symmetric, and transitive.
Alist functions can be used with a secondary index method such as hash
tables for improved performance.
- -- Function: predicate->asso pred |
- Returns an "association function" (like `assq', `assv', or `assoc') |
- corresponding to PRED. The returned function returns a key-value |
- pair whose key is `pred'-equal to its first argument or `#f' if no |
- key in the alist is PRED-equal to the first argument. |
+ -- Function: predicate->asso pred
+ Returns an "association function" (like `assq', `assv', or `assoc')
+ corresponding to PRED. The returned function returns a key-value
+ pair whose key is `pred'-equal to its first argument or `#f' if no
+ key in the alist is PRED-equal to the first argument.
- -- Function: alist-inquirer pred |
+ -- Function: alist-inquirer pred
Returns a procedure of 2 arguments, ALIST and KEY, which returns
the value associated with KEY in ALIST or `#f' if KEY does not
appear in ALIST.
- -- Function: alist-associator pred |
+ -- Function: alist-associator pred
Returns a procedure of 3 arguments, ALIST, KEY, and VALUE, which
returns an alist with KEY and VALUE associated. Any previous
value associated with KEY will be lost. This returned procedure
@@ -11452,7 +11685,7 @@ tables for improved performance.
(define alist '())
(set! alist (put alist "Foo" 9))
- -- Function: alist-remover pred |
+ -- Function: alist-remover pred
Returns a procedure of 2 arguments, ALIST and KEY, which returns
an alist with an association whose KEY is key removed. This
returned procedure may or may not have side effects on its ALIST
@@ -11461,20 +11694,20 @@ tables for improved performance.
(define rem (alist-remover string-ci=?))
(set! alist (rem alist "foo"))
- -- Function: alist-map proc alist |
+ -- Function: alist-map proc alist
Returns a new association list formed by mapping PROC over the
keys and values of ALIST. PROC must be a function of 2 arguments
which returns the new value part.
- -- Function: alist-for-each proc alist |
+ -- Function: alist-for-each proc alist
Applies PROC to each pair of keys and values of ALIST. PROC must
be a function of 2 arguments. The returned value is unspecified.

File: slib.info, Node: Byte, Next: Byte/Number Conversions, Prev: Association Lists, Up: Data Structures
-7.1.5 Byte |
----------- |
+7.1.6 Byte |
+----------
`(require 'byte)'
@@ -11483,46 +11716,46 @@ Using Scheme strings to implement these arrays is not portable vis-a-vis
the correspondence between integers and characters and non-ascii
character sets. These functions abstract the notion of a "byte".
- -- Function: byte-ref bytes k |
+ -- Function: byte-ref bytes k
K must be a valid index of BYTES. `byte-ref' returns byte K of
BYTES using zero-origin indexing.
- -- Procedure: byte-set! bytes k byte |
+ -- Procedure: byte-set! bytes k byte
K must be a valid index of BYTES, and BYTE must be a small
nonnegative integer. `byte-set!' stores BYTE in element K of
BYTES and returns an unspecified value.
- -- Function: make-bytes k byte |
- -- Function: make-bytes k |
+ -- Function: make-bytes k byte
+ -- Function: make-bytes k
`make-bytes' returns a newly allocated byte-array of length K. If
BYTE is given, then all elements of the byte-array are initialized
to BYTE, otherwise the contents of the byte-array are unspecified.
- -- Function: bytes-length bytes |
+ -- Function: bytes-length bytes
`bytes-length' returns length of byte-array BYTES.
- -- Function: bytes byte ... |
+ -- Function: bytes byte ...
Returns a newly allocated byte-array composed of the small
nonnegative arguments.
- -- Function: bytes->list bytes |
+ -- Function: bytes->list bytes
`bytes->list' returns a newly allocated list of the bytes that
make up the given byte-array.
- -- Function: list->bytes bytes |
+ -- Function: list->bytes bytes
`list->bytes' returns a newly allocated byte-array formed from the
small nonnegative integers in the list BYTES.
`Bytes->list' and `list->bytes' are inverses so far as `equal?' is
concerned.
- -- Function: bytes-copy bytes |
+ -- Function: bytes-copy bytes
Returns a newly allocated copy of the given BYTES.
- -- Procedure: bytes-reverse! bytes |
+ -- Procedure: bytes-reverse! bytes
Reverses the order of byte-array BYTES.
- -- Function: bytes-reverse bytes |
+ -- Function: bytes-reverse bytes
Returns a newly allocated bytes-array consisting of the elements of
BYTES in reverse order.
@@ -11531,15 +11764,15 @@ Input and output of bytes should be with ports opened in "binary" mode
argument will return a binary port if the Scheme implementation
supports it.
- -- Function: write-byte byte port |
- -- Function: write-byte byte |
+ -- Function: write-byte byte port
+ -- Function: write-byte byte
Writes the byte BYTE (not an external representation of the byte)
to the given PORT and returns an unspecified value. The PORT
argument may be omitted, in which case it defaults to the value
returned by `current-output-port'.
- -- Function: read-byte port |
- -- Function: read-byte |
+ -- Function: read-byte port
+ -- Function: read-byte
Returns the next byte available from the input PORT, updating the
PORT to point to the following byte. If no more bytes are
available, an end-of-file object is returned. PORT may be
@@ -11556,8 +11789,8 @@ Once read in, SLIB treats byte sequences as big-endian. The multi-byte
sequences produced and used by number conversion routines *note
Byte/Number Conversions:: are always big-endian.
- -- Function: read-bytes n port |
- -- Function: read-bytes n |
+ -- Function: read-bytes n port
+ -- Function: read-bytes n
`read-bytes' returns a newly allocated bytes-array filled with
`(abs N)' bytes read from PORT. If N is positive, then the first
byte read is stored at index 0; otherwise the last byte read is
@@ -11567,8 +11800,8 @@ Byte/Number Conversions:: are always big-endian.
PORT may be omitted, in which case it defaults to the value
returned by `current-input-port'.
- -- Function: write-bytes bytes n port |
- -- Function: write-bytes bytes n |
+ -- Function: write-bytes bytes n port
+ -- Function: write-bytes bytes n
`write-bytes' writes `(abs N)' bytes to output-port PORT. If N is
positive, then the first byte written is index 0 of BYTES;
otherwise the last byte written is index 0 of BYTES.
@@ -11581,8 +11814,8 @@ Byte/Number Conversions:: are always big-endian.
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: substring-read! string start end port
+ -- Procedure: substring-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.
@@ -11590,8 +11823,8 @@ and END determines the order of writing.
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 |
+ -- 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.
@@ -11602,8 +11835,8 @@ 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.6 Byte/Number Conversions |
------------------------------ |
+7.1.7 Byte/Number Conversions |
+-----------------------------
`(require 'byte-number)'
@@ -11615,7 +11848,7 @@ read-bytes: Byte.
The sign of the length argument to bytes/integer conversion procedures
determines the signedness of the number.
- -- Function: bytes->integer bytes n |
+ -- Function: bytes->integer bytes n
Converts the first `(abs N)' bytes of big-endian BYTES array to an
integer. If N is negative then the integer coded by the bytes are
treated as two's-complement (can be negative).
@@ -11627,7 +11860,7 @@ determines the signedness of the number.
(bytes->integer (bytes 128 0 0 0) -4) => -2147483648
(bytes->integer (bytes 128 0 0 0) 4) => 2147483648
- -- Function: integer->bytes n len |
+ -- Function: integer->bytes n len
Converts the integer N to a byte-array of `(abs N)' bytes. If N
and LEN are both negative, then the bytes in the returned array
are coded two's-complement.
@@ -11639,11 +11872,13 @@ determines the signedness of the number.
(bytes->list (integer->bytes -2147483648 -4)) => (128 0 0 0)
(bytes->list (integer->bytes 2147483648 4)) => (128 0 0 0)
- -- Function: bytes->ieee-float bytes |
+ -- Function: bytes->ieee-float bytes
BYTES must be a 4-element byte-array. `bytes->ieee-float'
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 #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
@@ -11652,17 +11887,18 @@ 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)) => -1/0
- (bytes->ieee-float (bytes #x7f #x80 0 0)) => 1/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 |
+ -- Function: bytes->ieee-double bytes
BYTES must be a 8-element byte-array. `bytes->ieee-double'
calculates and returns the value of BYTES interpreted as a
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 #x40 0 0 0 0 0 0 0)) => 2
+ (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
@@ -11670,14 +11906,16 @@ 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)) => -1/0
- (bytes->ieee-double (bytes #x7F #xF0 0 0 0 0 0 0)) => 1/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 |
+ -- Function: ieee-float->bytes x
Returns a 4-element byte-array encoding the IEEE single-precision
floating-point of X.
+ (bytes->list (ieee-float->bytes 0.0)) => (0 0 0 0)
+ (bytes->list (ieee-float->bytes -0.0)) => (128 0 0 0)
(bytes->list (ieee-float->bytes 2.0)) => (64 0 0 0)
(bytes->list (ieee-float->bytes 6.5)) => (64 208 0 0)
(bytes->list (ieee-float->bytes -6.5)) => (192 208 0 0)
@@ -11686,14 +11924,16 @@ determines the signedness of the number.
(bytes->list (ieee-float->bytes 5.877471754111438e-39)) => ( 0 64 0 0)
(bytes->list (ieee-float->bytes 1.401298464324817e-45)) => ( 0 0 0 1)
- (bytes->list (ieee-float->bytes -1/0)) => (255 128 0 0)
- (bytes->list (ieee-float->bytes 1/0)) => (127 128 0 0)
+ (bytes->list (ieee-float->bytes -inf.0)) => (255 128 0 0)
+ (bytes->list (ieee-float->bytes +inf.0)) => (127 128 0 0)
(bytes->list (ieee-float->bytes 0/0)) => (127 128 0 1)
- -- Function: ieee-double->bytes x |
+ -- Function: ieee-double->bytes x
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 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)
@@ -11705,8 +11945,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 -1/0)) => (255 240 0 0 0 0 0 0)
- (bytes->list (ieee-double->bytes 1/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
@@ -11721,40 +11961,40 @@ byte-collating order to work for their entire ranges. This agreement
enables the full range of numbers as keys in
"indexed-sequential-access-method" databases.
- -- Procedure: integer-byte-collate! byte-vector |
+ -- Procedure: integer-byte-collate! byte-vector
Modifies sign bit of BYTE-VECTOR so that `string<?' ordering of
two's-complement byte-vectors matches numerical order.
`integer-byte-collate!' returns BYTE-VECTOR and is its own
functional inverse.
- -- Function: integer-byte-collate byte-vector |
+ -- Function: integer-byte-collate byte-vector
Returns copy of BYTE-VECTOR with sign bit modified so that
`string<?' ordering of two's-complement byte-vectors matches
numerical order. `integer-byte-collate' is its own functional
inverse.
- -- Procedure: ieee-byte-collate! byte-vector |
+ -- Procedure: ieee-byte-collate! byte-vector
Modifies BYTE-VECTOR so that `string<?' ordering of IEEE
floating-point byte-vectors matches numerical order.
`ieee-byte-collate!' returns BYTE-VECTOR.
- -- Procedure: ieee-byte-decollate! byte-vector |
+ -- Procedure: ieee-byte-decollate! byte-vector
Given BYTE-VECTOR modified by `IEEE-byte-collate!', reverses the
BYTE-VECTOR modifications.
- -- Function: ieee-byte-collate byte-vector |
+ -- Function: ieee-byte-collate byte-vector
Returns copy of BYTE-VECTOR encoded so that `string<?' ordering of
IEEE floating-point byte-vectors matches numerical order.
- -- Function: ieee-byte-decollate byte-vector |
+ -- Function: ieee-byte-decollate byte-vector
Given BYTE-VECTOR returned by `IEEE-byte-collate', reverses the
BYTE-VECTOR modifications.

File: slib.info, Node: MAT-File Format, Next: Portable Image Files, Prev: Byte/Number Conversions, Up: Data Structures
-7.1.7 MAT-File Format |
---------------------- |
+7.1.8 MAT-File Format |
+---------------------
`(require 'matfile)'
@@ -11765,16 +12005,16 @@ files. MAT-files written from big-endian or little-endian computers
having IEEE format numbers are currently supported. Support for files
written from VAX or Cray machines could also be added.
-The numeric and text matrix types handled; support for "sparse" matrices |
-awaits a sample file. |
+The numeric and text matrix types handled; support for "sparse" matrices
+awaits a sample file.
- -- Function: matfile:read filename |
+ -- Function: matfile:read filename
FILENAME should be a string naming an existing file containing a
MATLAB Version 4 MAT-File. The `matfile:read' procedure reads
matrices from the file and returns a list of the results; a list
of the name string and array for each matrix.
- -- Function: matfile:load filename |
+ -- Function: matfile:load filename
FILENAME should be a string naming an existing file containing a
MATLAB Version 4 MAT-File. The `matfile:load' procedure reads
matrices from the file and defines the `string-ci->symbol' for
@@ -11784,14 +12024,14 @@ awaits a sample file. |

File: slib.info, Node: Portable Image Files, Next: Collections, Prev: MAT-File Format, Up: Data Structures
-7.1.8 Portable Image Files |
--------------------------- |
+7.1.9 Portable Image Files |
+--------------------------
`(require 'pnm)'
- -- Function: pnm:type-dimensions path |
+ -- Function: pnm:type-dimensions path
The string PATH must name a "portable bitmap graphics" file. `pnm:type-dimensions'
- returns a list of 4 items: |
+ returns a list of 4 items:
1. A symbol describing the type of the file named by PATH.
2. The image width in pixels.
@@ -11815,16 +12055,16 @@ File: slib.info, Node: Portable Image Files, Next: Collections, Prev: MAT-Fil
RGB (full color) image; red, green, and blue interleaved
pixel values are from 0 to MAXVAL
- -- Function: pnm:image-file->array path array |
- Reads the "portable bitmap graphics" file named by PATH into ARRAY. |
- ARRAY must be the correct size and type for PATH. ARRAY is |
- returned. |
+ -- Function: pnm:image-file->array path array
+ Reads the "portable bitmap graphics" file named by PATH into ARRAY.
+ ARRAY must be the correct size and type for PATH. ARRAY is
+ returned.
- -- Function: pnm:image-file->array path |
+ -- Function: pnm:image-file->array path
`pnm:image-file->array' creates and returns an array with the
"portable bitmap graphics" file named by PATH read into it.
- -- Function: pnm:array-write type array maxval path comment ... |
+ -- Function: pnm:array-write type array maxval path comment ...
Writes the contents of ARRAY to a TYPE image file named PATH. The
file will have pixel values between 0 and MAXVAL, which must be
compatible with TYPE. For `pbm' files, MAXVAL must be `1'.
@@ -11833,8 +12073,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.9 Collections |
------------------ |
+7.1.10 Collections |
+------------------ |
`(require 'collect)'
@@ -11865,12 +12105,12 @@ Yasos::). They must support the following operations:
They might support specialized `for-each-key' and `for-each-elt'
operations.
- -- Function: collection? obj |
+ -- Function: collection? obj
A predicate, true initially of lists, vectors and strings. New
sorts of collections must answer `#t' to `collection?'.
- -- Procedure: map-elts proc collection1 ... |
- -- Procedure: do-elts proc collection1 ... |
+ -- Procedure: map-elts proc collection1 ...
+ -- Procedure: do-elts proc collection1 ...
PROC is a procedure taking as many arguments as there are
COLLECTIONS (at least one). The COLLECTIONS are iterated over in
their natural order and PROC is applied to the elements yielded by
@@ -11885,8 +12125,8 @@ operations.
(map-elts + (list 1 2 3) (vector 1 2 3))
=> #(2 4 6)
- -- Procedure: map-keys proc collection1 ... |
- -- Procedure: do-keys proc collection1 ... |
+ -- Procedure: map-keys proc collection1 ...
+ -- Procedure: do-keys proc collection1 ...
These are analogous to `map-elts' and `do-elts', but each
iteration is over the COLLECTIONS' _keys_ rather than their
elements.
@@ -11895,12 +12135,12 @@ operations.
(map-keys + (list 1 2 3) (vector 1 2 3))
=> #(0 2 4)
- -- Procedure: for-each-key collection proc |
- -- Procedure: for-each-elt collection proc |
+ -- Procedure: for-each-key collection proc
+ -- Procedure: for-each-elt collection proc
These are like `do-keys' and `do-elts' but only for a single
collection; they are potentially more efficient.
- -- Function: reduce proc seed collection1 ... |
+ -- Function: reduce proc seed collection1 ...
A generalization of the list-based `reduce-init' (*note Lists as
sequences::) to collections which will shadow the list-based
version if `(require 'collect)' follows `(require
@@ -11912,7 +12152,7 @@ operations.
(reduce union '() '((a b c) (b c d) (d a)))
=> (c b d a).
- -- Function: any? pred collection1 ... |
+ -- Function: any? pred collection1 ...
A generalization of the list-based `some' (*note Lists as
sequences::) to collections.
@@ -11920,7 +12160,7 @@ operations.
(any? odd? (list 2 3 4 5))
=> #t
- -- Function: every? pred collection1 ... |
+ -- Function: every? pred collection1 ...
A generalization of the list-based `every' (*note Lists as
sequences::) to collections.
@@ -11928,15 +12168,15 @@ operations.
(every? collection? '((1 2) #(1 2)))
=> #t
- -- Function: empty? collection |
+ -- Function: empty? collection
Returns `#t' iff there are no elements in COLLECTION.
`(empty? COLLECTION) == (zero? (size COLLECTION))'
- -- Function: size collection |
+ -- Function: size collection
Returns the number of elements in COLLECTION.
- -- Function: Setter list-ref |
+ -- Function: Setter list-ref
See *Note Setters:: for a definition of "setter". N.B. `(setter
list-ref)' doesn't work properly for element 0 of a list.
@@ -12002,28 +12242,28 @@ operations.

File: slib.info, Node: Dynamic Data Type, Next: Hash Tables, Prev: Collections, Up: Data Structures
-7.1.10 Dynamic Data Type |
------------------------- |
+7.1.11 Dynamic Data Type |
+------------------------
`(require 'dynamic)'
- -- Function: make-dynamic obj |
+ -- Function: make-dynamic obj
Create and returns a new "dynamic" whose global value is OBJ.
- -- Function: dynamic? obj |
+ -- Function: dynamic? obj
Returns true if and only if OBJ is a dynamic. No object
satisfying `dynamic?' satisfies any of the other standard type
predicates.
- -- Function: dynamic-ref dyn |
+ -- Function: dynamic-ref dyn
Return the value of the given dynamic in the current dynamic
environment.
- -- Procedure: dynamic-set! dyn obj |
+ -- Procedure: dynamic-set! dyn obj
Change the value of the given dynamic to OBJ in the current
dynamic environment. The returned value is unspecified.
- -- Function: call-with-dynamic-binding dyn obj thunk |
+ -- Function: call-with-dynamic-binding dyn obj thunk
Invoke and return the value of the given thunk in a new, nested
dynamic environment in which the given dynamic has been bound to a
new location whose initial contents are the value OBJ. This
@@ -12037,12 +12277,12 @@ 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.11 Hash Tables |
------------------- |
+7.1.12 Hash Tables |
+------------------
`(require 'hash-table)'
- -- Function: predicate->hash pred |
+ -- Function: predicate->hash pred
Returns a hash function (like `hashq', `hashv', or `hash')
corresponding to the equality predicate PRED. PRED should be
`eq?', `eqv?', `equal?', `=', `char=?', `char-ci=?', `string=?', or
@@ -12050,7 +12290,7 @@ File: slib.info, Node: Hash Tables, Next: Object, Prev: Dynamic Data Type, U
A hash table is a vector of association lists.
- -- Function: make-hash-table k |
+ -- Function: make-hash-table k
Returns a vector of K empty (association) lists.
Hash table functions provide utilities for an associative database.
@@ -12058,38 +12298,38 @@ These functions take an equality predicate, PRED, as an argument. PRED
should be `eq?', `eqv?', `equal?', `=', `char=?', `char-ci=?',
`string=?', or `string-ci=?'.
- -- Function: predicate->hash-asso pred |
+ -- Function: predicate->hash-asso pred
Returns a hash association function of 2 arguments, KEY and
HASHTAB, corresponding to PRED. The returned function returns a
key-value pair whose key is PRED-equal to its first argument or
`#f' if no key in HASHTAB is PRED-equal to the first argument.
- -- Function: hash-inquirer pred |
+ -- Function: hash-inquirer pred
Returns a procedure of 2 arguments, HASHTAB and KEY, which returns
the value associated with KEY in HASHTAB or `#f' if KEY does not
appear in HASHTAB.
- -- Function: hash-associator pred |
+ -- Function: hash-associator pred
Returns a procedure of 3 arguments, HASHTAB, KEY, and VALUE, which
modifies HASHTAB so that KEY and VALUE associated. Any previous
value associated with KEY will be lost.
- -- Function: hash-remover pred |
+ -- Function: hash-remover pred
Returns a procedure of 2 arguments, HASHTAB and KEY, which
modifies HASHTAB so that the association whose key is KEY is
removed.
- -- Function: hash-map proc hash-table |
+ -- Function: hash-map proc hash-table
Returns a new hash table formed by mapping PROC over the keys and
values of HASH-TABLE. PROC must be a function of 2 arguments
which returns the new value part.
- -- Function: hash-for-each proc hash-table |
+ -- Function: hash-for-each proc hash-table
Applies PROC to each pair of keys and values of HASH-TABLE. PROC
must be a function of 2 arguments. The returned value is
unspecified.
- -- Function: hash-rehasher pred |
+ -- Function: hash-rehasher pred
`hash-rehasher' accepts a hash table predicate and returns a
function of two arguments HASHTAB and NEW-K which is specialized
for that predicate.
@@ -12102,8 +12342,8 @@ should be `eq?', `eqv?', `equal?', `=', `char=?', `char-ci=?',

File: slib.info, Node: Object, Next: Priority Queues, Prev: Hash Tables, Up: Data Structures
-7.1.12 Macroless Object System |
------------------------------- |
+7.1.13 Macroless Object System |
+------------------------------
`(require 'object)'
@@ -12111,8 +12351,8 @@ 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.13 Concepts |
---------------- |
+7.1.14 Concepts |
+---------------
OBJECT
An object is an ordered association-list (by `eq?') of methods
@@ -12141,10 +12381,10 @@ PREDICATE
A object's method asscociated with a generic-predicate. Returns
`#t'.
-7.1.14 Procedures |
------------------ |
+7.1.15 Procedures |
+-----------------
- -- Function: make-object ancestor ... |
+ -- Function: make-object ancestor ...
Returns an object. Current object implementation is a tagged
vector. ANCESTORs are optional and must be objects in terms of
object?. ANCESTORs methods are included in the object. Multiple
@@ -12152,37 +12392,37 @@ PREDICATE
In this case the method of the ANCESTOR first appearing in the
list is the one returned by `get-method'.
- -- Function: object? obj |
+ -- Function: object? obj
Returns boolean value whether OBJ was created by make-object.
- -- Function: make-generic-method exception-procedure |
+ -- Function: make-generic-method exception-procedure
Returns a procedure which be associated with an object's methods.
If EXCEPTION-PROCEDURE is specified then it is used to process
non-objects.
- -- Function: make-generic-predicate |
+ -- Function: make-generic-predicate
Returns a boolean procedure for any scheme object.
- -- Function: make-method! object generic-method method |
+ -- Function: make-method! object generic-method method
Associates METHOD to the GENERIC-METHOD in the object. The METHOD
overrides any previous association with the GENERIC-METHOD within
the object. Using `unmake-method!' will restore the object's
previous association with the GENERIC-METHOD. METHOD must be a
procedure.
- -- Function: make-predicate! object generic-preciate |
+ -- Function: make-predicate! object generic-preciate
Makes a predicate method associated with the GENERIC-PREDICATE.
- -- Function: unmake-method! object generic-method |
+ -- Function: unmake-method! object generic-method
Removes an object's association with a GENERIC-METHOD .
- -- Function: get-method object generic-method |
+ -- Function: get-method object generic-method
Returns the object's method associated (if any) with the
GENERIC-METHOD. If no associated method exists an error is
flagged.
-7.1.15 Examples |
---------------- |
+7.1.16 Examples |
+---------------
(require 'object)
@@ -12240,8 +12480,8 @@ PREDICATE
(imigrate! self)
self)
-7.1.15.1 Inverter Documentation |
-............................... |
+7.1.16.1 Inverter Documentation |
+...............................
Inheritance:
<inverter>::(<number> <description>)
@@ -12253,8 +12493,8 @@ Inheritance:
<inverter>::invert
<inverter>::inverter?
-7.1.15.2 Number Documention |
-........................... |
+7.1.16.2 Number Documention |
+...........................
Inheritance
<number>::()
@@ -12264,8 +12504,8 @@ Inheritance
<number>::value
<number>::set-value!
-7.1.15.3 Inverter code |
-...................... |
+7.1.16.3 Inverter code |
+......................
(require 'object)
@@ -12328,26 +12568,26 @@ Inheritance

File: slib.info, Node: Priority Queues, Next: Queues, Prev: Object, Up: Data Structures
-7.1.16 Priority Queues |
----------------------- |
+7.1.17 Priority Queues |
+----------------------
`(require 'priority-queue)'
This algorithm for priority queues is due to `Introduction to
Algorithms' by T. Cormen, C. Leiserson, R. Rivest. 1989 MIT Press.
- -- Function: make-heap pred<? |
+ -- Function: make-heap pred<?
Returns a binary heap suitable which can be used for priority queue
operations.
- -- Function: heap-length heap |
+ -- Function: heap-length heap
Returns the number of elements in HEAP.
- -- Procedure: heap-insert! heap item |
+ -- Procedure: heap-insert! heap item
Inserts ITEM into HEAP. ITEM can be inserted multiple times. The
value returned is unspecified.
- -- Procedure: heap-extract-max! heap |
+ -- Procedure: heap-extract-max! heap
Returns the item which is larger than all others according to the
PRED<? argument to `make-heap'. If there are no items in HEAP, an
error is signaled.
@@ -12355,8 +12595,8 @@ 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.17 Queues |
-------------- |
+7.1.18 Queues |
+-------------
`(require 'queue)'
@@ -12364,50 +12604,50 @@ File: slib.info, Node: Queues, Next: Records, Prev: Priority Queues, Up: Dat
rear, and removed from the front (i.e., they are what are often called
"dequeues"). A queue may also be used like a stack.
- -- Function: make-queue |
+ -- Function: make-queue
Returns a new, empty queue.
- -- Function: queue? obj |
+ -- Function: queue? obj
Returns `#t' if OBJ is a queue.
- -- Function: queue-empty? q |
+ -- Function: queue-empty? q
Returns `#t' if the queue Q is empty.
- -- Procedure: queue-push! q datum |
+ -- Procedure: queue-push! q datum
Adds DATUM to the front of queue Q.
- -- Procedure: enqueue! q datum |
+ -- Procedure: enqueue! q datum
Adds DATUM to the rear of queue Q.
- -- Procedure: dequeue! q |
- -- Procedure: queue-pop! q |
+ -- Procedure: dequeue! q
+ -- Procedure: queue-pop! q
Both of these procedures remove and return the datum at the front
of the queue. `queue-pop!' is used to suggest that the queue is
being used like a stack.
All of the following functions raise an error if the queue Q is empty.
- -- Procedure: dequeue-all! q |
+ -- Procedure: dequeue-all! q
Removes and returns (the list) of all contents of queue Q.
- -- Function: queue-front q |
+ -- Function: queue-front q
Returns the datum at the front of the queue Q.
- -- Function: queue-rear q |
+ -- Function: queue-rear q
Returns the datum at the rear of the queue Q.

File: slib.info, Node: Records, Prev: Queues, Up: Data Structures
-7.1.18 Records |
--------------- |
+7.1.19 Records |
+--------------
`(require 'record)'
The Record package provides a facility for user to define their own
record data types.
- -- Function: make-record-type type-name field-names |
+ -- Function: make-record-type type-name field-names
Returns a "record-type descriptor", a value representing a new data
type disjoint from all others. The TYPE-NAME argument must be a
string, but is only used for debugging purposes (such as the
@@ -12417,7 +12657,7 @@ record data types.
duplicates. It is unspecified how record-type descriptors are
represented.
- -- Function: record-constructor rtd [field-names] |
+ -- Function: record-constructor rtd [field-names]
Returns a procedure for constructing new members of the type
represented by RTD. The returned procedure accepts exactly as
many arguments as there are symbols in the given list,
@@ -12430,13 +12670,13 @@ record data types.
it is an error if it contains any duplicates or any symbols not in
the default list.
- -- Function: record-predicate rtd |
+ -- Function: record-predicate rtd
Returns a procedure for testing membership in the type represented
by RTD. The returned procedure accepts exactly one argument and
returns a true value if the argument is a member of the indicated
record type; it returns a false value otherwise.
- -- Function: record-accessor rtd field-name |
+ -- Function: record-accessor rtd field-name
Returns a procedure for reading the value of a particular field of
a member of the type represented by RTD. The returned procedure
accepts exactly one argument which must be a record of the
@@ -12445,7 +12685,7 @@ record data types.
must be a member of the list of field-names in the call to
`make-record-type' that created the type represented by RTD.
- -- Function: record-modifier rtd field-name |
+ -- Function: record-modifier rtd field-name
Returns a procedure for writing the value of a particular field of
a member of the type represented by RTD. The returned procedure
accepts exactly two arguments: first, a record of the appropriate
@@ -12471,8 +12711,8 @@ supported.

File: slib.info, Node: Sorting and Searching, Next: Procedures, Prev: Data Structures, Up: Other Packages
-7.2 Sorting and Searching |
-========================= |
+7.2 Sorting and Searching
+=========================
* Menu:
@@ -12490,8 +12730,8 @@ File: slib.info, Node: Sorting and Searching, Next: Procedures, Prev: Data St

File: slib.info, Node: Common List Functions, Next: Tree Operations, Prev: Sorting and Searching, Up: Sorting and Searching
-7.2.1 Common List Functions |
---------------------------- |
+7.2.1 Common List Functions
+---------------------------
`(require 'common-list-functions)'
@@ -12509,11 +12749,11 @@ optional arguments in some cases.

File: slib.info, Node: List construction, Next: Lists as sets, Prev: Common List Functions, Up: Common List Functions
-7.2.1.1 List construction |
-......................... |
+7.2.1.1 List construction
+.........................
- -- Function: make-list k |
- -- Function: make-list k init |
+ -- Function: make-list k
+ -- Function: make-list k init
`make-list' creates and returns a list of K elements. If INIT is
included, all elements in the list are initialized to INIT.
@@ -12523,7 +12763,7 @@ File: slib.info, Node: List construction, Next: Lists as sets, Prev: Common L
(make-list 5 'foo)
=> (foo foo foo foo foo)
- -- Function: list* obj1 obj2 ... |
+ -- Function: list* obj1 obj2 ...
Works like `list' except that the cdr of the last pair is the last
argument unless there is only one argument, when the result is
just that argument. Sometimes called `cons*'. E.g.:
@@ -12537,7 +12777,7 @@ File: slib.info, Node: List construction, Next: Lists as sets, Prev: Common L
(list* ARGS '())
== (list ARGS)
- -- Function: copy-list lst |
+ -- Function: copy-list lst
`copy-list' makes a copy of LST using new pairs and returns it.
Only the top level of the list is copied, i.e., pairs forming
elements of the copied list remain `eq?' to the corresponding
@@ -12563,13 +12803,13 @@ File: slib.info, Node: List construction, Next: Lists as sets, Prev: Common L

File: slib.info, Node: Lists as sets, Next: Lists as sequences, Prev: List construction, Up: Common List Functions
-7.2.1.2 Lists as sets |
-..................... |
+7.2.1.2 Lists as sets
+.....................
`eqv?' is used to test for membership by procedures which treat lists
as sets.
- -- Function: adjoin e l |
+ -- Function: adjoin e l
`adjoin' returns the adjoint of the element E and the list L.
That is, if E is in L, `adjoin' returns L, otherwise, it returns
`(cons E L)'.
@@ -12580,7 +12820,7 @@ as sets.
(adjoin 'foo '(bar baz bang))
=> (foo bar baz bang)
- -- Function: union l1 l2 |
+ -- Function: union l1 l2
`union' returns a list of all elements that are in L1 or L2.
Duplicates between L1 and L2 are culled. Duplicates within L1 or
within L2 may or may not be removed.
@@ -12591,7 +12831,7 @@ as sets.
(union '(0 1 2 3 4) '(3 4 5 6))
=> (5 6 0 1 2 3 4)
- -- Function: intersection l1 l2 |
+ -- Function: intersection l1 l2
`intersection' returns a list of all elements that are in both L1
and L2.
@@ -12601,7 +12841,7 @@ as sets.
(intersection '(1 2 3 4) '(5 6 7 8))
=> ()
- -- Function: set-difference l1 l2 |
+ -- Function: set-difference l1 l2
`set-difference' returns a list of all elements that are in L1 but
not in L2.
@@ -12611,7 +12851,7 @@ as sets.
(set-difference '(1 2 3 4) '(1 2 3 4 5 6))
=> ()
- -- Function: subset? list1 list2 |
+ -- Function: subset? list1 list2
Returns `#t' if every element of LIST1 is `eqv?' an element of
LIST2; otherwise returns `#f'.
@@ -12621,7 +12861,7 @@ as sets.
(subset? '(1 2 3 4) '(6 5 4 3 2 1 0))
=> #t
- -- Function: member-if pred lst |
+ -- Function: member-if pred lst
`member-if' returns the list headed by the first element of LST to
satisfy `(PRED ELEMENT)'. `Member-if' returns `#f' if PRED
returns `#f' for every ELEMENT in LST.
@@ -12632,7 +12872,7 @@ as sets.
(member-if number? '(a 2 b 4))
=> (2 b 4)
- -- Function: some pred lst1 lst2 ... |
+ -- Function: some pred lst1 lst2 ...
PRED is a boolean function of as many arguments as there are list
arguments to `some' i.e., LST plus any optional arguments. PRED
is applied to successive elements of the list arguments in order.
@@ -12650,7 +12890,7 @@ as sets.
(some > '(1 3) '(2 4))
=> #f
- -- Function: every pred lst1 lst2 ... |
+ -- Function: every pred lst1 lst2 ...
`every' is analogous to `some' except it returns `#t' if every
application of PRED is `#t' and `#f' otherwise.
@@ -12664,11 +12904,11 @@ as sets.
(every > '(2 3) '(1 4))
=> #f
- -- Function: notany pred lst1 ... |
+ -- Function: notany pred lst1 ...
`notany' is analogous to `some' but returns `#t' if no application
of PRED returns `#t' or `#f' as soon as any one does.
- -- Function: notevery pred lst1 ... |
+ -- Function: notevery pred lst1 ...
`notevery' is analogous to `some' but returns `#t' as soon as an
application of PRED returns `#f', and `#f' otherwise.
@@ -12679,17 +12919,17 @@ as sets.
(notevery even? '(2 4 6 8))
=> #f
- -- Function: list-of?? predicate |
+ -- Function: list-of?? predicate
Returns a predicate which returns true if its argument is a list
every element of which satisfies PREDICATE.
- -- Function: list-of?? predicate low-bound high-bound |
+ -- Function: list-of?? predicate low-bound high-bound
LOW-BOUND and HIGH-BOUND are non-negative integers. `list-of??'
returns a predicate which returns true if its argument is a list
of length between LOW-BOUND and HIGH-BOUND (inclusive); every
element of which satisfies PREDICATE.
- -- Function: list-of?? predicate bound |
+ -- Function: list-of?? predicate bound
BOUND is an integer. If BOUND is negative, `list-of??' returns a
predicate which returns true if its argument is a list of length
greater than `(- BOUND)'; every element of which satisfies
@@ -12697,7 +12937,7 @@ as sets.
returns true if its argument is a list of length less than or
equal to BOUND; every element of which satisfies PREDICATE.
- -- Function: find-if pred lst |
+ -- Function: find-if pred lst
`find-if' searches for the first ELEMENT in LST such that `(PRED
ELEMENT)' returns `#t'. If it finds any such ELEMENT in LST,
ELEMENT is returned. Otherwise, `#f' is returned.
@@ -12712,7 +12952,7 @@ as sets.
(find-if symbol? '(1 2 foo bar))
=> foo
- -- Function: remove elt lst |
+ -- Function: remove elt lst
`remove' removes all occurrences of ELT from LST using `eqv?' to
test for equality and returns everything that's left. N.B.: other
implementations (Chez, Scheme->C and T, at least) use `equal?' as
@@ -12725,7 +12965,7 @@ as sets.
(remove 'foo '(bar baz bang))
=> (bar baz bang)
- -- Function: remove-if pred lst |
+ -- Function: remove-if pred lst
`remove-if' removes all ELEMENTs from LST where `(PRED ELEMENT)'
is `#t' and returns everything that's left.
@@ -12736,7 +12976,7 @@ as sets.
(remove-if even? '(1 2 3 4 5 6 7 8))
=> (1 3 5 7)
- -- Function: remove-if-not pred lst |
+ -- Function: remove-if-not pred lst
`remove-if-not' removes all ELEMENTs from LST for which `(PRED
ELEMENT)' is `#f' and returns everything that's left.
@@ -12746,7 +12986,7 @@ as sets.
(remove-if-not odd? '(1 2 3 4 5 6 7 8))
=> (1 3 5 7)
- -- Function: has-duplicates? lst |
+ -- Function: has-duplicates? lst
returns `#t' if 2 members of LST are `equal?', `#f' otherwise.
Example:
@@ -12758,7 +12998,7 @@ as sets.
The procedure `remove-duplicates' uses `member' (rather than `memv').
- -- Function: remove-duplicates lst |
+ -- Function: remove-duplicates lst
returns a copy of LST with its duplicate members removed.
Elements are considered duplicate if they are `equal?'.
@@ -12772,10 +13012,10 @@ as sets.

File: slib.info, Node: Lists as sequences, Next: Destructive list operations, Prev: Lists as sets, Up: Common List Functions
-7.2.1.3 Lists as sequences |
-.......................... |
+7.2.1.3 Lists as sequences
+..........................
- -- Function: position obj lst |
+ -- Function: position obj lst
`position' returns the 0-based position of OBJ in LST, or `#f' if
OBJ does not occur in LST.
@@ -12787,7 +13027,7 @@ File: slib.info, Node: Lists as sequences, Next: Destructive list operations,
(position 'oops '(foo bar baz bang))
=> #f
- -- Function: reduce p lst |
+ -- Function: reduce p lst
`reduce' combines all the elements of a sequence using a binary
operation (the combination is left-associative). For example,
using `+', one can add up all the elements. `reduce' allows you to
@@ -12829,7 +13069,7 @@ File: slib.info, Node: Lists as sequences, Next: Destructive list operations,
(lambda (args)
(reduce-init (commute cons) '() args)))
- -- Function: reduce-init p init lst |
+ -- Function: reduce-init p init lst
`reduce-init' is the same as reduce, except that it implicitly
inserts INIT at the start of the list. `reduce-init' is preferred
if you want to handle the null list, the one-element, and lists
@@ -12879,7 +13119,7 @@ File: slib.info, Node: Lists as sequences, Next: Destructive list operations,
== (insert (1 1 3 4) 5)
=> (1 1 3 4 5)
- -- Function: last lst n |
+ -- Function: last lst n
`last' returns the last N elements of LST. N must be a
non-negative integer.
@@ -12889,7 +13129,7 @@ File: slib.info, Node: Lists as sequences, Next: Destructive list operations,
(last '(1 2 3) 0)
=> 0
- -- Function: butlast lst n |
+ -- Function: butlast lst n
`butlast' returns all but the last N elements of LST.
Example:
@@ -12899,13 +13139,13 @@ File: slib.info, Node: Lists as sequences, Next: Destructive list operations,
=> ()
`last' and `butlast' split a list into two parts when given identical
-arguments. |
+arguments.
(last '(a b c d e) 2)
=> (d e)
(butlast '(a b c d e) 2)
=> (a b c)
- -- Function: nthcdr n lst |
+ -- Function: nthcdr n lst
`nthcdr' takes N `cdr's of LST and returns the result. Thus
`(nthcdr 3 LST)' == `(cdddr LST)'
@@ -12915,7 +13155,7 @@ arguments. |
(nthcdr 0 '(a b c d))
=> (a b c d)
- -- Function: butnthcdr n lst |
+ -- Function: butnthcdr n lst
`butnthcdr' returns all but the nthcdr N elements of LST.
Example:
@@ -12925,7 +13165,7 @@ arguments. |
=> (a b c d)
`nthcdr' and `butnthcdr' split a list into two parts when given
-identical arguments. |
+identical arguments.
(nthcdr 2 '(a b c d e))
=> (c d e)
(butnthcdr 2 '(a b c d e))
@@ -12934,13 +13174,13 @@ identical arguments. |

File: slib.info, Node: Destructive list operations, Next: Non-List functions, Prev: Lists as sequences, Up: Common List Functions
-7.2.1.4 Destructive list operations |
-................................... |
+7.2.1.4 Destructive list operations
+...................................
These procedures may mutate the list they operate on, but any such
mutation is undefined.
- -- Procedure: nconc args |
+ -- Procedure: nconc args
`nconc' destructively concatenates its arguments. (Compare this
with `append', which copies arguments rather than destroying them.)
Sometimes called `append!' (*note Rev2 Procedures::).
@@ -12968,7 +13208,7 @@ mutation is undefined.
`nconc' is the same as `append!' in `sc2.scm'.
- -- Procedure: nreverse lst |
+ -- Procedure: nreverse lst
`nreverse' reverses the order of elements in LST by mutating
`cdr's of the list. Sometimes called `reverse!'.
@@ -12988,9 +13228,9 @@ mutation is undefined.
(nreverse lst)
The example should suffice to show why this is the case.
- -- Procedure: delete elt lst |
- -- Procedure: delete-if pred lst |
- -- Procedure: delete-if-not pred lst |
+ -- Procedure: delete elt lst
+ -- Procedure: delete-if pred lst
+ -- Procedure: delete-if-not pred lst
Destructive versions of `remove' `remove-if', and `remove-if-not'.
Example:
@@ -13018,10 +13258,10 @@ mutation is undefined.

File: slib.info, Node: Non-List functions, Prev: Destructive list operations, Up: Common List Functions
-7.2.1.5 Non-List functions |
-.......................... |
+7.2.1.5 Non-List functions
+..........................
- -- Function: and? arg1 ... |
+ -- Function: and? arg1 ...
`and?' checks to see if all its arguments are true. If they are,
`and?' returns `#t', otherwise, `#f'. (In contrast to `and', this
is a function, so all arguments are always evaluated and in an
@@ -13033,7 +13273,7 @@ File: slib.info, Node: Non-List functions, Prev: Destructive list operations,
(and #f 1 2)
=> #f
- -- Function: or? arg1 ... |
+ -- Function: or? arg1 ...
`or?' checks to see if any of its arguments are true. If any is
true, `or?' returns `#t', and `#f' otherwise. (To `or' as `and?'
is to `and'.)
@@ -13044,7 +13284,7 @@ File: slib.info, Node: Non-List functions, Prev: Destructive list operations,
(or? #f #f #f)
=> #f
- -- Function: atom? object |
+ -- Function: atom? object
Returns `#t' if OBJECT is not a pair and `#f' if it is pair.
(Called `atom' in Common LISP.)
(atom? 1)
@@ -13057,17 +13297,17 @@ File: slib.info, Node: Non-List functions, Prev: Destructive list operations,

File: slib.info, Node: Tree Operations, Next: Chapter Ordering, Prev: Common List Functions, Up: Sorting and Searching
-7.2.2 Tree operations |
---------------------- |
+7.2.2 Tree operations
+---------------------
`(require 'tree)'
These are operations that treat lists a representations of trees.
- -- Function: subst new old tree |
- -- Function: substq new old tree |
- -- Function: substv new old tree |
- -- Function: subst new old tree equ? |
+ -- Function: subst new old tree
+ -- Function: substq new old tree
+ -- Function: substv new old tree
+ -- Function: subst new old tree equ?
`subst' makes a copy of TREE, substituting NEW for every subtree
or leaf of TREE which is `equal?' to OLD and returns a modified
tree. The original TREE is unchanged, but may share parts with
@@ -13086,7 +13326,7 @@ File: slib.info, Node: Tree Operations, Next: Chapter Ordering, Prev: Common
'((old . spice) ((old . shoes) old . pair) (old . pair)))
=> ((old . spice) ((old . shoes) a . cons) (a . cons))
- -- Function: copy-tree tree |
+ -- Function: copy-tree tree
Makes a copy of the nested list structure TREE using new pairs and
returns it. All levels are copied, so that none of the pairs in
the tree are `eq?' to the original ones - only the leaves are.
@@ -13101,8 +13341,8 @@ File: slib.info, Node: Tree Operations, Next: Chapter Ordering, Prev: Common

File: slib.info, Node: Chapter Ordering, Next: Sorting, Prev: Tree Operations, Up: Sorting and Searching
-7.2.3 Chapter Ordering |
----------------------- |
+7.2.3 Chapter Ordering
+----------------------
`(require 'chapter-order)'
@@ -13111,7 +13351,7 @@ chapter numbers (or letters) in a book. Each section of the string
consists of consecutive numeric or consecutive aphabetic characters of
like case.
- -- Function: chap:string<? string1 string2 |
+ -- Function: chap:string<? string1 string2
Returns #t if the first non-matching run of alphabetic upper-case
or the first non-matching run of alphabetic lower-case or the first
non-matching run of numeric characters of STRING1 is `string<?'
@@ -13121,12 +13361,12 @@ like case.
(chap:string<? "4c" "4aa") => #t
(chap:string<? "Revised^{3.99}" "Revised^{4}") => #t
- -- Function: chap:string>? string1 string2 |
- -- Function: chap:string<=? string1 string2 |
- -- Function: chap:string>=? string1 string2 |
+ -- Function: chap:string>? string1 string2
+ -- Function: chap:string<=? string1 string2
+ -- Function: chap:string>=? string1 string2
Implement the corresponding chapter-order predicates.
- -- Function: chap:next-string string |
+ -- Function: chap:next-string string
Returns the next string in the _chapter order_. If STRING has no
alphabetic or numeric characters, `(string-append STRING "0")' is
returnd. The argument to chap:next-string will always be
@@ -13140,8 +13380,8 @@ like case.

File: slib.info, Node: Sorting, Next: Topological Sort, Prev: Chapter Ordering, Up: Sorting and Searching
-7.2.4 Sorting |
-------------- |
+7.2.4 Sorting
+-------------
`(require 'sort)'
@@ -13224,7 +13464,7 @@ 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'.
- -- Function: sorted? sequence less? |
+ -- Function: sorted? sequence less?
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)').
@@ -13233,7 +13473,7 @@ as saying when `x' must _not_ precede `y'.
pair. It is an error if the sequence is not a list, vector, or
string.
- -- Function: merge list1 list2 less? |
+ -- 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
@@ -13242,7 +13482,7 @@ as saying when `x' must _not_ precede `y'.
bit of work anyway. I did, however, appeal to CL to determine the
_order_ of the arguments.
- -- Procedure: merge! list1 list2 less? |
+ -- 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
@@ -13255,14 +13495,14 @@ as saying when `x' must _not_ precede `y'.
per iteration.)
- -- Function: sort sequence less? |
+ -- 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? |
+ -- 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
@@ -13288,16 +13528,16 @@ A simple device for obtaining the same expressiveness is to define

File: slib.info, Node: Topological Sort, Next: Hashing, Prev: Sorting, Up: Sorting and Searching
-7.2.5 Topological Sort |
----------------------- |
+7.2.5 Topological Sort
+----------------------
`(require 'topological-sort)' or `(require 'tsort)'
The algorithm is inspired by Cormen, Leiserson and Rivest (1990)
`Introduction to Algorithms', chapter 23.
- -- Function: tsort dag pred |
- -- Function: topological-sort dag pred |
+ -- Function: tsort dag pred
+ -- Function: topological-sort dag pred
where
DAG
is a list of sublists. The car of each sublist is a vertex.
@@ -13339,17 +13579,17 @@ The algorithm is inspired by Cormen, Leiserson and Rivest (1990)

File: slib.info, Node: Hashing, Next: Space-Filling Curves, Prev: Topological Sort, Up: Sorting and Searching
-7.2.6 Hashing |
-------------- |
+7.2.6 Hashing
+-------------
`(require 'hash)'
These hashing functions are for use in quickly classifying objects.
Hash tables use these functions.
- -- Function: hashq obj k |
- -- Function: hashv obj k |
- -- Function: hash obj k |
+ -- Function: hashq obj k
+ -- Function: hashv obj k
+ -- Function: hash obj k
Returns an exact non-negative integer less than K. For each
non-negative integer less than K there are arguments OBJ for which
the hashing functions applied to OBJ and K returns that integer.
@@ -13370,159 +13610,152 @@ Hash tables use these functions.

File: slib.info, Node: Space-Filling Curves, Next: Soundex, Prev: Hashing, Up: Sorting and Searching
-7.2.7 Space-Filling Curves |
--------------------------- |
+7.2.7 Space-Filling Curves
+--------------------------
* Menu:
-* Hilbert Space-Filling Curve:: Non-negative coordinates |
-* Peano Space-Filling Curve:: Integer coordinates |
+* Hilbert Space-Filling Curve:: Non-negative coordinates
+* Peano Space-Filling Curve:: Integer coordinates
* Sierpinski Curve::

File: slib.info, Node: Hilbert Space-Filling Curve, Next: Peano Space-Filling Curve, Prev: Space-Filling Curves, Up: Space-Filling Curves
- |
-7.2.7.1 Hilbert Space-Filling Curve |
-................................... |
+
+7.2.7.1 Hilbert Space-Filling Curve
+...................................
`(require 'hilbert-fill)'
-The "Hilbert Space-Filling Curve" is a one-to-one mapping between a |
-unit line segment and an N-dimensional unit cube. This implementation |
-treats the nonnegative integers either as fractional bits of a given |
-width or as nonnegative integers. |
+The "Hilbert Space-Filling Curve" is a one-to-one mapping between a
+unit line segment and an N-dimensional unit cube. This implementation
+treats the nonnegative integers either as fractional bits of a given
+width or as nonnegative integers.
The integer procedures map the non-negative integers to an arbitrarily
large N-dimensional cube with its corner at the origin and all
coordinates are non-negative.
-For any exact nonnegative integer SCALAR and exact integer RANK > 2, |
+For any exact nonnegative integer SCALAR and exact integer RANK > 2,
(= SCALAR (hilbert-coordinates->integer
(integer->hilbert-coordinates SCALAR RANK)))
=> #t
- When treating integers as K fractional bits, |
- |
- (= SCALAR (hilbert-coordinates->integer |
- (integer->hilbert-coordinates SCALAR RANK K)) K) |
- => #t |
- |
- -- Function: integer->hilbert-coordinates scalar rank |
+ When treating integers as K fractional bits,
+
+ (= SCALAR (hilbert-coordinates->integer
+ (integer->hilbert-coordinates SCALAR RANK K)) K)
+ => #t
+
+ -- Function: integer->hilbert-coordinates scalar rank
Returns a list of RANK integer coordinates corresponding to exact
non-negative integer SCALAR. The lists returned by
`integer->hilbert-coordinates' for SCALAR arguments 0 and 1 will
differ in the first element.
- -- Function: integer->hilbert-coordinates scalar rank k |
- SCALAR must be a nonnegative integer of no more than `RANK*K' bits. |
- |
- `integer->hilbert-coordinates' Returns a list of RANK K-bit |
- nonnegative integer coordinates corresponding to exact |
- non-negative integer SCALAR. The curves generated by |
- `integer->hilbert-coordinates' have the same alignment independent |
- of K. |
- |
- -- Function: hilbert-coordinates->integer coords |
- -- Function: hilbert-coordinates->integer coords k |
+ -- Function: integer->hilbert-coordinates scalar rank k
+ SCALAR must be a nonnegative integer of no more than `RANK*K' bits.
+
+ `integer->hilbert-coordinates' Returns a list of RANK K-bit
+ nonnegative integer coordinates corresponding to exact
+ non-negative integer SCALAR. The curves generated by
+ `integer->hilbert-coordinates' have the same alignment independent
+ of K.
+
+ -- Function: hilbert-coordinates->integer coords
+ -- Function: hilbert-coordinates->integer coords k
Returns an exact non-negative integer corresponding to COORDS, a
list of non-negative integer coordinates.
-7.2.7.2 Gray code |
-................. |
- |
-A "Gray code" is an ordering of non-negative integers in which exactly |
-one bit differs between each pair of successive elements. There are |
-multiple Gray codings. An n-bit Gray code corresponds to a Hamiltonian |
-cycle on an n-dimensional hypercube. |
- |
-Gray codes find use communicating incrementally changing values between |
-asynchronous agents. De-laminated Gray codes comprise the coordinates |
-of Hilbert space-filling curves. |
- |
- -- Function: integer->gray-code k |
- Converts K to a Gray code of the same `integer-length' as K. |
- |
- -- Function: gray-code->integer k |
- Converts the Gray code K to an integer of the same |
- `integer-length' as K. |
- |
- For any non-negative integer K, |
- (eqv? k (gray-code->integer (integer->gray-code k))) |
- |
- -- Function: = k1 k2 |
- -- Function: gray-code<? k1 k2 |
- -- Function: gray-code>? k1 k2 |
- -- Function: gray-code<=? k1 k2 |
- -- Function: gray-code>=? k1 k2 |
- These procedures return #t if their Gray code arguments are |
- (respectively): equal, monotonically increasing, monotonically |
- decreasing, monotonically nondecreasing, or monotonically |
- nonincreasing. |
- |
- For any non-negative integers K1 and K2, the Gray code predicate |
- of `(integer->gray-code k1)' and `(integer->gray-code k2)' will |
- return the same value as the corresponding predicate of K1 and K2. |
- |
-7.2.7.3 Bitwise Lamination |
-.......................... |
- |
- -- Function: bitwise-laminate k1 ... |
- -- Function: bitwise-delaminate count k |
- Returns an integer composed of the bits of K1 ... interlaced in |
- argument order. Given K1, ... KN, the n low-order bits of the |
- returned value will be the lowest-order bit of each argument. |
- |
- -- Function: bitwise-laminate count k |
- Returns a list of COUNT integers comprised of every COUNTh bit of |
- the integer K. |
- |
- (map (lambda (k) (number->string k 2)) |
- (bitwise-delaminate 4 #x7654)) |
- => ("0" "1111" "1100" "1010") |
- (number->string (bitwise-laminate 0 #b1111 #b1100 #b1010) 16) |
- => "7654" |
- |
- For any non-negative integers K and COUNT: |
- (eqv? k (bitwise-laminate (bitwise-delaminate count k))) |
- |
- -- 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. |
- |
- (map (lambda (k) (number->string k 2)) |
- (delaminate-list 4 '(7 6 5 4 0 0 0 0))) |
- => ("0" "11110000" "11000000" "10100000") |
- |
- `delaminate-list' is its own inverse: |
- (delaminate-list 8 (delaminate-list 4 '(7 6 5 4 0 0 0 0))) |
- => (7 6 5 4 0 0 0 0) |
+7.2.7.2 Gray code
+.................
+
+A "Gray code" is an ordering of non-negative integers in which exactly
+one bit differs between each pair of successive elements. There are
+multiple Gray codings. An n-bit Gray code corresponds to a Hamiltonian
+cycle on an n-dimensional hypercube.
+
+Gray codes find use communicating incrementally changing values between
+asynchronous agents. De-laminated Gray codes comprise the coordinates
+of Hilbert space-filling curves.
+
+ -- Function: integer->gray-code k
+ Converts K to a Gray code of the same `integer-length' as K.
+
+ -- Function: gray-code->integer k
+ Converts the Gray code K to an integer of the same
+ `integer-length' as K.
+
+ For any non-negative integer K,
+ (eqv? k (gray-code->integer (integer->gray-code k)))
+
+ -- Function: = k1 k2
+ -- Function: gray-code<? k1 k2
+ -- Function: gray-code>? k1 k2
+ -- Function: gray-code<=? k1 k2
+ -- Function: gray-code>=? k1 k2
+ These procedures return #t if their Gray code arguments are
+ (respectively): equal, monotonically increasing, monotonically
+ decreasing, monotonically nondecreasing, or monotonically
+ nonincreasing.
+
+ For any non-negative integers K1 and K2, the Gray code predicate
+ of `(integer->gray-code k1)' and `(integer->gray-code k2)' will
+ return the same value as the corresponding predicate of K1 and K2.
+
+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.
+
+ (map (lambda (k) (number->string k 2))
+ (delaminate-list 4 '(7 6 5 4 0 0 0 0)))
+ => ("0" "11110000" "11000000" "10100000")
+
+ `delaminate-list' is its own inverse:
+ (delaminate-list 8 (delaminate-list 4 '(7 6 5 4 0 0 0 0)))
+ => (7 6 5 4 0 0 0 0)
+

File: slib.info, Node: Peano Space-Filling Curve, Next: Sierpinski Curve, Prev: Hilbert Space-Filling Curve, Up: Space-Filling Curves
+
+7.2.7.4 Peano Space-Filling Curve
+.................................
+
+`(require 'peano-fill)' |
|
-7.2.7.4 Peano Space-Filling Curve |
-................................. |
- |
+ -- 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 |
+ and 1 will differ in the first element.
+
+ -- 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 nonnegative integer coordinates |
- corresponding to exact nonnegative integer SCALAR. The lists |
- returned by `integer->peano-coordinates' for SCALAR arguments 0 |
- and 1 will differ in the first element. |
+ 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 nonnegative integer corresponding to COORDS, a |
- list of nonnegative integer coordinates. |
+ 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
- |
-7.2.7.5 Sierpinski Curve |
-........................ |
+
+7.2.7.5 Sierpinski Curve
+........................
`(require 'sierpinski)'
- -- Function: make-sierpinski-indexer max-coordinate |
+ -- Function: make-sierpinski-indexer max-coordinate
Returns a procedure (eg hash-function) of 2 numeric arguments which
preserves _nearness_ in its mapping from NxN to N.
@@ -13569,12 +13802,12 @@ File: slib.info, Node: Sierpinski Curve, Prev: Peano Space-Filling Curve, Up:

File: slib.info, Node: Soundex, Next: String Search, Prev: Space-Filling Curves, Up: Sorting and Searching
-7.2.8 Soundex |
-------------- |
+7.2.8 Soundex
+-------------
`(require 'soundex)'
- -- Function: soundex name |
+ -- Function: soundex name
Computes the _soundex_ hash of NAME. Returns a string of an
initial letter and up to three digits between 0 and 6. Soundex
supposedly has the property that names that sound similar in normal
@@ -13613,23 +13846,23 @@ File: slib.info, Node: Soundex, Next: String Search, Prev: Space-Filling Curv

File: slib.info, Node: String Search, Next: Sequence Comparison, Prev: Soundex, Up: Sorting and Searching
-7.2.9 String Search |
-------------------- |
+7.2.9 String Search
+-------------------
`(require 'string-search)'
- -- Procedure: string-index string char |
- -- Procedure: string-index-ci string char |
+ -- Procedure: string-index string char
+ -- Procedure: string-index-ci string char
Returns the index of the first occurence of CHAR within STRING, or
`#f' if the STRING does not contain a character CHAR.
- -- Procedure: string-reverse-index string char |
- -- Procedure: string-reverse-index-ci string char |
+ -- Procedure: string-reverse-index string char
+ -- Procedure: string-reverse-index-ci string char
Returns the index of the last occurence of CHAR within STRING, or
`#f' if the STRING does not contain a character CHAR.
- -- Procedure: substring? pattern string |
- -- Procedure: substring-ci? pattern string |
+ -- Procedure: substring? pattern string
+ -- Procedure: substring-ci? pattern string
Searches STRING to see if some substring of STRING is equal to
PATTERN. `substring?' returns the index of the first character of
the first substring of STRING that is equal to PATTERN; or `#f' if
@@ -13639,18 +13872,18 @@ File: slib.info, Node: String Search, Next: Sequence Comparison, Prev: Sounde
(substring? "rat" "outrage") => #f
(substring? "" any-string) => 0
- -- Procedure: find-string-from-port? str in-port max-no-chars |
+ -- Procedure: find-string-from-port? str in-port max-no-chars
Looks for a string STR within the first MAX-NO-CHARS chars of the
input port IN-PORT.
- -- Procedure: find-string-from-port? str in-port |
+ -- Procedure: find-string-from-port? str in-port
When called with two arguments, the search span is limited by the
end of the input stream.
- -- Procedure: find-string-from-port? str in-port char |
+ -- Procedure: find-string-from-port? str in-port char
Searches up to the first occurrence of character CHAR in STR.
- -- Procedure: find-string-from-port? str in-port proc |
+ -- Procedure: find-string-from-port? str in-port proc
Searches up to the first occurrence of the procedure PROC
returning non-false when called with a character (from IN-PORT)
argument.
@@ -13665,19 +13898,19 @@ File: slib.info, Node: String Search, Next: Sequence Comparison, Prev: Sounde
can be used even if the IN-PORT is open to a pipe or other
communication channel.
- -- Function: string-subst txt old1 new1 ... |
+ -- Function: string-subst txt old1 new1 ...
Returns a copy of string TXT with all occurrences of string OLD1
in TXT replaced with NEW1; then OLD2 replaced with NEW2 ....
Matches are found from the left. Matches do not overlap.
- -- Function: count-newlines str |
+ -- Function: count-newlines str
Returns the number of `#\newline' characters in string STR.

File: slib.info, Node: Sequence Comparison, Prev: String Search, Up: Sorting and Searching
-7.2.10 Sequence Comparison |
--------------------------- |
+7.2.10 Sequence Comparison
+--------------------------
`(require 'diff)'
@@ -13686,27 +13919,27 @@ File: slib.info, Node: Sequence Comparison, Prev: String Search, Up: Sorting
S. Wu, E. Myers, U. Manber, and W. Miller,
"An O(NP) Sequence Comparison Algorithm,"
Information Processing Letters 35, 6 (1990), 317-323.
- `http://www.cs.arizona.edu/people/gene/PAPERS/np_diff.ps' |
+ `http://www.cs.arizona.edu/people/gene/PAPERS/np_diff.ps'
The values returned by `diff:edit-length' can be used to gauge the
degree of match between two sequences.
-`diff:edits' and `diff:longest-common-subsequence' combine the |
-algorithm with the divide-and-conquer method outlined in: |
- |
- E. Myers and W. Miller, |
- "Optimal alignments in linear space", |
- Computer Application in the Biosciences (CABIOS), 4(1):11-17, 1988. |
- `http://www.cs.arizona.edu/people/gene/PAPERS/linear.ps' |
+`diff:edits' and `diff:longest-common-subsequence' combine the
+algorithm with the divide-and-conquer method outlined in:
+
+ E. Myers and W. Miller,
+ "Optimal alignments in linear space",
+ Computer Application in the Biosciences (CABIOS), 4(1):11-17, 1988.
+ `http://www.cs.arizona.edu/people/gene/PAPERS/linear.ps'
If the items being sequenced are text lines, then the computed
edit-list is equivalent to the output of the "diff" utility program.
If the items being sequenced are words, then it is like the lesser
known "spiff" program.
- -- Function: diff:longest-common-subsequence array1 array2 p-lim |
- -- Function: diff:longest-common-subsequence array1 array2 |
- ARRAY1 and ARRAY2 are one-dimensional arrays. |
+ -- Function: diff:longest-common-subsequence array1 array2 p-lim
+ -- Function: diff:longest-common-subsequence array1 array2
+ ARRAY1 and ARRAY2 are one-dimensional arrays.
The non-negative integer P-LIM, if provided, is maximum number of
deletions of the shorter sequence to allow.
@@ -13717,9 +13950,9 @@ known "spiff" program.
of length `(quotient (- (+ len1 len2) (diff:edit-length ARRAY1
ARRAY2)) 2)' holding the longest sequence common to both ARRAYs.
- -- Function: diff:edits array1 array2 p-lim |
- -- Function: diff:edits array1 array2 |
- ARRAY1 and ARRAY2 are one-dimensional arrays. |
+ -- Function: diff:edits array1 array2 p-lim
+ -- Function: diff:edits array1 array2
+ ARRAY1 and ARRAY2 are one-dimensional arrays.
The non-negative integer P-LIM, if provided, is maximum number of
deletions of the shorter sequence to allow. `diff:edits' will
@@ -13736,9 +13969,9 @@ known "spiff" program.
K < 0
Deletes `(array-ref ARRAY2 (- -1 K))' from the sequence.
- -- Function: diff:edit-length array1 array2 p-lim |
- -- Function: diff:edit-length array1 array2 |
- ARRAY1 and ARRAY2 are one-dimensional arrays. |
+ -- Function: diff:edit-length array1 array2 p-lim
+ -- Function: diff:edit-length array1 array2
+ ARRAY1 and ARRAY2 are one-dimensional arrays.
The non-negative integer P-LIM, if provided, is maximum number of
deletions of the shorter sequence to allow. `diff:edit-length'
@@ -13747,21 +13980,21 @@ known "spiff" program.
`diff:edit-length' returns the length of the shortest sequence of
edits transformaing ARRAY1 to ARRAY2.
- (diff:longest-common-subsequence "fghiejcklm" "fgehijkpqrlm") |
+ (diff:longest-common-subsequence "fghiejcklm" "fgehijkpqrlm")
=> "fghijklm"
- (diff:edit-length "fghiejcklm" "fgehijkpqrlm") |
+ (diff:edit-length "fghiejcklm" "fgehijkpqrlm")
=> 6
- (diff:edits "fghiejcklm" "fgehijkpqrlm") |
- => #A:fixZ32b(3 -5 -7 8 9 10) |
+ (diff:edits "fghiejcklm" "fgehijkpqrlm")
+ => #A:fixZ32b(3 -5 -7 8 9 10)
; e c h p q r

File: slib.info, Node: Procedures, Next: Standards Support, Prev: Sorting and Searching, Up: Other Packages
-7.3 Procedures |
-============== |
+7.3 Procedures
+==============
Anything that doesn't fall neatly into any of the other categories winds
up here.
@@ -13778,15 +14011,15 @@ up here.

File: slib.info, Node: Type Coercion, Next: String-Case, Prev: Procedures, Up: Procedures
-7.3.1 Type Coercion |
-------------------- |
+7.3.1 Type Coercion
+-------------------
`(require 'coerce)'
- -- Function: type-of obj |
+ -- Function: type-of obj
Returns a symbol name for the type of OBJ.
- -- Function: coerce obj result-type |
+ -- Function: coerce obj result-type
Converts and returns OBJ of type `char', `number', `string',
`symbol', `list', or `vector' to RESULT-TYPE (which must be one of
these symbols).
@@ -13794,33 +14027,33 @@ File: slib.info, Node: Type Coercion, Next: String-Case, Prev: Procedures, U

File: slib.info, Node: String-Case, Next: String Ports, Prev: Type Coercion, Up: Procedures
-7.3.2 String-Case |
------------------ |
+7.3.2 String-Case
+-----------------
`(require 'string-case)'
- -- Procedure: string-upcase str |
- -- Procedure: string-downcase str |
- -- Procedure: string-capitalize str |
+ -- Procedure: string-upcase str
+ -- Procedure: string-downcase str
+ -- Procedure: string-capitalize str
The obvious string conversion routines. These are non-destructive.
- -- Function: string-upcase! str |
- -- Function: string-downcase! str |
- -- Function: string-capitalize! str |
+ -- Function: string-upcase! str
+ -- Function: string-downcase! str
+ -- Function: string-capitalize! str
The destructive versions of the functions above.
- -- Function: string-ci->symbol str |
+ -- Function: string-ci->symbol str
Converts string STR to a symbol having the same case as if the
symbol had been `read'.
- -- Function: symbol-append obj1 ... |
+ -- Function: symbol-append obj1 ...
Converts OBJ1 ... to strings, appends them, and converts to a
symbol which is returned. Strings and numbers are converted to
read's symbol case; the case of symbol characters is not changed.
#f is converted to the empty string (symbol).
- -- Function: StudlyCapsExpand str delimiter |
- -- Function: StudlyCapsExpand str |
+ -- Function: StudlyCapsExpand str delimiter
+ -- Function: StudlyCapsExpand str
DELIMITER must be a string or character. If absent, DELIMITER
defaults to `-'. `StudlyCapsExpand' returns a copy of STR where
DELIMITER is inserted between each lower-case character
@@ -13842,18 +14075,18 @@ File: slib.info, Node: String-Case, Next: String Ports, Prev: Type Coercion,

File: slib.info, Node: String Ports, Next: Line I/O, Prev: String-Case, Up: Procedures
-7.3.3 String Ports |
------------------- |
+7.3.3 String Ports
+------------------
`(require 'string-port)'
- -- Procedure: call-with-output-string proc |
+ -- Procedure: call-with-output-string proc
PROC must be a procedure of one argument. This procedure calls
PROC with one argument: a (newly created) output port. When the
function returns, the string composed of the characters written
into the port is returned.
- -- Procedure: call-with-input-string string proc |
+ -- Procedure: call-with-input-string string proc
PROC must be a procedure of one argument. This procedure calls
PROC with one argument: an (newly created) input port from which
STRING's contents may be read. When PROC returns, the port is
@@ -13862,13 +14095,13 @@ File: slib.info, Node: String Ports, Next: Line I/O, Prev: String-Case, Up:

File: slib.info, Node: Line I/O, Next: Multi-Processing, Prev: String Ports, Up: Procedures
-7.3.4 Line I/O |
--------------- |
+7.3.4 Line I/O
+--------------
`(require 'line-i/o)'
- -- Function: read-line |
- -- Function: read-line port |
+ -- Function: read-line
+ -- Function: read-line port
Returns a string of the characters up to, but not including a
newline or end of file, updating PORT to point to the character
following the newline. If no characters are available, an end of
@@ -13876,8 +14109,8 @@ File: slib.info, Node: Line I/O, Next: Multi-Processing, Prev: String Ports,
which case it defaults to the value returned by
`current-input-port'.
- -- Procedure: read-line! string |
- -- Procedure: read-line! string port |
+ -- Procedure: read-line! string
+ -- Procedure: read-line! string port
Fills STRING with characters up to, but not including a newline or
end of file, updating the PORT to point to the last character read
or following the newline if it was read. If no characters are
@@ -13887,25 +14120,30 @@ File: slib.info, Node: Line I/O, Next: Multi-Processing, Prev: String Ports,
which case it defaults to the value returned by
`current-input-port'.
- -- Function: write-line string |
- -- Function: write-line string port |
+ -- Function: write-line string
+ -- Function: write-line string port
Writes STRING followed by a newline to the given PORT and returns
an unspecified value. The PORT argument may be omitted, in which
case it defaults to the value returned by `current-input-port'.
- -- Function: system->line command tmp |
- -- Function: system->line command |
+ -- Function: system->line command tmp
+ -- Function: system->line command
COMMAND must be a string. The string TMP, if supplied, is a path
to use as a temporary file. `system->line' calls `system' with
COMMAND as argument, redirecting stdout to file TMP.
`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. |
+ |

File: slib.info, Node: Multi-Processing, Next: Metric Units, Prev: Line I/O, Up: Procedures
-7.3.5 Multi-Processing |
----------------------- |
+7.3.5 Multi-Processing
+----------------------
`(require 'process)'
@@ -13914,17 +14152,17 @@ multi-processing in the SCM Scheme implementation using procedures
`alarm' and `alarm-interrupt'. Until this is ported to another
implementation, consider it an example of writing schedulers in Scheme.
- -- Procedure: add-process! proc |
+ -- Procedure: add-process! proc
Adds proc, which must be a procedure (or continuation) capable of
accepting accepting one argument, to the `process:queue'. The
value returned is unspecified. The argument to PROC should be
ignored. If PROC returns, the process is killed.
- -- Procedure: process:schedule! |
+ -- Procedure: process:schedule!
Saves the current process on `process:queue' and runs the next
process from `process:queue'. The value returned is unspecified.
- -- Procedure: kill-process! |
+ -- Procedure: kill-process!
Kills the current process and runs the next process from
`process:queue'. If there are no more processes on
`process:queue', `(slib:exit)' is called (*note System::).
@@ -13932,12 +14170,12 @@ implementation, consider it an example of writing schedulers in Scheme.

File: slib.info, Node: Metric Units, Prev: Multi-Processing, Up: Procedures
-7.3.6 Metric Units |
------------------- |
+7.3.6 Metric Units
+------------------
`(require 'metric-units)'
- `http://swiss.csail.mit.edu/~jaffer/MIXF' |
+ `http://swiss.csail.mit.edu/~jaffer/MIXF'
"Metric Interchange Format" is a character string encoding for
numerical values and units which:
@@ -13999,8 +14237,8 @@ used with the unit symbols t (metric ton), r (revolution), or Bd (baud).
Exponents may be positive or negative. Fractional exponents must be
parenthesized.
-7.3.6.1 SI Prefixes |
-................... |
+7.3.6.1 SI Prefixes
+...................
Factor Name Symbol | Factor Name Symbol
====== ==== ====== | ====== ==== ======
@@ -14015,8 +14253,8 @@ parenthesized.
1e2 hecto h | 1e-21 zepto z
1e1 deka da | 1e-24 yocto y
-7.3.6.2 Binary Prefixes |
-....................... |
+7.3.6.2 Binary Prefixes
+.......................
These binary prefixes are valid only with the units B (byte) and bit.
However, decimal prefixes can also be used with bit; and decimal
@@ -14031,8 +14269,8 @@ multiple (not submultiple) prefixes can also be used with B (byte).
1.048576e6 (2^20) mebi Mi
1.024e3 (2^10) kibi Ki
-7.3.6.3 Unit Symbols |
-.................... |
+7.3.6.3 Unit Symbols
+....................
Type of Quantity Name Symbol Equivalent
================ ==== ====== ==========
@@ -14088,7 +14326,7 @@ multiple (not submultiple) prefixes can also be used with B (byte).
* db/Np = ln(10) / 20
- -- Function: si:conversion-factor to-unit from-unit |
+ -- Function: si:conversion-factor to-unit from-unit
If the strings FROM-UNIT and TO-UNIT express valid unit
expressions for quantities of the same unit-dimensions, then the
value returned by `si:conversion-factor' will be such that
@@ -14126,8 +14364,8 @@ multiple (not submultiple) prefixes can also be used with B (byte).

File: slib.info, Node: Standards Support, Next: Session Support, Prev: Procedures, Up: Other Packages
-7.4 Standards Support |
-===================== |
+7.4 Standards Support
+=====================
* Menu:
@@ -14148,19 +14386,19 @@ File: slib.info, Node: Standards Support, Next: Session Support, Prev: Proced

File: slib.info, Node: RnRS, Next: With-File, Prev: Standards Support, Up: Standards Support
-7.4.1 RnRS |
----------- |
+7.4.1 RnRS
+----------
The `r2rs', `r3rs', `r4rs', and `r5rs' features attempt to provide
procedures and macros to bring a Scheme implementation to the desired
version of Scheme.
- -- Feature: r2rs |
+ -- Feature: r2rs
Requires features implementing procedures and optional procedures
specified by `Revised^2 Report on the Algorithmic Language Scheme';
namely `rev3-procedures' and `rev2-procedures'.
- -- Feature: r3rs |
+ -- Feature: r3rs
Requires features implementing procedures and optional procedures
specified by `Revised^3 Report on the Algorithmic Language Scheme';
namely `rev3-procedures'.
@@ -14168,12 +14406,12 @@ version of Scheme.
_Note:_ SLIB already mandates the `r3rs' procedures which can be
portably implemented in `r4rs' implementations.
- -- Feature: r4rs |
+ -- Feature: r4rs
Requires features implementing procedures and optional procedures
specified by `Revised^4 Report on the Algorithmic Language Scheme';
namely `rev4-optional-procedures'.
- -- Feature: r5rs |
+ -- Feature: r5rs
Requires features implementing procedures and optional procedures
specified by `Revised^5 Report on the Algorithmic Language Scheme';
namely `values', `macro', and `eval'.
@@ -14181,33 +14419,33 @@ version of Scheme.

File: slib.info, Node: With-File, Next: Transcripts, Prev: RnRS, Up: Standards Support
-7.4.2 With-File |
---------------- |
+7.4.2 With-File
+---------------
`(require 'with-file)'
- -- Function: with-input-from-file file thunk |
- -- Function: with-output-to-file file thunk |
+ -- Function: with-input-from-file file thunk
+ -- Function: with-output-to-file file thunk
Description found in R4RS.

File: slib.info, Node: Transcripts, Next: Rev2 Procedures, Prev: With-File, Up: Standards Support
-7.4.3 Transcripts |
------------------ |
+7.4.3 Transcripts
+-----------------
`(require 'transcript)'
- -- Function: transcript-on filename |
- -- Function: transcript-off filename |
+ -- Function: transcript-on filename
+ -- Function: transcript-off filename
Redefines `read-char', `read', `write-char', `write', `display',
and `newline'.

File: slib.info, Node: Rev2 Procedures, Next: Rev4 Optional Procedures, Prev: Transcripts, Up: Standards Support
-7.4.4 Rev2 Procedures |
---------------------- |
+7.4.4 Rev2 Procedures
+---------------------
`(require 'rev2-procedures)'
@@ -14215,8 +14453,8 @@ File: slib.info, Node: Rev2 Procedures, Next: Rev4 Optional Procedures, Prev:
Scheme'. *N.B.*: The symbols `1+' and `-1+' are not `R4RS' syntax.
Scheme->C, for instance, chokes on this module.
- -- Procedure: substring-move-left! string1 start1 end1 string2 start2 |
- -- Procedure: substring-move-right! string1 start1 end1 string2 start2 |
+ -- Procedure: substring-move-left! string1 start1 end1 string2 start2
+ -- Procedure: substring-move-right! string1 start1 end1 string2 start2
STRING1 and STRING2 must be a strings, and START1, START2 and END1
must be exact integers satisfying
@@ -14232,85 +14470,85 @@ Scheme->C, for instance, chokes on this module.
increasing indices. `substring-move-right!' stores characters in
time order of increasing indeces.
- -- Procedure: substring-fill! string start end char |
+ -- Procedure: substring-fill! string start end char
Fills the elements START-END of STRING with the character CHAR.
- -- Function: string-null? str |
+ -- Function: string-null? str
== `(= 0 (string-length STR))'
- -- Procedure: append! pair1 ... |
+ -- Procedure: append! pair1 ...
Destructively appends its arguments. Equivalent to `nconc'.
- -- Function: 1+ n |
+ -- Function: 1+ n
Adds 1 to N.
- -- Function: -1+ n |
+ -- Function: -1+ n
Subtracts 1 from N.
- -- Function: <? |
- -- Function: <=? |
- -- Function: =? |
- -- Function: >? |
- -- Function: >=? |
+ -- Function: <?
+ -- Function: <=?
+ -- Function: =?
+ -- Function: >?
+ -- Function: >=?
These are equivalent to the procedures of the same name but
without the trailing `?'.

File: slib.info, Node: Rev4 Optional Procedures, Next: Multi-argument / and -, Prev: Rev2 Procedures, Up: Standards Support
-7.4.5 Rev4 Optional Procedures |
------------------------------- |
+7.4.5 Rev4 Optional Procedures
+------------------------------
`(require 'rev4-optional-procedures)'
For the specification of these optional procedures, *Note Standard
procedures: (r4rs)Standard procedures.
- -- Function: list-tail l p |
+ -- Function: list-tail l p
- -- Function: string-copy |
+ -- Function: string-copy
- -- Procedure: string-fill! s obj |
+ -- Procedure: string-fill! s obj
- -- Procedure: vector-fill! s obj |
+ -- Procedure: vector-fill! s obj

File: slib.info, Node: Multi-argument / and -, Next: Multi-argument Apply, Prev: Rev4 Optional Procedures, Up: Standards Support
-7.4.6 Multi-argument / and - |
----------------------------- |
+7.4.6 Multi-argument / and -
+----------------------------
`(require 'multiarg/and-)'
For the specification of these optional forms, *Note Numerical
operations: (r4rs)Numerical operations.
- -- Function: / dividend divisor1 ... |
+ -- Function: / dividend divisor1 ...
- -- Function: - minuend subtrahend1 ... |
+ -- Function: - minuend subtrahend1 ...

File: slib.info, Node: Multi-argument Apply, Next: Rationalize, Prev: Multi-argument / and -, Up: Standards Support
-7.4.7 Multi-argument Apply |
--------------------------- |
+7.4.7 Multi-argument Apply
+--------------------------
`(require 'multiarg-apply)'
For the specification of this optional form, *Note Control features:
(r4rs)Control features.
- -- Function: apply proc arg1 ... |
+ -- Function: apply proc arg1 ...

File: slib.info, Node: Rationalize, Next: Promises, Prev: Multi-argument Apply, Up: Standards Support
-7.4.8 Rationalize |
------------------ |
+7.4.8 Rationalize
+-----------------
`(require 'rationalize)'
- -- Function: rationalize x e |
+ -- Function: rationalize x e
Computes the correct result for exact arguments (provided the
implementation supports exact rational numbers of unlimited
precision); and produces a reasonable answer for inexact arguments
@@ -14321,14 +14559,14 @@ File: slib.info, Node: Rationalize, Next: Promises, Prev: Multi-argument Appl
(non-integer) rational numbers. The following procedures return a list
of the numerator and denominator.
- -- Function: find-ratio x e |
+ -- Function: find-ratio x e
`find-ratio' returns the list of the _simplest_ numerator and
denominator whose quotient differs from X by no more than E.
(find-ratio 3/97 .0001) => (3 97)
(find-ratio 3/97 .001) => (1 32)
- -- Function: find-ratio-between x y |
+ -- Function: find-ratio-between x y
`find-ratio-between' returns the list of the _simplest_ numerator
and denominator between X and Y.
@@ -14338,18 +14576,18 @@ of the numerator and denominator.

File: slib.info, Node: Promises, Next: Dynamic-Wind, Prev: Rationalize, Up: Standards Support
-7.4.9 Promises |
--------------- |
+7.4.9 Promises
+--------------
`(require 'promise)'
- -- Function: make-promise proc |
+ -- Function: make-promise proc
- -- Function: force promise |
+ -- Function: force promise
`(require 'delay)' provides `force' and `delay':
- -- Macro: delay obj |
+ -- Macro: delay obj
Change occurrences of `(delay EXPRESSION)' to
(make-promise (lambda () EXPRESSION))
@@ -14360,8 +14598,8 @@ File: slib.info, Node: Promises, Next: Dynamic-Wind, Prev: Rationalize, Up:

File: slib.info, Node: Dynamic-Wind, Next: Eval, Prev: Promises, Up: Standards Support
-7.4.10 Dynamic-Wind |
-------------------- |
+7.4.10 Dynamic-Wind
+-------------------
`(require 'dynamic-wind)'
@@ -14369,7 +14607,7 @@ File: slib.info, Node: Dynamic-Wind, Next: Eval, Prev: Promises, Up: Standar
designed to take into account the fact that continuations produced by
`call-with-current-continuation' may be reentered.
- -- Procedure: dynamic-wind thunk1 thunk2 thunk3 |
+ -- Procedure: dynamic-wind thunk1 thunk2 thunk3
The arguments THUNK1, THUNK2, and THUNK3 must all be procedures of
no arguments (thunks).
@@ -14390,12 +14628,12 @@ designed to take into account the fact that continuations produced by

File: slib.info, Node: Eval, Next: Values, Prev: Dynamic-Wind, Up: Standards Support
-7.4.11 Eval |
------------ |
+7.4.11 Eval
+-----------
`(require 'eval)'
- -- Function: eval expression environment-specifier |
+ -- Function: eval expression environment-specifier
Evaluates EXPRESSION in the specified environment and returns its
value. EXPRESSION must be a valid Scheme expression represented
as data, and ENVIRONMENT-SPECIFIER must be a value returned by one
@@ -14414,9 +14652,9 @@ File: slib.info, Node: Eval, Next: Values, Prev: Dynamic-Wind, Up: Standards
(f + 10))
=> 20
- -- Function: scheme-report-environment version |
- -- Function: null-environment version |
- -- Function: null-environment |
+ -- Function: scheme-report-environment version
+ -- Function: null-environment version
+ -- Function: null-environment
VERSION must be an exact non-negative integer N corresponding to a
version of one of the Revised^N Reports on Scheme.
`Scheme-report-environment' returns a specifier for an environment
@@ -14437,7 +14675,7 @@ File: slib.info, Node: Eval, Next: Values, Prev: Dynamic-Wind, Up: Standards
`scheme-report-environment' may be immutable.
- -- Function: interaction-environment |
+ -- Function: interaction-environment
This optional procedure returns a specifier for the environment
that contains implementation-defined bindings, typically a
superset of those listed in the report. The intent is that this
@@ -14473,16 +14711,16 @@ Here are some more `eval' examples:

File: slib.info, Node: Values, Next: SRFI, Prev: Eval, Up: Standards Support
-7.4.12 Values |
-------------- |
+7.4.12 Values
+-------------
`(require 'values)'
- -- Function: values obj ... |
+ -- Function: values obj ...
`values' takes any number of arguments, and passes (returns) them
to its continuation.
- -- Function: call-with-values thunk proc |
+ -- Function: call-with-values thunk proc
THUNK must be a procedure of no arguments, and PROC must be a
procedure. `call-with-values' calls THUNK with a continuation
that, when passed some values, calls PROC with those values as
@@ -14497,23 +14735,15 @@ File: slib.info, Node: Values, Next: SRFI, Prev: Eval, Up: Standards Support

File: slib.info, Node: SRFI, Prev: Values, Up: Standards Support
-7.4.13 SRFI |
------------ |
+7.4.13 SRFI
+-----------
`(require 'srfi)'
Implements "Scheme Request For Implementation" (SRFI) as described at
-`http://srfi.schemers.org/' |
-
-The Copyright terms of each SRFI states:
-
- "However, this document itself may not be modified in any way, ..."
-
-Therefore, the specification of SRFI constructs must not be quoted
-without including the complete SRFI document containing discussion and
-a sample implementation program.
-
- -- Macro: cond-expand <clause1> <clause2> ... |
+`http://srfi.schemers.org/'
+ |
+ -- Macro: cond-expand <clause1> <clause2> ...
_Syntax:_ Each <clause> should be of the form
(<feature> <expression1> ...)
@@ -14529,292 +14759,262 @@ a sample implementation program.
an error is signaled.
SLIB `cond-expand' is an extension of SRFI-0,
- `http://srfi.schemers.org/srfi-0/srfi-0.html'. |
+ `http://srfi.schemers.org/srfi-0/srfi-0.html'.
* Menu:
-* SRFI-1:: list-processing
-* SRFI-2:: guarded LET* special form
-* SRFI-8:: Binding to multiple values
-* SRFI-9:: Defining Record Types
+* SRFI-1:: list-processing |
- SRFI-47 is the same as *Note Arrays::. |
+ * SRFI-2 *Note Guarded LET* special form:: |
|
-
-File: slib.info, Node: SRFI-1, Next: SRFI-2, Prev: SRFI, Up: SRFI
+ * SRFI-8 *Note Binding to multiple values:: |
+ |
+ * SRFI-9 *Note Define-Record-Type:: |
+ |
+ * SRFI-47 *Note Arrays:: |
+ |
+ * SRFI-59 *Note Vicinity:: |
+ |
+ * SRFI-63 *Note Arrays:: |
+ |
+ * SRFI-60 *Note Bit-Twiddling:: |
+ |
+ * SRFI-61 *Note Guarded COND Clause:: |
-7.4.13.1 SRFI-1 |
-............... |
+
+File: slib.info, Node: SRFI-1, Prev: SRFI, Up: SRFI
+ |
+7.4.13.1 SRFI-1
+...............
`(require 'srfi-1)'
Implements the "SRFI-1" "list-processing library" as described at
-`http://srfi.schemers.org/srfi-1/srfi-1.html' |
+`http://srfi.schemers.org/srfi-1/srfi-1.html'
Constructors
------------
- -- Function: xcons d a |
+ -- Function: xcons d a
`(define (xcons d a) (cons a d))'.
- -- Function: list-tabulate len proc |
+ -- Function: list-tabulate len proc
Returns a list of length LEN. Element I is `(PROC I)' for 0 <= I
< LEN.
- -- Function: cons* obj1 obj2 |
+ -- Function: cons* obj1 obj2
- -- Function: list-copy flist |
+ -- Function: list-copy flist
- -- Function: iota count start step |
- -- Function: iota count start |
- -- Function: iota count |
+ -- Function: iota count start step
+ -- Function: iota count start
+ -- Function: iota count
Returns a list of COUNT numbers: (START, START+STEP, ...,
START+(COUNT-1)*STEP).
- -- Function: circular-list obj1 obj2 ... |
+ -- Function: circular-list obj1 obj2 ...
Returns a circular list of OBJ1, OBJ2, ....
Predicates
----------
- -- Function: proper-list? obj |
+ -- Function: proper-list? obj
- -- Function: circular-list? x |
+ -- Function: circular-list? x
- -- Function: dotted-list? obj |
+ -- Function: dotted-list? obj
- -- Function: null-list? obj |
+ -- Function: null-list? obj
- -- Function: not-pair? obj |
+ -- Function: not-pair? obj
- -- Function: list= =pred list ... |
+ -- Function: list= =pred list ...
Selectors
---------
- -- Function: first pair |
+ -- Function: first pair
- -- Function: second pair |
+ -- Function: second pair
- -- Function: third pair |
+ -- Function: third pair
- -- Function: fourth pair |
+ -- Function: fourth pair
- -- Function: fifth pair |
- -- Function: sixth pair |
- -- Function: seventh pair |
- -- Function: eighth pair |
- -- Function: ninth pair |
- -- Function: tenth pair |
+ -- Function: fifth pair
+ -- Function: sixth pair
+ -- Function: seventh pair
+ -- Function: eighth pair
+ -- Function: ninth pair
+ -- Function: tenth pair
- -- Function: car+cdr pair |
+ -- Function: car+cdr pair
- -- Function: drop lst k |
- -- Function: take lst k |
- -- Function: take! lst k |
+ -- Function: drop lst k
+ -- Function: take lst k
+ -- Function: take! lst k
- -- Function: take-right lst k |
+ -- Function: take-right lst k
- -- Function: drop-right lst k |
+ -- Function: drop-right lst k
- -- Procedure: drop-right! lst k |
+ -- Procedure: drop-right! lst k
- -- Function: split-at lst k |
- -- Function: split-at! lst k |
+ -- Function: split-at lst k
+ -- Function: split-at! lst k
- -- Function: last lst k ... |
+ -- Function: last lst k ...
Miscellaneous
-------------
- -- Function: length+ clist |
+ -- Function: length+ clist
- -- Function: concatenate lists |
- -- Function: concatenate! lists |
+ -- Function: concatenate lists
+ -- Function: concatenate! lists
- -- Procedure: reverse! lst |
+ -- Procedure: reverse! lst
- -- Function: append-reverse rev-head tail |
- -- Function: append-reverse! rev-head tail |
+ -- Function: append-reverse rev-head tail
+ -- Function: append-reverse! rev-head tail
- -- Function: zip list1 list2 ... |
+ -- Function: zip list1 list2 ...
- -- Function: unzip1 lst |
- -- Function: unzip2 lst |
- -- Function: unzip3 lst |
- -- Function: unzip4 lst |
- -- Function: unzip5 lst |
+ -- Function: unzip1 lst
+ -- Function: unzip2 lst
+ -- Function: unzip3 lst
+ -- Function: unzip4 lst
+ -- Function: unzip5 lst
- -- Function: count pred list1 list2 ... |
+ -- Function: count pred list1 list2 ...
Fold and Unfold
---------------
- -- Function: fold kons knil clist1 clist2 ... |
+ -- Function: fold kons knil clist1 clist2 ...
- -- Function: fold-right kons knil clist1 clist2 ... |
- |
- -- Function: pair-fold kons knil clist1 clist2 ... |
- |
- -- Function: pair-fold-right kons knil clist1 clist2 ... |
- |
- -- Function: reduce f ridentity list |
- -- Function: reduce-right f ridentity list |
- |
- -- Procedure: map! f clist1 clist2 ... |
- |
- -- Function: pair-for-each f clist1 clist2 ... |
+ -- Function: fold-right kons knil clist1 clist2 ...
+
+ -- Function: pair-fold kons knil clist1 clist2 ...
+
+ -- Function: pair-fold-right kons knil clist1 clist2 ...
+
+ -- Function: reduce f ridentity list
+ -- Function: reduce-right f ridentity list
+
+ -- Procedure: map! f clist1 clist2 ...
+
+ -- Function: pair-for-each f clist1 clist2 ...
Filtering and Partitioning
--------------------------
- -- Function: filter pred list |
+ -- Function: filter pred list
- -- Procedure: filter! pred list |
+ -- Procedure: filter! pred list
- -- Function: partition pred list |
- |
- -- Function: remove pred list |
- |
- -- Procedure: partition! pred list |
- |
- -- Procedure: remove! pred list |
+ -- Function: partition pred list
+
+ -- Function: remove pred list
+
+ -- Procedure: partition! pred list
+
+ -- Procedure: remove! pred list
Searching
---------
- -- Function: find pred clist |
+ -- Function: find pred clist
- -- Function: find-tail pred clist |
+ -- Function: find-tail pred clist
- -- Function: span pred list |
+ -- Function: span pred list
- -- Procedure: span! pred list |
+ -- Procedure: span! pred list
- -- Function: break pred list |
+ -- Function: break pred list
- -- Procedure: break! pred list |
+ -- Procedure: break! pred list
- -- Function: any pred clist1 clist2 ... |
+ -- Function: any pred clist1 clist2 ...
- -- Function: list-index pred clist1 clist2 ... |
- |
- -- Function: member obj list = |
- -- Function: member obj list |
+ -- Function: list-index pred clist1 clist2 ...
+
+ -- Function: member obj list =
+ -- Function: member obj list
Deleting
--------
- -- Function: delete-duplicates x list = |
- -- Function: delete-duplicates x list |
- |
- -- Procedure: delete-duplicates! x list = |
- -- Procedure: delete-duplicates! x list |
- |
+ -- Function: delete-duplicates x list =
+ -- Function: delete-duplicates x list
+
+ -- Procedure: delete-duplicates! x list =
+ -- Procedure: delete-duplicates! x list
+
Association lists
-----------------
- -- Function: assoc obj alist pred |
- -- Function: assoc obj alist |
- |
- -- Function: alist-cons key datum alist |
- |
- -- Function: alist-copy alist |
- |
- -- Function: alist-delete key alist = |
- -- Function: alist-delete key alist |
- |
- -- Procedure: alist-delete! key alist = |
- -- Procedure: alist-delete! key alist |
+ -- Function: assoc obj alist pred
+ -- Function: assoc obj alist
+
+ -- Function: alist-cons key datum alist
+
+ -- Function: alist-copy alist
+
+ -- Function: alist-delete key alist =
+ -- Function: alist-delete key alist
+
+ -- Procedure: alist-delete! key alist =
+ -- Procedure: alist-delete! key alist
Set operations
--------------
- -- Function: lset<= = list1 ... |
- Determine if a transitive subset relation exists between the |
- lists LIST1 ..., using = to determine equality of list members. |
- |
- -- Function: lset= = list1 list2 ... |
- |
- -- Function: lset-adjoin list elt1 ... |
- |
- -- Function: lset-union = list1 ... |
- |
- -- Function: lset-intersection = list1 list2 ... |
- |
- -- Function: lset-difference = list1 list2 ... |
- |
- -- Function: lset-xor = list1 ... |
- |
- -- Function: lset-diff+intersection = list1 list2 ... |
- |
-These are linear-update variants. They are allowed, but not required, |
-to use the cons cells in their first list parameter to construct their |
-answer. `lset-union!' is permitted to recycle cons cells from any of |
-its list arguments. |
- |
- -- Procedure: lset-intersection! = list1 list2 ... |
- |
- -- Procedure: lset-difference! = list1 list2 ... |
- |
- -- Procedure: lset-union! = list1 ... |
- |
- -- Procedure: lset-xor! = list1 ... |
- |
- -- Procedure: lset-diff+intersection! = list1 list2 ... |
- |
-
-File: slib.info, Node: SRFI-2, Next: SRFI-8, Prev: SRFI-1, Up: SRFI
+ -- Function: lset<= = list1 ...
+ Determine if a transitive subset relation exists between the
+ lists LIST1 ..., using = to determine equality of list members.
-7.4.13.2 SRFI-2 |
-............... |
+ -- Function: lset= = list1 list2 ...
-`(require 'srfi-2)'
+ -- Function: lset-adjoin list elt1 ...
- -- Macro: and-let* claws body ... |
- `http://srfi.schemers.org/srfi-2/srfi-2.html' |
+ -- Function: lset-union = list1 ...
-
-File: slib.info, Node: SRFI-8, Next: SRFI-9, Prev: SRFI-2, Up: SRFI
+ -- Function: lset-intersection = list1 list2 ...
-7.4.13.3 SRFI-8 |
-............... |
+ -- Function: lset-difference = list1 list2 ...
-`(require 'srfi-8)'
+ -- Function: lset-xor = list1 ...
- -- Special Form: receive formals expression body ... |
- `http://srfi.schemers.org/srfi-8/srfi-8.html' |
+ -- Function: lset-diff+intersection = list1 list2 ...
-
-File: slib.info, Node: SRFI-9, Prev: SRFI-8, Up: SRFI
+These are linear-update variants. They are allowed, but not required,
+to use the cons cells in their first list parameter to construct their
+answer. `lset-union!' is permitted to recycle cons cells from any of
+its list arguments.
-7.4.13.4 SRFI-9 |
-............... |
+ -- Procedure: lset-intersection! = list1 list2 ...
-`(require 'srfi-9)'
+ -- Procedure: lset-difference! = list1 list2 ...
- `http://srfi.schemers.org/srfi-9/srfi-9.html' |
+ -- Procedure: lset-union! = list1 ...
- -- 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>)
+ -- Procedure: lset-xor! = list1 ...
- `define-record-type' is a syntax wrapper for the SLIB `record'
- module.
+ -- Procedure: lset-diff+intersection! = list1 list2 ...

File: slib.info, Node: Session Support, Next: System Interface, Prev: Standards Support, Up: Other Packages
-
-7.5 Session Support |
-=================== |
- |
-If `(provided? 'abort)': |
|
- -- Function: abort |
- Resumes the top level Read-Eval-Print loop. If provided, `abort' |
- is used by the `break' and `debug' packages. |
+7.5 Session Support
+===================
+
+If `(provided? 'abort)':
+
+ -- Function: abort
+ Resumes the top level Read-Eval-Print loop. If provided, `abort'
+ is used by the `break' and `debug' packages.
* Menu:
@@ -14827,20 +15027,20 @@ If `(provided? 'abort)': |

File: slib.info, Node: Repl, Next: Quick Print, Prev: Session Support, Up: Session Support
-7.5.1 Repl |
----------- |
+7.5.1 Repl
+----------
`(require 'repl)'
Here is a read-eval-print-loop which, given an eval, evaluates forms.
- -- Procedure: repl:top-level repl:eval |
+ -- Procedure: repl:top-level repl:eval
`read's, `repl:eval's and `write's expressions from
`(current-input-port)' to `(current-output-port)' until an
end-of-file is encountered. `load', `slib:eval', `slib:error',
and `repl:quit' dynamically bound during `repl:top-level'.
- -- Procedure: repl:quit |
+ -- Procedure: repl:quit
Exits from the invocation of `repl:top-level'.
The `repl:' procedures establish, as much as is possible to do
@@ -14862,8 +15062,8 @@ catching lines and the following lines to your Scheme init file:

File: slib.info, Node: Quick Print, Next: Debug, Prev: Repl, Up: Session Support
-7.5.2 Quick Print |
------------------ |
+7.5.2 Quick Print
+-----------------
`(require 'qp)'
@@ -14877,16 +15077,16 @@ much improved.
variables `*print-level*' and `*print-level*' are set, huge
strings and bit-vectors are _not_ limited.
- -- Procedure: qp arg1 ... |
- -- Procedure: qpn arg1 ... |
- -- Procedure: qpr arg1 ... |
+ -- Procedure: qp arg1 ...
+ -- Procedure: qpn arg1 ...
+ -- Procedure: qpr arg1 ...
`qp' writes its arguments, separated by spaces, to
`(current-output-port)'. `qp' compresses printing by substituting
`...' for substructure it does not have sufficient room to print.
`qpn' is like `qp' but outputs a newline before returning. `qpr'
is like `qpn' except that it returns its last argument.
- -- Variable: *qp-width* |
+ -- Variable: *qp-width*
*QP-WIDTH* is the largest number of characters that `qp' should
use. If *QP-WIDTH* is #f, then all items will be `write'n. If
*QP-WIDTH* is 0, then all items except procedures will be
@@ -14895,8 +15095,8 @@ much improved.

File: slib.info, Node: Debug, Next: Breakpoints, Prev: Quick Print, Up: Session Support
-7.5.3 Debug |
------------ |
+7.5.3 Debug
+-----------
`(require 'debug)'
@@ -14909,71 +15109,71 @@ printer for `qp'. This example shows how to do this:
(provide 'qp)
(require 'debug)
- |
- -- Procedure: trace-all file ... |
+
+ -- Procedure: trace-all file ...
Traces (*note Trace::) all procedures `define'd at top-level in
`file' ....
- -- Procedure: track-all file ... |
+ -- Procedure: track-all file ...
Tracks (*note Trace::) all procedures `define'd at top-level in
`file' ....
- -- Procedure: stack-all file ... |
+ -- Procedure: stack-all file ...
Stacks (*note Trace::) all procedures `define'd at top-level in
`file' ....
- -- Procedure: break-all file ... |
+ -- Procedure: break-all file ...
Breakpoints (*note Breakpoints::) all procedures `define'd at
top-level in `file' ....

File: slib.info, Node: Breakpoints, Next: Trace, Prev: Debug, Up: Session Support
-7.5.4 Breakpoints |
------------------ |
+7.5.4 Breakpoints
+-----------------
`(require 'break)'
- -- Function: init-debug |
+ -- Function: init-debug
If your Scheme implementation does not support `break' or `abort',
a message will appear when you `(require 'break)' or `(require
'debug)' telling you to type `(init-debug)'. This is in order to
establish a top-level continuation. Typing `(init-debug)' at top
level sets up a continuation for `break'.
- -- Function: breakpoint arg1 ... |
+ -- Function: breakpoint arg1 ...
Returns from the top level continuation and pushes the
continuation from which it was called on a continuation stack.
- -- Function: continue |
+ -- Function: continue
Pops the topmost continuation off of the continuation stack and
returns an unspecified value to it.
- -- Function: continue arg1 ... |
+ -- Function: continue arg1 ...
Pops the topmost continuation off of the continuation stack and
returns ARG1 ... to it.
- -- Macro: break proc1 ... |
+ -- Macro: break proc1 ...
Redefines the top-level named procedures given as arguments so that
`breakpoint' is called before calling PROC1 ....
- -- Macro: break |
+ -- Macro: break
With no arguments, makes sure that all the currently broken
identifiers are broken (even if those identifiers have been
redefined) and returns a list of the broken identifiers.
- -- Macro: unbreak proc1 ... |
+ -- Macro: unbreak proc1 ...
Turns breakpoints off for its arguments.
- -- Macro: unbreak |
+ -- Macro: unbreak
With no arguments, unbreaks all currently broken identifiers and
returns a list of these formerly broken identifiers.
These are _procedures_ for breaking. If defmacros are not natively
supported by your implementation, these might be more convenient to use.
- -- Function: breakf proc |
- -- Function: breakf proc name |
+ -- Function: breakf proc
+ -- Function: breakf proc name
To break, type
(set! SYMBOL (breakf SYMBOL))
or
@@ -14983,15 +15183,15 @@ supported by your implementation, these might be more convenient to use.
or
(define SYMBOL (breakf FUNCTION 'SYMBOL))
- -- Function: unbreakf proc |
+ -- Function: unbreakf proc
To unbreak, type
(set! SYMBOL (unbreakf SYMBOL))

File: slib.info, Node: Trace, Prev: Breakpoints, Up: Session Support
-7.5.5 Tracing |
-------------- |
+7.5.5 Tracing
+-------------
`(require 'trace)'
@@ -15010,69 +15210,69 @@ trace
...' when the procdure is called; pops and prints `RETN
PROCEDURE-NAME VALUE' when the procedure returns.
- -- Variable: debug:max-count |
+ -- Variable: debug:max-count
If a traced procedure calls itself or untraced procedures which
call it, stack, track, and trace will limit the number of stack
pushes to DEBUG:MAX-COUNT.
- -- Function: print-call-stack |
- -- Function: print-call-stack port |
+ -- Function: print-call-stack
+ -- Function: print-call-stack port
Prints the call-stack to PORT or the current-error-port.
- -- Macro: trace proc1 ... |
+ -- Macro: trace proc1 ...
Traces the top-level named procedures given as arguments.
- -- Macro: trace |
+ -- Macro: trace
With no arguments, makes sure that all the currently traced
identifiers are traced (even if those identifiers have been
redefined) and returns a list of the traced identifiers.
- -- Macro: track proc1 ... |
+ -- Macro: track proc1 ...
Traces the top-level named procedures given as arguments.
- -- Macro: track |
+ -- Macro: track
With no arguments, makes sure that all the currently tracked
identifiers are tracked (even if those identifiers have been
redefined) and returns a list of the tracked identifiers.
- -- Macro: stack proc1 ... |
+ -- Macro: stack proc1 ...
Traces the top-level named procedures given as arguments.
- -- Macro: stack |
+ -- Macro: stack
With no arguments, makes sure that all the currently stacked
identifiers are stacked (even if those identifiers have been
redefined) and returns a list of the stacked identifiers.
- -- Macro: untrace proc1 ... |
+ -- Macro: untrace proc1 ...
Turns tracing, tracking, and off for its arguments.
- -- Macro: untrace |
+ -- Macro: untrace
With no arguments, untraces all currently traced identifiers and
returns a list of these formerly traced identifiers.
- -- Macro: untrack proc1 ... |
+ -- Macro: untrack proc1 ...
Turns tracing, tracking, and off for its arguments.
- -- Macro: untrack |
+ -- Macro: untrack
With no arguments, untracks all currently tracked identifiers and
returns a list of these formerly tracked identifiers.
- -- Macro: unstack proc1 ... |
+ -- Macro: unstack proc1 ...
Turns tracing, stacking, and off for its arguments.
- -- Macro: unstack |
+ -- Macro: unstack
With no arguments, unstacks all currently stacked identifiers and
returns a list of these formerly stacked identifiers.
These are _procedures_ for tracing. If defmacros are not natively
supported by your implementation, these might be more convenient to use.
- -- Function: tracef proc |
- -- Function: tracef proc name |
- -- Function: trackf proc |
- -- Function: trackf proc name |
- -- Function: stackf proc |
- -- Function: stackf proc name |
+ -- Function: tracef proc
+ -- Function: tracef proc name
+ -- Function: trackf proc
+ -- Function: trackf proc name
+ -- Function: stackf proc
+ -- Function: stackf proc name
To trace, type
(set! SYMBOL (tracef SYMBOL))
or
@@ -15082,26 +15282,26 @@ supported by your implementation, these might be more convenient to use.
or
(define SYMBOL (tracef FUNCTION 'SYMBOL))
- -- Function: untracef proc |
+ -- Function: untracef proc
Removes tracing, tracking, or stacking for PROC. To untrace, type
(set! SYMBOL (untracef SYMBOL))

File: slib.info, Node: System Interface, Next: Extra-SLIB Packages, Prev: Session Support, Up: Other Packages
-7.6 System Interface |
-==================== |
+7.6 System Interface
+====================
If `(provided? 'getenv)':
- -- Function: getenv name |
+ -- Function: getenv name
Looks up NAME, a string, in the program environment. If NAME is
found a string of its value is returned. Otherwise, `#f' is
returned.
If `(provided? 'system)':
- -- Function: system command-string |
+ -- Function: system command-string
Executes the COMMAND-STRING on the computer and returns the
integer status code.
@@ -15114,12 +15314,12 @@ If `(provided? 'system)':

File: slib.info, Node: Directories, Next: Transactions, Prev: System Interface, Up: System Interface
-7.6.1 Directories |
------------------ |
+7.6.1 Directories
+-----------------
`(require 'directory)'
- -- Function: current-directory |
+ -- Function: current-directory
`current-directory' returns a string containing the absolute file
name representing the current working directory. If this string
cannot be obtained, #f is returned.
@@ -15127,22 +15327,22 @@ File: slib.info, Node: Directories, Next: Transactions, Prev: System Interfac
If `current-directory' cannot be supported by the platform, then
#f is returned.
- -- Function: make-directory name |
+ -- Function: make-directory name
Creates a sub-directory NAME of the current-directory. If
successful, `make-directory' returns #t; otherwise #f.
- -- Function: directory-for-each proc directory |
+ -- Function: directory-for-each proc directory
PROC must be a procedure taking one argument.
`Directory-For-Each' applies PROC to the (string) name of each
file in DIRECTORY. The dynamic order in which PROC is applied to
the filenames is unspecified. The value returned by
`directory-for-each' is unspecified.
- -- Function: directory-for-each proc directory pred |
+ -- Function: directory-for-each proc directory pred
Applies PROC only to those filenames for which the procedure PRED
returns a non-false value.
- -- Function: directory-for-each proc directory match |
+ -- Function: directory-for-each proc directory match
Applies PROC only to those filenames for which `(filename:match??
MATCH)' would return a non-false value (*note Filenames:
(slib)Filenames.).
@@ -15156,8 +15356,8 @@ File: slib.info, Node: Directories, Next: Transactions, Prev: System Interfac

File: slib.info, Node: Transactions, Next: CVS, Prev: Directories, Up: System Interface
-7.6.2 Transactions |
------------------- |
+7.6.2 Transactions
+------------------
If `system' is provided by the Scheme implementation, the "transact"
package provides functions for file-locking and file-replacement
@@ -15186,8 +15386,8 @@ camps support contention detection and resolution only through weak
conventions of some their document editing programs.
The "file-lock" procedures implement a transaction method for file replacement
-compatible with the methods used by the GNU "emacs" text editor on Unix |
-systems and the Microsoft "Word" editor. |
+compatible with the methods used by the GNU "emacs" text editor on Unix
+systems and the Microsoft "Word" editor.
Both protocols employ what I term a "certificate" containing the user,
hostname, time, and (on Unix) process-id. Intent to replace FILE is
@@ -15200,12 +15400,12 @@ link to a certificate named for the visited FILE prefixed with `.#'.
Because Unix systems can import Microsoft file systems, these routines
maintain and check both Emacs and Word certificates.
- -- Function: file-lock-owner path |
+ -- Function: file-lock-owner path
Returns the string `USER@HOSTNAME' associated with the lock owner
of file PATH if locked; and #f otherwise.
- -- Procedure: file-lock! path email |
- -- Procedure: file-lock! path |
+ -- Procedure: file-lock! path email
+ -- Procedure: file-lock! path
PATH must be a string naming the file to be locked. If supplied,
EMAIL must be a string formatted as `USER@HOSTNAME'. If absent,
EMAIL defaults to the value returned by `user-email-address'.
@@ -15214,7 +15414,7 @@ maintain and check both Emacs and Word certificates.
PATH is unlocked, then `file-lock!' returns the certificate string
associated with the new lock for file PATH.
- -- Procedure: file-unlock! path certificate |
+ -- Procedure: file-unlock! path certificate
PATH must be a string naming the file to be unlocked. CERTIFICATE
must be the string returned by `file-lock!' for PATH.
@@ -15225,7 +15425,7 @@ maintain and check both Emacs and Word certificates.
File Transactions
.................
- -- Function: emacs:backup-name path backup-style |
+ -- Function: emacs:backup-name path backup-style
PATH must be a string. BACKUP-STYLE must be a symbol. Depending
on BACKUP-STYLE, `emacs:backup-name' returns:
none
@@ -15249,10 +15449,10 @@ File Transactions
bak
the string "PATH.bak"
- -- Function: transact-file-replacement proc path backup-style |
+ -- Function: transact-file-replacement proc path backup-style
certificate
- -- Function: transact-file-replacement proc path backup-style |
- -- Function: transact-file-replacement proc path |
+ -- Function: transact-file-replacement proc path backup-style
+ -- Function: transact-file-replacement proc path
PATH must be a string naming an existing file. BACKUP-STYLE is
one of the symbols none, simple, numbered, existing, orig, bak or
#f; with meanings described above; or a string naming the location
@@ -15285,7 +15485,7 @@ File Transactions
Identification
..............
- -- Function: user-email-address |
+ -- Function: user-email-address
`user-email-address' returns a string of the form
`username@hostname'. If this e-mail address cannot be obtained,
#f is returned.
@@ -15293,45 +15493,45 @@ Identification

File: slib.info, Node: CVS, Prev: Transactions, Up: System Interface
-7.6.3 CVS |
---------- |
+7.6.3 CVS
+---------
`(require 'cvs)'
- -- Function: cvs-files directory/ |
+ -- Function: cvs-files directory/
Returns a list of the local pathnames (with prefix DIRECTORY/) of
all CVS controlled files in DIRECTORY/ and in DIRECTORY/'s
subdirectories.
- -- Function: cvs-directories directory/ |
+ -- Function: cvs-directories directory/
Returns a list of all of DIRECTORY/ and all DIRECTORY/'s CVS
controlled subdirectories.
- -- Function: cvs-root path/ |
+ -- Function: cvs-root path/
Returns the (string) contents of PATH/CVS/Root; or `(getenv
"CVSROOT")' if Root doesn't exist.
- -- Function: cvs-repository directory/ |
+ -- Function: cvs-repository directory/
Returns the (string) contents of DIRECTORY/CVS/Root appended with
DIRECTORY/CVS/Repository; or #f if DIRECTORY/CVS/Repository
doesn't exist.
- -- Procedure: cvs-set-root! new-root directory/ |
- Writes NEW-ROOT to file CVS/Root of DIRECTORY/. |
- |
- -- Procedure: cvs-set-roots! new-root directory/ |
- Writes NEW-ROOT to file CVS/Root of DIRECTORY/ and all its CVS |
+ -- Procedure: cvs-set-root! new-root directory/
+ Writes NEW-ROOT to file CVS/Root of DIRECTORY/.
+
+ -- Procedure: cvs-set-roots! new-root directory/
+ Writes NEW-ROOT to file CVS/Root of DIRECTORY/ and all its CVS
subdirectories.
- -- Function: cvs-vet directory/ |
+ -- Function: cvs-vet directory/
Signals an error if CVS/Repository or CVS/Root files in DIRECTORY/
or any subdirectory do not match.

File: slib.info, Node: Extra-SLIB Packages, Prev: System Interface, Up: Other Packages
-7.7 Extra-SLIB Packages |
-======================= |
+7.7 Extra-SLIB Packages
+=======================
Several Scheme packages have been written using SLIB. There are several
reasons why a package might not be included in the SLIB distribution:
@@ -15355,9 +15555,9 @@ as easily as any other SLIB package. Some optional packages (for which
SLIB-PSD
is a portable debugger for Scheme (requires emacs editor).
- http://swiss.csail.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz |
+ http://swiss.csail.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz
- swiss.csail.mit.edu:/pub/scm/slib-psd1-3.tar.gz |
+ swiss.csail.mit.edu:/pub/scm/slib-psd1-3.tar.gz
ftp.maths.tcd.ie:pub/bosullvn/jacal/slib-psd1-3.tar.gz
@@ -15387,21 +15587,21 @@ JFILTER

File: slib.info, Node: About SLIB, Next: Index, Prev: Other Packages, Up: Top
-8 About SLIB |
-************ |
+8 About SLIB
+************
More people than I can name have contributed to SLIB. Thanks to all of
you!
- SLIB 3a2, released June 2005. |
+ SLIB 3a3, released February 2006. |
Aubrey Jaffer <agj @ alum.mit.edu>
Hyperactive Software - The Maniac Inside!
- `http://swiss.csail.mit.edu/~jaffer/SLIB.html' |
+ `http://swiss.csail.mit.edu/~jaffer/SLIB.html'
* Menu:
* Installation:: How to install SLIB on your system.
-* The SLIB script:: Run interactive SLIB sessions. |
+* The SLIB script:: Run interactive SLIB sessions.
* Porting:: SLIB to new platforms.
* Coding Guidelines:: How to write modules for SLIB.
* Copyrights:: Intellectual propery issues.
@@ -15409,16 +15609,16 @@ you!

File: slib.info, Node: Installation, Next: The SLIB script, Prev: About SLIB, Up: About SLIB
- |
-8.1 Installation |
-================ |
-There are five parts to installation: |
+8.1 Installation
+================
+
+There are five parts to installation:
* Unpack the SLIB distribution.
- * Install documentation and `slib' script. |
- |
+ * Install documentation and `slib' script.
+
* Configure the Scheme implementation(s) to locate the SLIB
directory.
@@ -15427,8 +15627,8 @@ There are five parts to installation: |
* Build the SLIB catalog for the Scheme implementation.
-8.1.1 Unpacking the SLIB Distribution |
-------------------------------------- |
+8.1.1 Unpacking the SLIB Distribution
+-------------------------------------
If the SLIB distribution is a Linux RPM, it will create the SLIB
directory `/usr/share/slib'.
@@ -15441,14 +15641,14 @@ this might be `/usr/share/slib', `/usr/local/lib/slib', or
`/usr/lib/slib'. If you know where SLIB should go on other platforms,
please inform agj @ alum.mit.edu.
-8.1.2 Install documentation and slib script |
-------------------------------------------- |
- |
- make infoz |
- make install |
- |
-8.1.3 Configure Scheme Implementation to Locate SLIB |
----------------------------------------------------- |
+8.1.2 Install documentation and slib script
+-------------------------------------------
+
+ make infoz
+ make install
+
+8.1.3 Configure Scheme Implementation to Locate SLIB
+----------------------------------------------------
If the Scheme implementation supports `getenv', then the value of the
shell environment variable SCHEME_LIBRARY_PATH will be used for
@@ -15460,8 +15660,8 @@ supports `getenv' but does not use it for determining
The `(library-vicinity)' can also be specified from the SLIB
initialization file or by implementation-specific means.
-8.1.4 Loading SLIB Initialization File |
--------------------------------------- |
+8.1.4 Loading SLIB Initialization File
+--------------------------------------
Check the manifest in `README' to find a configuration file for your
Scheme implementation. Initialization files for most IEEE P1178
@@ -15475,8 +15675,8 @@ the file for how to configure it.
Once this is done, modify the startup file for your Scheme
implementation to `load' this initialization file.
-8.1.5 Build New SLIB Catalog for Implementation |
------------------------------------------------ |
+8.1.5 Build New SLIB Catalog for Implementation
+-----------------------------------------------
When SLIB is first used from an implementation, a file named `slibcat'
is written to the `implementation-vicinity' for that implementation.
@@ -15496,65 +15696,65 @@ SLIB-installed scheme implementation, type:
(require 'new-catalog)
(slib:exit)
-8.1.6 Implementation-specific Instructions |
------------------------------------------- |
+8.1.6 Implementation-specific Instructions
+------------------------------------------
Multiple implementations of Scheme can all use the same SLIB directory.
Simply configure each implementation's initialization file as outlined
above.
- -- Implementation: SCM |
+ -- Implementation: SCM
The SCM implementation does not require any initialization file as
SLIB support is already built into SCM. See the documentation
with SCM for installation instructions.
- -- Implementation: PLT Scheme |
- -- Implementation: DrScheme |
- -- Implementation: MzScheme |
- The `init.ss' file in the _slibinit_ collection is an SLIB |
- initialization file. |
- |
- To use SLIB in MzScheme, set the SCHEME_LIBRARY_PATH environment |
- variable to the installed SLIB location; then invoke MzScheme thus: |
- |
- `mzscheme -f ${SCHEME_LIBRARY_PATH}DrScheme.init' |
- |
- -- Implementation: MIT Scheme |
- `scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init' |
- |
- -- Implementation: Gambit-C 3.0 |
- `$command -:s ${SCHEME_LIBRARY_PATH}gambit.init -' |
- |
- -- Implementation: Guile |
- Guile versions 1.6 and earlier link to an archaic SLIB version. In |
- RedHat or Fedora installations: |
- |
- rm /usr/share/guile/slib |
- ln -s ${SCHEME_LIBRARY_PATH} /usr/share/guile/slib |
- |
- In Debian installations: |
- |
- rm /usr/share/guile/1.6/slib |
- ln -s ${SCHEME_LIBRARY_PATH} /usr/share/guile/1.6/slib |
- |
- `${SCHEME_LIBRARY_PATH}' is where SLIB gets installed. |
- |
- Guile with SLIB can then be started thus: |
- |
- `guile -l ${SCHEME_LIBRARY_PATH}guile.init' |
- |
- -- Implementation: Scheme48 |
- To make a Scheme48 image for an installation under `<prefix>', |
- |
- 1. `cd' to the SLIB directory |
- |
- 2. type `make prefix=<prefix> slib48'. |
- |
- 3. To install the image, type `make prefix=<prefix> install48'. |
- This will also create a shell script with the name `slib48' |
- which will invoke the saved image. |
- |
- -- Implementation: VSCM |
+ -- Implementation: PLT Scheme
+ -- Implementation: DrScheme
+ -- Implementation: MzScheme
+ The `init.ss' file in the _slibinit_ collection is an SLIB
+ initialization file.
+
+ To use SLIB in MzScheme, set the SCHEME_LIBRARY_PATH environment
+ variable to the installed SLIB location; then invoke MzScheme thus:
+
+ `mzscheme -f ${SCHEME_LIBRARY_PATH}DrScheme.init'
+
+ -- Implementation: MIT Scheme
+ `scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init'
+
+ -- Implementation: Gambit-C 3.0
+ `$command -:s ${SCHEME_LIBRARY_PATH}gambit.init -'
+
+ -- Implementation: Guile
+ Guile versions 1.6 and earlier link to an archaic SLIB version. In
+ RedHat or Fedora installations:
+
+ rm /usr/share/guile/slib
+ ln -s ${SCHEME_LIBRARY_PATH} /usr/share/guile/slib
+
+ In Debian installations:
+
+ rm /usr/share/guile/1.6/slib
+ ln -s ${SCHEME_LIBRARY_PATH} /usr/share/guile/1.6/slib
+
+ `${SCHEME_LIBRARY_PATH}' is where SLIB gets installed.
+
+ Guile with SLIB can then be started thus:
+
+ `guile -l ${SCHEME_LIBRARY_PATH}guile.init'
+
+ -- Implementation: Scheme48
+ To make a Scheme48 image for an installation under `<prefix>',
+
+ 1. `cd' to the SLIB directory
+
+ 2. type `make prefix=<prefix> slib48'.
+
+ 3. To install the image, type `make prefix=<prefix> install48'.
+ This will also create a shell script with the name `slib48'
+ which will invoke the saved image.
+
+ -- Implementation: VSCM
From: Matthias Blume <blume @ cs.Princeton.EDU>
Date: Tue, 1 Mar 1994 11:42:31 -0500
@@ -15580,26 +15780,26 @@ above.

File: slib.info, Node: The SLIB script, Next: Porting, Prev: Installation, Up: About SLIB
- |
-8.2 The SLIB script |
-=================== |
-SLIB comes with shell script for Unix platforms. |
+8.2 The SLIB script
+===================
- slib [ scm | gsi | mzscheme | guile | slib48 | scheme48 | scmlit ] |
- |
+SLIB comes with shell script for Unix platforms.
+
+ slib [ scm | gsi | mzscheme | guile | slib48 | scheme48 | scmlit ]
-Starts an interactive Scheme-with-SLIB session. |
-The optional argument to the `slib' script is the Scheme implementation |
-to run. Absent the argument, it searches for implementations in the |
-above order. |
+Starts an interactive Scheme-with-SLIB session.
+
+The optional argument to the `slib' script is the Scheme implementation
+to run. Absent the argument, it searches for implementations in the
+above order.

File: slib.info, Node: Porting, Next: Coding Guidelines, Prev: The SLIB script, Up: About SLIB
- |
-8.3 Porting |
-=========== |
+
+8.3 Porting
+===========
If there is no initialization file for your Scheme implementation, you
will have to create one. Your Scheme implementation must be largely
@@ -15635,8 +15835,8 @@ Language Scheme' implementation, then you will need to finish writing

File: slib.info, Node: Coding Guidelines, Next: Copyrights, Prev: Porting, Up: About SLIB
-8.4 Coding Guidelines |
-===================== |
+8.4 Coding Guidelines
+=====================
All library packages are written in IEEE P1178 Scheme and assume that a
configuration file and `require.scm' package have already been loaded.
@@ -15670,8 +15870,8 @@ but documentation must be provided.
which tests your code. Please run this test _before_ you send me the
code!
-8.4.1 Modifications |
-------------------- |
+8.4.1 Modifications
+-------------------
Please document your changes. A line or two for `ChangeLog' is
sufficient for simple fixes or extensions. Look at the format of
@@ -15694,8 +15894,8 @@ fixes.

File: slib.info, Node: Copyrights, Next: About this manual, Prev: Coding Guidelines, Up: About SLIB
-8.5 Copyrights |
-============== |
+8.5 Copyrights
+==============
This section has instructions for SLIB authors regarding copyrights.
@@ -15707,8 +15907,8 @@ modify it. The comments at the beginning of `require.scm' and
If your code or changes amount to less than about 10 lines, you do not
need to add your copyright or send a disclaimer.
-8.5.1 Putting code into the Public Domain |
------------------------------------------ |
+8.5.1 Putting code into the Public Domain
+-----------------------------------------
In order to put code in the public domain you should sign a copyright
disclaimer and send it to the SLIB maintainer. Contact agj @
@@ -15735,8 +15935,8 @@ and have your employer sign it. Mail the signed disclaimer to the SLIB
maintainer. Contact agj @ alum.mit.edu for the address to mail the
disclaimer to. An example disclaimer follows.
-8.5.2 Explicit copying terms |
----------------------------- |
+8.5.2 Explicit copying terms
+----------------------------
If you submit more than about 10 lines of code which you are not
placing into the Public Domain (by sending me a disclaimer) you need to:
@@ -15753,8 +15953,8 @@ placing into the Public Domain (by sending me a disclaimer) you need to:
disclaim to the SLIB maintainer. Contact agj @ alum.mit.edu for
the address to mail the disclaimer to.
-8.5.3 Example: Company Copyright Disclaimer |
-------------------------------------------- |
+8.5.3 Example: Company Copyright Disclaimer
+-------------------------------------------
This disclaimer should be signed by a vice president or general manager
of the company. If you can't get at them, anyone else authorized to
@@ -15773,8 +15973,8 @@ license out software produced there will do. Here is a sample wording:

File: slib.info, Node: About this manual, Prev: Copyrights, Up: About SLIB
-8.6 About this manual |
-===================== |
+8.6 About this manual
+=====================
* Entries that are labeled as Functions are called for their return
values. Entries that are labeled as Procedures are called
@@ -15784,1938 +15984,1960 @@ File: slib.info, Node: About this manual, Prev: Copyrights, Up: About SLIB
implementation.
* At the beginning of each section, there is a line that looks like `(require
- 'feature)'. Include this line in your code prior to using the |
- package. |
+ 'feature)'. Include this line in your code prior to using the
+ package.

File: slib.info, Node: Index, Prev: About SLIB, Up: Top
-Index |
-***** |
- |
+Index
+*****
+
Procedure and Macro Index
*************************
This is an alphabetical list of all the procedures and macros in SLIB.
-
+
* Menu:
* -: Multi-argument / and -.
- (line 14) |
-* -1+: Rev2 Procedures. (line 42) |
+ (line 14)
+* -1+: Rev2 Procedures. (line 42)
* /: Multi-argument / and -.
- (line 12) |
-* 1+: Rev2 Procedures. (line 39) |
-* <=?: Rev2 Procedures. (line 46) |
-* <?: Rev2 Procedures. (line 45) |
-* =: Hilbert Space-Filling Curve. |
- (line 72) |
-* =?: Rev2 Procedures. (line 47) |
-* >=?: Rev2 Procedures. (line 49) |
-* >?: Rev2 Procedures. (line 48) |
-* a:bool: Arrays. (line 236) |
-* a:fixn16b: Arrays. (line 226) |
-* a:fixn32b: Arrays. (line 221) |
-* a:fixn64b: Arrays. (line 216) |
-* a:fixn8b: Arrays. (line 231) |
-* a:fixz16b: Arrays. (line 206) |
-* a:fixz32b: Arrays. (line 201) |
-* a:fixz64b: Arrays. (line 196) |
-* a:fixz8b: Arrays. (line 211) |
-* a:floc128b: Arrays. (line 149) |
-* a:floc16b: Arrays. (line 161) |
-* a:floc32b: Arrays. (line 157) |
-* a:floc64b: Arrays. (line 153) |
-* a:flor128b: Arrays. (line 165) |
-* a:flor16b: Arrays. (line 177) |
-* a:flor32b: Arrays. (line 173) |
-* a:flor64b: Arrays. (line 169) |
-* abort: Session Support. (line 9) |
-* absolute-path?: URI. (line 102) |
-* absolute-uri?: URI. (line 98) |
-* add-command-tables: Database Extension. (line 11) |
-* add-domain: Using Databases. (line 131) |
-* add-domain on relational-database: Command Intrinsics. (line 10) |
-* add-macro-support: Within-database. (line 52) |
-* add-process!: Multi-Processing. (line 14) |
-* add-setter: Setters. (line 43) |
-* adjoin: Lists as sets. (line 10) |
-* adjoin-parameters!: Parameter lists. (line 38) |
+ (line 12)
+* 1+: Rev2 Procedures. (line 39)
+* <=?: Rev2 Procedures. (line 46)
+* <?: Rev2 Procedures. (line 45)
+* =: Hilbert Space-Filling Curve.
+ (line 72)
+* =?: Rev2 Procedures. (line 47)
+* >=?: Rev2 Procedures. (line 49)
+* >?: Rev2 Procedures. (line 48)
+* a:bool: Arrays. (line 236)
+* a:fixn16b: Arrays. (line 226)
+* a:fixn32b: Arrays. (line 221)
+* a:fixn64b: Arrays. (line 216)
+* a:fixn8b: Arrays. (line 231)
+* a:fixz16b: Arrays. (line 206)
+* a:fixz32b: Arrays. (line 201)
+* a:fixz64b: Arrays. (line 196)
+* a:fixz8b: Arrays. (line 211)
+* a:floc128b: Arrays. (line 149)
+* a:floc16b: Arrays. (line 161)
+* a:floc32b: Arrays. (line 157)
+* a:floc64b: Arrays. (line 153)
+* a:flor128b: Arrays. (line 165)
+* a:flor16b: Arrays. (line 177)
+* a:flor32b: Arrays. (line 173)
+* a:flor64b: Arrays. (line 169)
+* abort: Session Support. (line 9)
+* absolute-path?: URI. (line 102)
+* absolute-uri?: URI. (line 98)
+* add-command-tables: Database Extension. (line 11)
+* add-domain: Using Databases. (line 131)
+* add-domain on relational-database: Command Intrinsics. (line 10)
+* add-macro-support: Within-database. (line 52)
+* add-process!: Multi-Processing. (line 14)
+* add-setter: Setters. (line 43)
+* adjoin: Lists as sets. (line 10)
+* adjoin-parameters!: Parameter lists. (line 38)
* alist->wt-tree: Construction of Weight-Balanced Trees.
- (line 65) |
-* alist-associator: Association Lists. (line 28) |
-* alist-cons: SRFI-1. (line 178) |
-* alist-copy: SRFI-1. (line 180) |
-* alist-delete: SRFI-1. (line 182) |
-* alist-delete!: SRFI-1. (line 185) |
-* alist-for-each: Association Lists. (line 53) |
-* alist-inquirer: Association Lists. (line 23) |
-* alist-map: Association Lists. (line 48) |
-* alist-remover: Association Lists. (line 39) |
-* alist-table: The Base. (line 12) |
-* and-let*: SRFI-2. (line 9) |
-* and?: Non-List functions. (line 7) |
-* any: SRFI-1. (line 156) |
-* any-bits-set?: Bit-Twiddling. (line 64) |
-* any?: Collections. (line 83) |
-* append!: Rev2 Procedures. (line 36) |
-* append-reverse: SRFI-1. (line 95) |
-* append-reverse!: SRFI-1. (line 96) |
+ (line 65)
+* alist-associator: Association Lists. (line 28)
+* alist-cons: SRFI-1. (line 178)
+* alist-copy: SRFI-1. (line 180)
+* alist-delete: SRFI-1. (line 182)
+* alist-delete!: SRFI-1. (line 185)
+* alist-for-each: Association Lists. (line 53)
+* alist-inquirer: Association Lists. (line 23)
+* 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?: Non-List functions. (line 7)
+* any: SRFI-1. (line 156)
+* any-bits-set?: Bit-Twiddling. (line 64)
+* any?: Collections. (line 83)
+* append!: Rev2 Procedures. (line 36)
+* append-reverse: SRFI-1. (line 95)
+* append-reverse!: SRFI-1. (line 96)
* apply: Multi-argument Apply.
- (line 12) |
-* arithmetic-shift: Bit-Twiddling. (line 182) |
-* array->list: Arrays. (line 101) |
-* array->vector: Arrays. (line 124) |
-* array-dimensions: Arrays. (line 48) |
-* array-for-each: Array Mapping. (line 25) |
-* array-in-bounds?: Arrays. (line 133) |
-* array-index-map!: Array Mapping. (line 34) |
-* array-indexes: Array Mapping. (line 29) |
-* array-map: Array Mapping. (line 17) |
-* array-map!: Array Mapping. (line 9) |
-* array-rank: Arrays. (line 44) |
-* array-ref: Arrays. (line 136) |
-* array-set!: Arrays. (line 139) |
-* array-trim: Subarrays. (line 44) |
-* 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) |
-* atom?: Non-List functions. (line 30) |
-* batch:call-with-output-script: Batch. (line 47) |
-* batch:command: Batch. (line 64) |
-* batch:comment: Batch. (line 95) |
-* batch:delete-file: Batch. (line 102) |
-* batch:initialize!: Batch. (line 36) |
-* batch:lines->file: Batch. (line 98) |
-* batch:rename-file: Batch. (line 106) |
-* batch:run-script: Batch. (line 88) |
-* batch:try-chopped-command: Batch. (line 76) |
-* batch:try-command: Batch. (line 72) |
-* bit-count: Bit-Twiddling. (line 74) |
-* bit-field: Bit-Twiddling. (line 156) |
-* bit-set?: Bit-Twiddling. (line 135) |
+ (line 12)
+* arithmetic-shift: Bit-Twiddling. (line 182)
+* array->list: Arrays. (line 101)
+* array->vector: Arrays. (line 124)
+* array-dimensions: Arrays. (line 48)
+* array-for-each: Array Mapping. (line 25)
+* array-in-bounds?: Arrays. (line 133)
+* array-index-map!: Array Mapping. (line 34)
+* array-indexes: Array Mapping. (line 29)
+* array-map: Array Mapping. (line 17)
+* array-map!: Array Mapping. (line 9)
+* array-rank: Arrays. (line 44)
+* array-ref: Arrays. (line 136)
+* array-set!: Arrays. (line 139)
+* array-trim: Subarrays. (line 44)
+* 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)
+* atom?: Non-List functions. (line 30)
+* batch:call-with-output-script: Batch. (line 47)
+* batch:command: Batch. (line 64)
+* batch:comment: Batch. (line 95)
+* batch:delete-file: Batch. (line 102)
+* batch:initialize!: Batch. (line 36)
+* batch:lines->file: Batch. (line 98)
+* batch:rename-file: Batch. (line 106)
+* batch:run-script: Batch. (line 88)
+* batch:try-chopped-command: Batch. (line 76)
+* batch:try-command: Batch. (line 72)
+* bit-count: Bit-Twiddling. (line 74)
+* bit-field: Bit-Twiddling. (line 156)
+* bit-set?: Bit-Twiddling. (line 135)
* bitwise-and: Bit-Twiddling. (line 19) |
-* bitwise-delaminate: Hilbert Space-Filling Curve. |
- (line 90) |
-* bitwise-if: Bit-Twiddling. (line 56) |
+* bitwise-if: Bit-Twiddling. (line 56)
* bitwise-ior: Bit-Twiddling. (line 28) |
-* bitwise-laminate: Hilbert Space-Filling Curve. |
- (line 89) |
-* bitwise-merge: Bit-Twiddling. (line 57) |
-* bitwise-not: Bit-Twiddling. (line 46) |
-* bitwise-xor: Bit-Twiddling. (line 37) |
-* blackbody-spectrum: Spectra. (line 125) |
-* booleans->integer: Bit-Twiddling. (line 229) |
-* break <1>: Breakpoints. (line 28) |
-* break: SRFI-1. (line 152) |
-* break!: SRFI-1. (line 154) |
-* break-all: Debug. (line 31) |
-* breakf: Breakpoints. (line 47) |
-* breakpoint: Breakpoints. (line 16) |
-* browse: Database Browser. (line 9) |
-* browse-url: System. (line 60) |
-* butlast: Lists as sequences. (line 121) |
-* butnthcdr: Lists as sequences. (line 147) |
-* byte-ref: Byte. (line 14) |
-* byte-set!: Byte. (line 18) |
-* bytes: Byte. (line 32) |
+* bitwise-merge: Bit-Twiddling. (line 57)
+* bitwise-not: Bit-Twiddling. (line 46)
+* bitwise-xor: Bit-Twiddling. (line 37)
+* blackbody-spectrum: Spectra. (line 125)
+* booleans->integer: Bit-Twiddling. (line 229)
+* break <1>: Breakpoints. (line 28)
+* break: SRFI-1. (line 152)
+* break!: SRFI-1. (line 154)
+* break-all: Debug. (line 31)
+* breakf: Breakpoints. (line 47)
+* breakpoint: Breakpoints. (line 16)
+* browse: Database Browser. (line 9)
+* browse-url: System. (line 60)
+* butlast: Lists as sequences. (line 121)
+* butnthcdr: Lists as sequences. (line 147)
+* byte-ref: Byte. (line 14)
+* byte-set!: Byte. (line 18)
+* bytes: Byte. (line 32)
* bytes->ieee-double: Byte/Number Conversions.
- (line 58) |
+ (line 60) |
* bytes->ieee-float: Byte/Number Conversions.
- (line 41) |
+ (line 41)
* bytes->integer: Byte/Number Conversions.
- (line 17) |
-* 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) |
-* 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) |
-* call-with-output-string: String Ports. (line 9) |
-* call-with-tmpnam: Filenames. (line 74) |
-* call-with-values: Values. (line 13) |
-* capture-syntactic-environment: Syntactic Closures. (line 211) |
-* car+cdr: SRFI-1. (line 68) |
+ (line 17)
+* 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)
+* 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)
+* call-with-output-string: String Ports. (line 9)
+* call-with-tmpnam: Filenames. (line 74)
+* call-with-values: Values. (line 13)
+* capture-syntactic-environment: Syntactic Closures. (line 211)
+* car+cdr: SRFI-1. (line 68)
* cart-prod-tables on relational-database: Database Operations.
- (line 78) |
-* catalog->html: HTML Tables. (line 49) |
-* catalog-id on base-table: Base Tables. (line 30) |
-* catalog:read: Catalog Vicinities. (line 57) |
-* cdna:base-count: NCBI-DNA. (line 35) |
-* cdna:report-base-count: NCBI-DNA. (line 39) |
-* cgi:serve-query: HTTP and CGI. (line 69) |
-* chap:next-string: Chapter Ordering. (line 29) |
-* chap:string<=?: Chapter Ordering. (line 25) |
-* chap:string<?: Chapter Ordering. (line 14) |
-* chap:string>=?: Chapter Ordering. (line 26) |
-* chap:string>?: Chapter Ordering. (line 24) |
-* check-parameters: Parameter lists. (line 59) |
-* chromaticity->CIEXYZ: Spectra. (line 169) |
-* chromaticity->whitepoint: Spectra. (line 172) |
+ (line 78)
+* catalog->html: HTML Tables. (line 49)
+* catalog-id on base-table: Base Tables. (line 30)
+* catalog:read: Catalog Vicinities. (line 57)
+* cdna:base-count: NCBI-DNA. (line 35)
+* cdna:report-base-count: NCBI-DNA. (line 39)
+* cgi:serve-query: HTTP and CGI. (line 69)
+* chap:next-string: Chapter Ordering. (line 29)
+* chap:string<=?: Chapter Ordering. (line 25)
+* chap:string<?: Chapter Ordering. (line 14)
+* chap:string>=?: Chapter Ordering. (line 26)
+* chap:string>?: Chapter Ordering. (line 24)
+* check-parameters: Parameter lists. (line 59)
+* chromaticity->CIEXYZ: Spectra. (line 169)
+* chromaticity->whitepoint: Spectra. (line 172)
* CIE:DE*: Color Difference Metrics.
- (line 20) |
+ (line 20)
* CIE:DE*94: Color Difference Metrics.
- (line 27) |
-* ciexyz->color: Color Spaces. (line 25) |
-* CIEXYZ->e-sRGB: Color Conversions. (line 56) |
-* CIEXYZ->L*a*b*: Color Conversions. (line 38) |
-* CIEXYZ->L*u*v*: Color Conversions. (line 32) |
-* CIEXYZ->RGB709: Color Conversions. (line 29) |
-* CIEXYZ->sRGB: Color Conversions. (line 47) |
-* CIEXYZ->xRGB: Color Conversions. (line 50) |
-* circular-list: SRFI-1. (line 32) |
-* circular-list?: SRFI-1. (line 40) |
-* cksum: Cyclic Checksum. (line 149) |
-* clear-sky-color-xyy: Daylight. (line 84) |
-* clip-to-rect: Rectangles. (line 36) |
-* close-base on base-table: The Base. (line 60) |
-* close-database: Using Databases. (line 89) |
-* close-database on relational-database: Database Operations. (line 20) |
-* close-port: Input/Output. (line 47) |
+ (line 27)
+* ciexyz->color: Color Spaces. (line 25)
+* CIEXYZ->e-sRGB: Color Conversions. (line 56)
+* CIEXYZ->L*a*b*: Color Conversions. (line 38)
+* CIEXYZ->L*u*v*: Color Conversions. (line 32)
+* CIEXYZ->RGB709: Color Conversions. (line 29)
+* CIEXYZ->sRGB: Color Conversions. (line 47)
+* CIEXYZ->xRGB: Color Conversions. (line 50)
+* circular-list: SRFI-1. (line 32)
+* circular-list?: SRFI-1. (line 40)
+* cksum: Cyclic Checksum. (line 149)
+* clear-sky-color-xyy: Daylight. (line 84)
+* clip-to-rect: Rectangles. (line 36)
+* close-base on base-table: The Base. (line 60)
+* close-database: Using Databases. (line 89)
+* close-database on relational-database: Database Operations. (line 20)
+* close-port: Input/Output. (line 47)
* close-table on relational-table: Table Administration.
- (line 20) |
+ (line 20)
* CMC-DE: Color Difference Metrics.
- (line 61) |
+ (line 61)
* CMC:DE*: Color Difference Metrics.
- (line 65) |
-* codons<-cdna: NCBI-DNA. (line 18) |
-* coerce: Type Coercion. (line 12) |
-* collection?: Collections. (line 36) |
-* color->ciexyz: Color Spaces. (line 34) |
-* color->e-srgb: Color Spaces. (line 252) |
-* color->l*a*b*: Color Spaces. (line 91) |
-* color->l*c*h: Color Spaces. (line 166) |
-* color->l*u*v*: Color Spaces. (line 115) |
-* color->rgb709: Color Spaces. (line 55) |
-* color->srgb: Color Spaces. (line 209) |
-* color->string: Color Data-Type. (line 95) |
-* color->xrgb: Color Spaces. (line 212) |
-* color-dictionaries->lookup: Color Names. (line 33) |
-* color-dictionary: Color Names. (line 40) |
-* color-name->color: Color Names. (line 27) |
-* color-name:canonicalize: Color Names. (line 23) |
-* color-precision: Color Data-Type. (line 46) |
-* color-space: Color Data-Type. (line 43) |
-* color-white-point: Color Data-Type. (line 51) |
-* color:ciexyz: Color Spaces. (line 30) |
-* color:e-srgb: Color Spaces. (line 241) |
-* color:l*a*b*: Color Spaces. (line 83) |
-* color:l*c*h: Color Spaces. (line 159) |
-* color:l*u*v*: Color Spaces. (line 107) |
-* color:linear-transform: Color Conversions. (line 27) |
-* color:rgb709: Color Spaces. (line 51) |
-* color:srgb: Color Spaces. (line 200) |
-* color?: Color Data-Type. (line 9) |
+ (line 65)
+* codons<-cdna: NCBI-DNA. (line 18)
+* coerce: Type Coercion. (line 12)
+* collection?: Collections. (line 36)
+* color->ciexyz: Color Spaces. (line 34)
+* color->e-srgb: Color Spaces. (line 252)
+* color->l*a*b*: Color Spaces. (line 91)
+* color->l*c*h: Color Spaces. (line 166)
+* color->l*u*v*: Color Spaces. (line 115)
+* color->rgb709: Color Spaces. (line 55)
+* color->srgb: Color Spaces. (line 209)
+* color->string: Color Data-Type. (line 95)
+* color->xrgb: Color Spaces. (line 212)
+* color-dictionaries->lookup: Color Names. (line 33)
+* color-dictionary: Color Names. (line 40)
+* color-name->color: Color Names. (line 27)
+* color-name:canonicalize: Color Names. (line 23)
+* color-precision: Color Data-Type. (line 46)
+* color-space: Color Data-Type. (line 43)
+* color-white-point: Color Data-Type. (line 51)
+* color:ciexyz: Color Spaces. (line 30)
+* color:e-srgb: Color Spaces. (line 241)
+* color:l*a*b*: Color Spaces. (line 83)
+* color:l*c*h: Color Spaces. (line 159)
+* color:l*u*v*: Color Spaces. (line 107)
+* color:linear-transform: Color Conversions. (line 27)
+* color:rgb709: Color Spaces. (line 51)
+* color:srgb: Color Spaces. (line 200)
+* color?: Color Data-Type. (line 9)
* column-domains on relational-table: Table Administration.
- (line 9) |
+ (line 9)
* column-foreigns on relational-table: Table Administration.
- (line 8) |
+ (line 8)
* column-names on relational-table: Table Administration.
- (line 7) |
-* column-range: Column Ranges. (line 10) |
+ (line 7)
+* column-range: Column Ranges. (line 10)
* column-types on relational-table: Table Administration.
- (line 10) |
-* combine-ranges: Column Ranges. (line 19) |
-* combined-rulesets: Commutative Rings. (line 90) |
-* command->p-specs: HTML. (line 149) |
-* command:make-editable-table: HTML Tables. (line 98) |
-* command:modify-table: HTML Tables. (line 87) |
-* concatenate: SRFI-1. (line 90) |
-* concatenate!: SRFI-1. (line 91) |
-* cond-expand: SRFI. (line 20) |
-* cons*: SRFI-1. (line 22) |
-* continue: Breakpoints. (line 20) |
-* convert-color: Color Data-Type. (line 54) |
-* copy-bit: Bit-Twiddling. (line 144) |
-* copy-bit-field: Bit-Twiddling. (line 167) |
-* copy-list: List construction. (line 32) |
+ (line 10)
+* combine-ranges: Column Ranges. (line 19)
+* combined-rulesets: Commutative Rings. (line 90)
+* command->p-specs: HTML. (line 149)
+* command:make-editable-table: HTML Tables. (line 98)
+* 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) |
+* cons*: SRFI-1. (line 22)
+* continue: Breakpoints. (line 20)
+* convert-color: Color Data-Type. (line 54)
+* copy-bit: Bit-Twiddling. (line 144)
+* copy-bit-field: Bit-Twiddling. (line 167)
+* copy-list: List construction. (line 32)
* copy-random-state: Exact Random Numbers.
- (line 29) |
-* copy-tree: Tree Operations. (line 33) |
-* count: SRFI-1. (line 106) |
-* count-newlines: String Search. (line 61) |
-* crc16: Cyclic Checksum. (line 167) |
-* crc5: Cyclic Checksum. (line 178) |
-* crc:make-table: Cyclic Checksum. (line 131) |
-* create-array: Arrays. (line 66) |
-* create-database: Using Databases. (line 43) |
+ (line 29)
+* copy-tree: Tree Operations. (line 33)
+* count: SRFI-1. (line 106)
+* count-newlines: String Search. (line 61)
+* crc16: Cyclic Checksum. (line 167)
+* crc5: Cyclic Checksum. (line 178)
+* crc:make-table: Cyclic Checksum. (line 131)
+* create-array: Arrays. (line 66)
+* create-database: Using Databases. (line 43)
* create-database on relational-system: Relational Database Objects.
- (line 34) |
-* create-postscript-graph: PostScript Graphing. (line 17) |
-* create-table on relational-database: Database Operations. (line 64) |
-* create-view on relational-database: Database Operations. (line 75) |
-* cring:define-rule: Commutative Rings. (line 116) |
-* ctime: Posix Time. (line 68) |
-* current-directory: Directories. (line 9) |
-* current-error-port: Input/Output. (line 70) |
-* current-input-port <1>: Byte. (line 74) |
+ (line 34)
+* create-postscript-graph: PostScript Graphing. (line 17)
+* create-table on relational-database: Database Operations. (line 64)
+* create-view on relational-database: Database Operations. (line 75)
+* cring:define-rule: Commutative Rings. (line 116)
+* 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: Ruleset Definition and Use.
- (line 57) |
-* current-output-port: Byte. (line 66) |
-* current-time: Time and Date. (line 20) |
-* cvs-directories: CVS. (line 14) |
-* cvs-files: CVS. (line 9) |
-* cvs-repository: CVS. (line 22) |
-* cvs-root: CVS. (line 18) |
-* cvs-set-root!: CVS. (line 27) |
-* cvs-set-roots!: CVS. (line 30) |
-* cvs-vet: CVS. (line 34) |
-* db->html-directory: HTML Tables. (line 147) |
-* db->html-files: HTML Tables. (line 137) |
-* db->netscape: HTML Tables. (line 158) |
-* decode-universal-time: Common-Lisp Time. (line 15) |
-* define-*commands*: Database Extension. (line 16) |
-* define-access-operation: Setters. (line 53) |
-* define-command: Within-database. (line 17) |
-* define-domains: Using Databases. (line 124) |
-* define-macro: Within-database. (line 58) |
-* define-operation: Yasos interface. (line 7) |
-* define-predicate: Yasos interface. (line 12) |
-* define-record-type: SRFI-9. (line 12) |
-* define-structure: Define-Structure. (line 12) |
-* define-syntax: Macro by Example. (line 39) |
-* define-table: Within-database. (line 26) |
-* define-tables: Using Databases. (line 134) |
-* defmacro: Defmacro. (line 40) |
-* defmacro:eval: Defmacro. (line 15) |
-* defmacro:expand*: Defmacro. (line 51) |
-* defmacro:load: Defmacro. (line 19) |
-* defmacro?: Defmacro. (line 27) |
-* delaminate-list: Hilbert Space-Filling Curve. |
- (line 108) |
-* delay: Promises. (line 15) |
+ (line 57)
+* current-output-port: Byte. (line 66)
+* current-time: Time and Date. (line 20)
+* cvs-directories: CVS. (line 14)
+* cvs-files: CVS. (line 9)
+* cvs-repository: CVS. (line 22)
+* cvs-root: CVS. (line 18)
+* cvs-set-root!: CVS. (line 27)
+* cvs-set-roots!: CVS. (line 30)
+* cvs-vet: CVS. (line 34)
+* db->html-directory: HTML Tables. (line 147)
+* db->html-files: HTML Tables. (line 137)
+* db->netscape: HTML Tables. (line 158)
+* decode-universal-time: Common-Lisp Time. (line 15)
+* define-*commands*: Database Extension. (line 16)
+* define-access-operation: Setters. (line 53)
+* define-command: Within-database. (line 17)
+* define-domains: Using Databases. (line 124)
+* 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-structure: Define-Structure. (line 12)
+* define-syntax: Macro by Example. (line 39)
+* define-table: Within-database. (line 26)
+* define-tables: Using Databases. (line 134)
+* defmacro: Defmacro. (line 40)
+* defmacro:eval: Defmacro. (line 15)
+* defmacro:expand*: Defmacro. (line 51)
+* defmacro:load: Defmacro. (line 19)
+* defmacro?: Defmacro. (line 27)
+* delaminate-list: Hilbert Space-Filling Curve.
+ (line 89) |
+* delay: Promises. (line 15)
* delete: Destructive list operations.
- (line 58) |
+ (line 58)
* delete on base-table: Base Record Operations.
- (line 37) |
+ (line 37)
* delete* on base-table: Aggregate Base Operations.
- (line 11) |
-* delete-domain on relational-database: Command Intrinsics. (line 39) |
-* delete-duplicates: SRFI-1. (line 166) |
-* delete-duplicates!: SRFI-1. (line 169) |
-* delete-file: Input/Output. (line 14) |
+ (line 11)
+* delete-domain on relational-database: Command Intrinsics. (line 39)
+* delete-duplicates: SRFI-1. (line 166)
+* delete-duplicates!: SRFI-1. (line 169)
+* delete-file: Input/Output. (line 14)
* delete-if: Destructive list operations.
- (line 59) |
+ (line 59)
* delete-if-not: Destructive list operations.
- (line 60) |
-* delete-table on relational-database: Database Operations. (line 59) |
-* dequeue!: Queues. (line 28) |
-* dequeue-all!: Queues. (line 36) |
-* determinant: Matrix Algebra. (line 18) |
-* diff:edit-length: Sequence Comparison. (line 64) |
-* diff:edits: Sequence Comparison. (line 45) |
-* diff:longest-common-subsequence: Sequence Comparison. (line 32) |
-* difftime: Time and Date. (line 26) |
-* directory-for-each: Directories. (line 21) |
-* do-elts: Collections. (line 41) |
-* do-keys: Collections. (line 57) |
-* domain-checker on relational-database: Command Intrinsics. (line 42) |
-* dotted-list?: SRFI-1. (line 42) |
-* drop: SRFI-1. (line 70) |
-* drop-right: SRFI-1. (line 76) |
-* drop-right!: SRFI-1. (line 78) |
-* dynamic-ref: Dynamic Data Type. (line 17) |
-* dynamic-set!: Dynamic Data Type. (line 21) |
-* dynamic-wind: Dynamic-Wind. (line 13) |
-* dynamic?: Dynamic Data Type. (line 12) |
-* e-sRGB->CIEXYZ: Color Conversions. (line 57) |
-* e-srgb->color: Color Spaces. (line 235) |
-* e-sRGB->e-sRGB: Color Conversions. (line 68) |
-* e-sRGB->sRGB: Color Conversions. (line 60) |
-* eighth: SRFI-1. (line 64) |
-* emacs:backup-name: Transactions. (line 73) |
-* empty?: Collections. (line 99) |
-* encode-universal-time: Common-Lisp Time. (line 40) |
-* enqueue!: Queues. (line 25) |
-* equal? <1>: Byte. (line 44) |
-* equal?: Arrays. (line 19) |
-* eval: Eval. (line 9) |
-* every: Lists as sets. (line 91) |
-* every?: Collections. (line 91) |
+ (line 60)
+* delete-table on relational-database: Database Operations. (line 59)
+* dequeue!: Queues. (line 28)
+* dequeue-all!: Queues. (line 36)
+* determinant: Matrix Algebra. (line 18)
+* diff:edit-length: Sequence Comparison. (line 64)
+* diff:edits: Sequence Comparison. (line 45)
+* diff:longest-common-subsequence: Sequence Comparison. (line 32)
+* difftime: Time and Date. (line 26)
+* directory-for-each: Directories. (line 21)
+* do-elts: Collections. (line 41)
+* do-keys: Collections. (line 57)
+* domain-checker on relational-database: Command Intrinsics. (line 42)
+* dotted-list?: SRFI-1. (line 42)
+* drop: SRFI-1. (line 70)
+* drop-right: SRFI-1. (line 76)
+* drop-right!: SRFI-1. (line 78)
+* dynamic-ref: Dynamic Data Type. (line 17)
+* dynamic-set!: Dynamic Data Type. (line 21)
+* dynamic-wind: Dynamic-Wind. (line 13)
+* dynamic?: Dynamic Data Type. (line 12)
+* e-sRGB->CIEXYZ: Color Conversions. (line 57)
+* e-srgb->color: Color Spaces. (line 235)
+* e-sRGB->e-sRGB: Color Conversions. (line 68)
+* e-sRGB->sRGB: Color Conversions. (line 60)
+* eighth: SRFI-1. (line 64)
+* emacs:backup-name: Transactions. (line 73)
+* empty?: Collections. (line 99)
+* encode-universal-time: Common-Lisp Time. (line 40)
+* enqueue!: Queues. (line 25)
+* equal? <1>: Byte. (line 44)
+* equal?: Arrays. (line 19)
+* eval: Eval. (line 9)
+* every: Lists as sets. (line 91)
+* every?: Collections. (line 91)
* exports<-info-index: Top-level Variable References.
- (line 35) |
-* expt: Miscellany. (line 20) |
-* extended-euclid: Modular Arithmetic. (line 28) |
-* 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) |
+ (line 35)
+* expt: Miscellany. (line 20)
+* extended-euclid: Modular Arithmetic. (line 28)
+* 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) |
+ (line 9)
* fft-1: Fast Fourier Transform.
- (line 14) |
-* fifth: SRFI-1. (line 61) |
-* file->color-dictionary: Color Names. (line 68) |
-* file->definitions: Module Manifests. (line 72) |
-* file->exports: Module Manifests. (line 84) |
-* file->loads: Module Manifests. (line 53) |
-* file->requires: Module Manifests. (line 15) |
-* file->requires*: Module Manifests. (line 49) |
-* file-exists?: Input/Output. (line 9) |
-* file-lock!: Transactions. (line 52) |
-* file-lock-owner: Transactions. (line 48) |
-* file-unlock!: Transactions. (line 62) |
-* filename:match-ci??: Filenames. (line 10) |
-* filename:match??: Filenames. (line 9) |
-* filename:substitute-ci??: Filenames. (line 35) |
-* filename:substitute??: Filenames. (line 34) |
-* fill-empty-parameters: Parameter lists. (line 51) |
-* fill-rect: Rectangles. (line 30) |
-* filter: SRFI-1. (line 129) |
-* filter!: SRFI-1. (line 131) |
-* find: SRFI-1. (line 144) |
-* find-if: Lists as sets. (line 138) |
-* find-ratio: Rationalize. (line 20) |
-* find-ratio-between: Rationalize. (line 27) |
-* find-string-from-port?: String Search. (line 30) |
-* find-tail: SRFI-1. (line 146) |
-* first: SRFI-1. (line 53) |
-* first-set-bit: Bit-Twiddling. (line 100) |
-* fluid-let: Fluid-Let. (line 9) |
-* fold: SRFI-1. (line 111) |
-* fold-right: SRFI-1. (line 113) |
-* for-each-elt: Collections. (line 67) |
-* for-each-key: Collections. (line 66) |
+ (line 14)
+* fifth: SRFI-1. (line 61)
+* file->color-dictionary: Color Names. (line 68)
+* file->definitions: Module Manifests. (line 72)
+* file->exports: Module Manifests. (line 84)
+* file->loads: Module Manifests. (line 53)
+* file->requires: Module Manifests. (line 15)
+* file->requires*: Module Manifests. (line 49)
+* file-exists?: Input/Output. (line 9)
+* file-lock!: Transactions. (line 52)
+* file-lock-owner: Transactions. (line 48)
+* file-unlock!: Transactions. (line 62)
+* filename:match-ci??: Filenames. (line 10)
+* filename:match??: Filenames. (line 9)
+* filename:substitute-ci??: Filenames. (line 35)
+* filename:substitute??: Filenames. (line 34)
+* fill-empty-parameters: Parameter lists. (line 51)
+* fill-rect: Rectangles. (line 30)
+* filter: SRFI-1. (line 129)
+* filter!: SRFI-1. (line 131)
+* find: SRFI-1. (line 144)
+* find-if: Lists as sets. (line 138)
+* find-ratio: Rationalize. (line 20)
+* find-ratio-between: Rationalize. (line 27)
+* find-string-from-port?: String Search. (line 30)
+* find-tail: SRFI-1. (line 146)
+* first: SRFI-1. (line 53)
+* first-set-bit: Bit-Twiddling. (line 100)
+* fluid-let: Fluid-Let. (line 9)
+* fold: SRFI-1. (line 111)
+* fold-right: SRFI-1. (line 113)
+* for-each-elt: Collections. (line 67)
+* for-each-key: Collections. (line 66)
* for-each-key on base-table: Aggregate Base Operations.
- (line 16) |
+ (line 16)
* for-each-row on relational-table: Multi-Row Operations.
- (line 33) |
+ (line 33)
* for-each-row-in-order on relational-table: Sequential Index Operations.
- (line 11) |
-* force: Promises. (line 11) |
-* force-output: Input/Output. (line 74) |
-* form:delimited: HTML. (line 138) |
-* form:element: HTML. (line 98) |
-* form:image: HTML. (line 92) |
-* form:reset: HTML. (line 95) |
-* form:submit: HTML. (line 84) |
-* format: Format Interface. (line 7) |
-* fourth: SRFI-1. (line 59) |
+ (line 11)
+* force: Promises. (line 11)
+* force-output: Input/Output. (line 74)
+* form:delimited: HTML. (line 138)
+* form:element: HTML. (line 98)
+* form:image: HTML. (line 92)
+* form:reset: HTML. (line 95)
+* form:submit: HTML. (line 84)
+* format: Format Interface. (line 7)
+* fourth: SRFI-1. (line 59)
* fprintf: Standard Formatted Output.
- (line 10) |
+ (line 10)
* fscanf: Standard Formatted Input.
- (line 14) |
-* gen-elts: Collections. (line 25) |
-* gen-keys: Collections. (line 29) |
-* generic-write: Generic-Write. (line 15) |
-* gentemp: Defmacro. (line 9) |
-* get on relational-table: Table Operations. (line 18) |
-* get* on relational-table: Match-Keys. (line 29) |
-* get-decoded-time: Common-Lisp Time. (line 7) |
-* get-foreign-choices: HTML. (line 146) |
-* get-method: Object. (line 78) |
-* get-universal-time: Common-Lisp Time. (line 10) |
-* getenv: System Interface. (line 9) |
-* getopt: Getopt. (line 39) |
-* getopt--: Getopt. (line 125) |
+ (line 14)
+* gen-elts: Collections. (line 25)
+* gen-keys: Collections. (line 29)
+* generic-write: Generic-Write. (line 15)
+* gentemp: Defmacro. (line 9)
+* get on relational-table: Table Operations. (line 18)
+* get* on relational-table: Match-Keys. (line 29)
+* get-decoded-time: Common-Lisp Time. (line 7)
+* get-foreign-choices: HTML. (line 146)
+* get-method: Object. (line 78)
+* get-universal-time: Common-Lisp Time. (line 10)
+* getenv: System Interface. (line 9)
+* getopt: Getopt. (line 39)
+* getopt--: Getopt. (line 125)
* getopt->arglist: Getopt Parameter lists.
- (line 37) |
+ (line 37)
* getopt->parameter-list: Getopt Parameter lists.
- (line 10) |
-* glob-pattern?: URI. (line 110) |
-* gmktime: Posix Time. (line 50) |
-* gmtime: Posix Time. (line 36) |
-* golden-section-search: Minimizing. (line 18) |
-* gray-code->integer: Hilbert Space-Filling Curve. |
- (line 65) |
-* gray-code<=?: Hilbert Space-Filling Curve. |
- (line 75) |
-* gray-code<?: Hilbert Space-Filling Curve. |
- (line 73) |
-* gray-code>=?: Hilbert Space-Filling Curve. |
- (line 76) |
-* gray-code>?: Hilbert Space-Filling Curve. |
- (line 74) |
-* grey: Color Names. (line 13) |
-* grid-horizontals: Legending. (line 58) |
-* grid-verticals: Legending. (line 54) |
-* gtime: Posix Time. (line 67) |
-* has-duplicates?: Lists as sets. (line 187) |
-* hash: Hashing. (line 14) |
-* hash-associator: Hash Tables. (line 36) |
-* hash-for-each: Hash Tables. (line 51) |
-* hash-inquirer: Hash Tables. (line 31) |
-* hash-map: Hash Tables. (line 46) |
-* hash-rehasher: Hash Tables. (line 56) |
-* hash-remover: Hash Tables. (line 41) |
-* hashq: Hashing. (line 12) |
-* hashv: Hashing. (line 13) |
-* heap-extract-max!: Priority Queues. (line 23) |
-* heap-insert!: Priority Queues. (line 19) |
-* heap-length: Priority Queues. (line 16) |
-* hilbert-coordinates->integer: Hilbert Space-Filling Curve. |
- (line 45) |
-* histograph: Character Plotting. (line 83) |
-* home-vicinity: Vicinity. (line 51) |
-* htm-fields: Parsing HTML. (line 58) |
-* html-for-each: Parsing HTML. (line 10) |
-* html:anchor: URI. (line 24) |
-* html:atval: HTML. (line 9) |
-* html:base: URI. (line 39) |
-* html:body: HTML. (line 47) |
-* html:buttons: HTML. (line 81) |
-* html:caption: HTML Tables. (line 11) |
-* html:checkbox: HTML. (line 69) |
-* html:comment: HTML. (line 55) |
-* html:delimited-list: HTML. (line 143) |
-* html:editable-row-converter: HTML Tables. (line 117) |
-* html:form: HTML. (line 61) |
-* html:head: HTML. (line 39) |
-* html:heading: HTML Tables. (line 15) |
-* html:hidden: HTML. (line 66) |
-* html:href-heading: HTML Tables. (line 18) |
-* html:http-equiv: HTML. (line 24) |
-* html:isindex: URI. (line 43) |
-* html:link: URI. (line 32) |
-* html:linked-row-converter: HTML Tables. (line 22) |
-* html:meta: HTML. (line 17) |
-* html:meta-refresh: HTML. (line 30) |
-* html:plain: HTML. (line 13) |
-* html:pre: HTML. (line 50) |
-* html:read-title: Parsing HTML. (line 44) |
-* html:select: HTML. (line 78) |
-* html:table: HTML Tables. (line 9) |
-* html:text: HTML. (line 72) |
-* html:text-area: HTML. (line 75) |
-* http:content: HTTP and CGI. (line 13) |
-* http:error-page: HTTP and CGI. (line 20) |
-* http:forwarding-page: HTTP and CGI. (line 26) |
-* http:header: HTTP and CGI. (line 9) |
-* http:serve-query: HTTP and CGI. (line 36) |
-* identifier=?: Syntactic Closures. (line 369) |
-* identifier?: Syntactic Closures. (line 334) |
-* identity: Miscellany. (line 9) |
+ (line 10)
+* glob-pattern?: URI. (line 110)
+* gmktime: Posix Time. (line 50)
+* gmtime: Posix Time. (line 36)
+* golden-section-search: Minimizing. (line 18)
+* gray-code->integer: Hilbert Space-Filling Curve.
+ (line 65)
+* gray-code<=?: Hilbert Space-Filling Curve.
+ (line 75)
+* gray-code<?: Hilbert Space-Filling Curve.
+ (line 73)
+* gray-code>=?: Hilbert Space-Filling Curve.
+ (line 76)
+* gray-code>?: Hilbert Space-Filling Curve.
+ (line 74)
+* grey: Color Names. (line 13)
+* grid-horizontals: Legending. (line 58)
+* grid-verticals: Legending. (line 54)
+* gtime: Posix Time. (line 67)
+* has-duplicates?: Lists as sets. (line 187)
+* hash: Hashing. (line 14)
+* hash-associator: Hash Tables. (line 36)
+* hash-for-each: Hash Tables. (line 51)
+* hash-inquirer: Hash Tables. (line 31)
+* hash-map: Hash Tables. (line 46)
+* hash-rehasher: Hash Tables. (line 56)
+* hash-remover: Hash Tables. (line 41)
+* hashq: Hashing. (line 12)
+* hashv: Hashing. (line 13)
+* heap-extract-max!: Priority Queues. (line 23)
+* heap-insert!: Priority Queues. (line 19)
+* heap-length: Priority Queues. (line 16)
+* hilbert-coordinates->integer: Hilbert Space-Filling Curve.
+ (line 45)
+* histograph: Character Plotting. (line 83)
+* home-vicinity: Vicinity. (line 51)
+* htm-fields: Parsing HTML. (line 58)
+* html-for-each: Parsing HTML. (line 10)
+* html:anchor: URI. (line 24)
+* html:atval: HTML. (line 9)
+* html:base: URI. (line 39)
+* html:body: HTML. (line 47)
+* html:buttons: HTML. (line 81)
+* html:caption: HTML Tables. (line 11)
+* html:checkbox: HTML. (line 69)
+* html:comment: HTML. (line 55)
+* html:delimited-list: HTML. (line 143)
+* html:editable-row-converter: HTML Tables. (line 117)
+* html:form: HTML. (line 61)
+* html:head: HTML. (line 39)
+* html:heading: HTML Tables. (line 15)
+* html:hidden: HTML. (line 66)
+* html:href-heading: HTML Tables. (line 18)
+* html:http-equiv: HTML. (line 24)
+* html:isindex: URI. (line 43)
+* html:link: URI. (line 32)
+* html:linked-row-converter: HTML Tables. (line 22)
+* html:meta: HTML. (line 17)
+* html:meta-refresh: HTML. (line 30)
+* html:plain: HTML. (line 13)
+* html:pre: HTML. (line 50)
+* html:read-title: Parsing HTML. (line 44)
+* html:select: HTML. (line 78)
+* html:table: HTML Tables. (line 9)
+* html:text: HTML. (line 72)
+* html:text-area: HTML. (line 75)
+* http:content: HTTP and CGI. (line 13)
+* http:error-page: HTTP and CGI. (line 20)
+* http:forwarding-page: HTTP and CGI. (line 26)
+* http:header: HTTP and CGI. (line 9)
+* http:serve-query: HTTP and CGI. (line 36)
+* identifier=?: Syntactic Closures. (line 369)
+* identifier?: Syntactic Closures. (line 334)
+* identity: Miscellany. (line 9)
* ieee-byte-collate: Byte/Number Conversions.
- (line 144) |
+ (line 151) |
* ieee-byte-collate!: Byte/Number Conversions.
- (line 135) |
+ (line 142) |
* ieee-byte-decollate: Byte/Number Conversions.
- (line 148) |
+ (line 155) |
* ieee-byte-decollate!: Byte/Number Conversions.
- (line 140) |
+ (line 147) |
* ieee-double->bytes: Byte/Number Conversions.
- (line 92) |
+ (line 97) |
* ieee-float->bytes: Byte/Number Conversions.
- (line 76) |
-* illuminant-map: Spectra. (line 77) |
-* illuminant-map->XYZ: Spectra. (line 82) |
-* implementation-vicinity: Vicinity. (line 42) |
-* in-graphic-context: Graphics Context. (line 7) |
-* in-vicinity: Vicinity. (line 62) |
-* init-debug: Breakpoints. (line 9) |
+ (line 79) |
+* illuminant-map: Spectra. (line 77)
+* illuminant-map->XYZ: Spectra. (line 82)
+* implementation-vicinity: Vicinity. (line 42)
+* in-graphic-context: Graphics Context. (line 7)
+* in-vicinity: Vicinity. (line 62)
+* init-debug: Breakpoints. (line 9)
* integer->bytes: Byte/Number Conversions.
- (line 29) |
-* integer->gray-code: Hilbert Space-Filling Curve. |
- (line 62) |
-* integer->hilbert-coordinates: Hilbert Space-Filling Curve. |
- (line 30) |
-* integer->list: Bit-Twiddling. (line 215) |
-* integer->peano-coordinates: Peano Space-Filling Curve. |
- (line 7) |
+ (line 29)
+* integer->gray-code: Hilbert Space-Filling Curve.
+ (line 62)
+* integer->hilbert-coordinates: Hilbert Space-Filling Curve.
+ (line 30)
+* integer->list: Bit-Twiddling. (line 215)
+* integer->peano-coordinates: Peano Space-Filling Curve.
+ (line 19) |
* integer-byte-collate: Byte/Number Conversions.
- (line 129) |
+ (line 136) |
* integer-byte-collate!: Byte/Number Conversions.
- (line 123) |
-* integer-length: Bit-Twiddling. (line 88) |
-* integer-sqrt: Root Finding. (line 26) |
-* interaction-environment: Eval. (line 51) |
+ (line 130) |
+* integer-length: Bit-Twiddling. (line 88)
+* integer-sqrt: Root Finding. (line 9) |
+* interaction-environment: Eval. (line 51)
+* interpolate-array-ref: Array Interpolation. (line 9) |
* interpolate-from-table: Database Interpolation.
- (line 13) |
-* intersection: Lists as sets. (line 32) |
-* iota: SRFI-1. (line 26) |
+ (line 13)
+* intersection: Lists as sets. (line 32)
+* iota: SRFI-1. (line 26)
* isam-next on relational-table: Sequential Index Operations.
- (line 18) |
+ (line 18)
* isam-prev on relational-table: Sequential Index Operations.
- (line 29) |
-* jacobi-symbol: Prime Numbers. (line 20) |
-* kill-process!: Multi-Processing. (line 24) |
-* kill-table on base-table: Base Tables. (line 26) |
-* L*a*b*->CIEXYZ: Color Conversions. (line 40) |
-* l*a*b*->color: Color Spaces. (line 78) |
-* L*a*b*->L*C*h: Color Conversions. (line 44) |
+ (line 29)
+* jacobi-symbol: Prime Numbers. (line 20)
+* kill-process!: Multi-Processing. (line 24)
+* kill-table on base-table: Base Tables. (line 26)
+* L*a*b*->CIEXYZ: Color Conversions. (line 40)
+* l*a*b*->color: Color Spaces. (line 78)
+* L*a*b*->L*C*h: Color Conversions. (line 44)
* L*a*b*:DE*: Color Difference Metrics.
- (line 17) |
-* l*c*h->color: Color Spaces. (line 154) |
-* L*C*h->L*a*b*: Color Conversions. (line 45) |
+ (line 17)
+* l*c*h->color: Color Spaces. (line 154)
+* L*C*h->L*a*b*: Color Conversions. (line 45)
* L*C*h:DE*94: Color Difference Metrics.
- (line 25) |
-* L*u*v*->CIEXYZ: Color Conversions. (line 34) |
-* l*u*v*->color: Color Spaces. (line 102) |
-* laguerre:find-polynomial-root: Root Finding. (line 58) |
-* laguerre:find-root: Root Finding. (line 47) |
-* last <1>: SRFI-1. (line 83) |
-* last: Lists as sequences. (line 111) |
-* last-pair: Miscellany. (line 73) |
-* length+: SRFI-1. (line 88) |
-* library-vicinity: Vicinity. (line 39) |
-* light:ambient: Solid Modeling. (line 110) |
-* light:beam: Solid Modeling. (line 144) |
-* light:directional: Solid Modeling. (line 122) |
-* light:point: Solid Modeling. (line 158) |
-* light:spot: Solid Modeling. (line 176) |
-* list*: List construction. (line 18) |
-* list->array: Arrays. (line 88) |
-* list->bytes: Byte. (line 40) |
-* list->integer: Bit-Twiddling. (line 221) |
-* list-copy: SRFI-1. (line 24) |
-* list-index: SRFI-1. (line 158) |
-* list-of??: Lists as sets. (line 120) |
-* list-table-definition: Using Databases. (line 167) |
-* list-tabulate: SRFI-1. (line 18) |
+ (line 25)
+* L*u*v*->CIEXYZ: Color Conversions. (line 34)
+* l*u*v*->color: Color Spaces. (line 102)
+* laguerre:find-polynomial-root: Root Finding. (line 58)
+* laguerre:find-root: Root Finding. (line 47)
+* last <1>: SRFI-1. (line 83)
+* last: Lists as sequences. (line 111)
+* last-pair: Miscellany. (line 73)
+* length+: SRFI-1. (line 88)
+* library-vicinity: Vicinity. (line 39)
+* light:ambient: Solid Modeling. (line 110)
+* light:beam: Solid Modeling. (line 144)
+* light:directional: Solid Modeling. (line 122)
+* light:point: Solid Modeling. (line 158)
+* light:spot: Solid Modeling. (line 176)
+* limit: The Limit. (line 7) |
+* list*: List construction. (line 18)
+* list->array: Arrays. (line 88)
+* list->bytes: Byte. (line 40)
+* list->integer: Bit-Twiddling. (line 221)
+* list-copy: SRFI-1. (line 24)
+* list-index: SRFI-1. (line 158)
+* list-of??: Lists as sets. (line 120)
+* list-table-definition: Using Databases. (line 167)
+* list-tabulate: SRFI-1. (line 18)
* list-tail: Rev4 Optional Procedures.
- (line 12) |
-* list=: SRFI-1. (line 48) |
-* load->path: Module Manifests. (line 63) |
-* load-ciexyz: Spectra. (line 37) |
-* load-color-dictionary: Color Names. (line 52) |
-* localtime: Posix Time. (line 39) |
-* log2-binary-factors: Bit-Twiddling. (line 99) |
-* logand: Bit-Twiddling. (line 18) |
-* logbit?: Bit-Twiddling. (line 134) |
-* logcount: Bit-Twiddling. (line 73) |
-* logior: Bit-Twiddling. (line 27) |
-* lognot: Bit-Twiddling. (line 45) |
-* logtest: Bit-Twiddling. (line 63) |
-* logxor: Bit-Twiddling. (line 36) |
-* lset-adjoin: SRFI-1. (line 197) |
-* lset-diff+intersection: SRFI-1. (line 207) |
-* lset-diff+intersection!: SRFI-1. (line 222) |
-* lset-difference: SRFI-1. (line 203) |
-* lset-difference!: SRFI-1. (line 216) |
-* lset-intersection: SRFI-1. (line 201) |
-* lset-intersection!: SRFI-1. (line 214) |
-* lset-union: SRFI-1. (line 199) |
-* lset-union!: SRFI-1. (line 218) |
-* lset-xor: SRFI-1. (line 205) |
-* lset-xor!: SRFI-1. (line 220) |
-* lset<=: SRFI-1. (line 191) |
-* lset=: SRFI-1. (line 195) |
-* macro:eval <1>: Syntax-Case Macros. (line 14) |
-* macro:eval <2>: Syntactic Closures. (line 14) |
-* macro:eval <3>: Macros That Work. (line 18) |
-* macro:eval: R4RS Macros. (line 19) |
-* macro:expand <1>: Syntax-Case Macros. (line 9) |
-* macro:expand <2>: Syntactic Closures. (line 9) |
-* macro:expand <3>: Macros That Work. (line 13) |
-* macro:expand: R4RS Macros. (line 15) |
-* macro:load <1>: Syntax-Case Macros. (line 20) |
-* macro:load <2>: Syntactic Closures. (line 20) |
-* macro:load <3>: Macros That Work. (line 24) |
-* macro:load: R4RS Macros. (line 23) |
-* macroexpand: Defmacro. (line 31) |
-* macroexpand-1: Defmacro. (line 30) |
-* macwork:eval: Macros That Work. (line 19) |
-* macwork:expand: Macros That Work. (line 14) |
-* macwork:load: Macros That Work. (line 25) |
-* make-array: Arrays. (line 54) |
-* make-base on base-table: The Base. (line 19) |
-* make-bytes: Byte. (line 23) |
-* make-color: Color Data-Type. (line 30) |
-* make-command-server: Command Service. (line 7) |
-* make-directory: Directories. (line 17) |
-* make-dynamic: Dynamic Data Type. (line 9) |
-* make-exchanger: Miscellany. (line 37) |
-* make-generic-method: Object. (line 57) |
-* make-generic-predicate: Object. (line 62) |
+ (line 12)
+* list=: SRFI-1. (line 48)
+* load->path: Module Manifests. (line 63)
+* load-ciexyz: Spectra. (line 37)
+* load-color-dictionary: Color Names. (line 52)
+* localtime: Posix Time. (line 39)
+* log2-binary-factors: Bit-Twiddling. (line 99)
+* logand: Bit-Twiddling. (line 18)
+* logbit?: Bit-Twiddling. (line 134)
+* logcount: Bit-Twiddling. (line 73)
+* logior: Bit-Twiddling. (line 27)
+* lognot: Bit-Twiddling. (line 45)
+* logtest: Bit-Twiddling. (line 63)
+* logxor: Bit-Twiddling. (line 36)
+* lset-adjoin: SRFI-1. (line 197)
+* lset-diff+intersection: SRFI-1. (line 207)
+* lset-diff+intersection!: SRFI-1. (line 222)
+* lset-difference: SRFI-1. (line 203)
+* lset-difference!: SRFI-1. (line 216)
+* lset-intersection: SRFI-1. (line 201)
+* lset-intersection!: SRFI-1. (line 214)
+* lset-union: SRFI-1. (line 199)
+* lset-union!: SRFI-1. (line 218)
+* lset-xor: SRFI-1. (line 205)
+* lset-xor!: SRFI-1. (line 220)
+* lset<=: SRFI-1. (line 191)
+* lset=: SRFI-1. (line 195)
+* macro:eval <1>: Syntax-Case Macros. (line 14)
+* macro:eval <2>: Syntactic Closures. (line 14)
+* macro:eval <3>: Macros That Work. (line 18)
+* macro:eval: R4RS Macros. (line 19)
+* macro:expand <1>: Syntax-Case Macros. (line 9)
+* macro:expand <2>: Syntactic Closures. (line 9)
+* macro:expand <3>: Macros That Work. (line 13)
+* macro:expand: R4RS Macros. (line 15)
+* macro:load <1>: Syntax-Case Macros. (line 20)
+* macro:load <2>: Syntactic Closures. (line 20)
+* macro:load <3>: Macros That Work. (line 24)
+* macro:load: R4RS Macros. (line 23)
+* macroexpand: Defmacro. (line 31)
+* macroexpand-1: Defmacro. (line 30)
+* macwork:eval: Macros That Work. (line 19)
+* macwork:expand: Macros That Work. (line 14)
+* macwork:load: Macros That Work. (line 25)
+* make-array: Arrays. (line 54)
+* make-base on base-table: The Base. (line 19)
+* make-bytes: Byte. (line 23)
+* make-color: Color Data-Type. (line 30)
+* make-command-server: Command Service. (line 7)
+* make-directory: Directories. (line 17)
+* make-dynamic: Dynamic Data Type. (line 9)
+* make-exchanger: Miscellany. (line 37)
+* make-generic-method: Object. (line 57)
+* make-generic-predicate: Object. (line 62)
* make-getter on base-table: Base Record Operations.
- (line 14) |
+ (line 14)
* make-getter-1 on base-table: Base Record Operations.
- (line 23) |
-* make-hash-table: Hash Tables. (line 17) |
-* make-heap: Priority Queues. (line 12) |
-* make-key->list on base-table: Composite Keys. (line 38) |
-* make-key-extractor on base-table: Composite Keys. (line 31) |
-* make-keyifier-1 on base-table: Composite Keys. (line 7) |
-* make-list: List construction. (line 7) |
-* make-list-keyifier on base-table: Composite Keys. (line 17) |
-* make-method!: Object. (line 65) |
+ (line 23)
+* make-hash-table: Hash Tables. (line 17)
+* make-heap: Priority Queues. (line 12)
+* make-key->list on base-table: Composite Keys. (line 38)
+* make-key-extractor on base-table: Composite Keys. (line 31)
+* make-keyifier-1 on base-table: Composite Keys. (line 7)
+* make-list: List construction. (line 7)
+* make-list-keyifier on base-table: Composite Keys. (line 17)
+* make-method!: Object. (line 65)
* make-nexter on base-table: Base ISAM Operations.
- (line 17) |
-* make-object: Object. (line 46) |
-* make-parameter-list: Parameter lists. (line 23) |
-* make-predicate!: Object. (line 72) |
+ (line 17)
+* make-object: Object. (line 46)
+* make-parameter-list: Parameter lists. (line 23)
+* make-predicate!: Object. (line 72)
* make-prever on base-table: Base ISAM Operations.
- (line 25) |
-* make-promise: Promises. (line 9) |
+ (line 25)
+* make-promise: Promises. (line 9)
* make-putter on base-table: Base Record Operations.
- (line 31) |
-* make-query-alist-command-server: HTTP and CGI. (line 86) |
-* make-queue: Queues. (line 13) |
+ (line 31)
+* make-query-alist-command-server: HTTP and CGI. (line 86)
+* make-queue: Queues. (line 13)
* make-random-state: Exact Random Numbers.
- (line 44) |
-* make-record-type: Records. (line 12) |
+ (line 44)
+* make-record-type: Records. (line 12)
* make-relational-system: Relational Database Objects.
- (line 11) |
-* make-ruleset: Commutative Rings. (line 82) |
-* make-shared-array: Arrays. (line 69) |
-* make-sierpinski-indexer: Sierpinski Curve. (line 9) |
-* make-slib-color-name-db: Color Names. (line 94) |
-* make-syntactic-closure: Syntactic Closures. (line 177) |
-* make-table on base-table: Base Tables. (line 7) |
-* make-uri: URI. (line 12) |
-* make-vicinity: Vicinity. (line 21) |
+ (line 11)
+* make-ruleset: Commutative Rings. (line 82)
+* make-shared-array: Arrays. (line 69)
+* make-sierpinski-indexer: Sierpinski Curve. (line 9)
+* make-slib-color-name-db: Color Names. (line 94)
+* make-syntactic-closure: Syntactic Closures. (line 177)
+* make-table on base-table: Base Tables. (line 7)
+* make-uri: URI. (line 12)
+* make-vicinity: Vicinity. (line 21)
* make-wt-tree: Construction of Weight-Balanced Trees.
- (line 51) |
+ (line 51)
* make-wt-tree-type: Construction of Weight-Balanced Trees.
- (line 19) |
-* map!: SRFI-1. (line 122) |
-* map-elts: Collections. (line 40) |
+ (line 19)
+* map!: SRFI-1. (line 122)
+* map-elts: Collections. (line 40)
* map-key on base-table: Aggregate Base Operations.
- (line 22) |
-* map-keys: Collections. (line 56) |
-* matfile:load: MAT-File Format. (line 25) |
-* matfile:read: MAT-File Format. (line 19) |
-* matrix->array: Matrix Algebra. (line 15) |
-* matrix->lists: Matrix Algebra. (line 12) |
-* matrix:inverse: Matrix Algebra. (line 33) |
-* matrix:product: Matrix Algebra. (line 30) |
-* 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) |
-* 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) |
-* mrna<-cdna: NCBI-DNA. (line 15) |
-* must-be-first: Batch. (line 128) |
-* must-be-last: Batch. (line 133) |
-* ncbi:read-dna-sequence: NCBI-DNA. (line 7) |
-* ncbi:read-file: NCBI-DNA. (line 11) |
+ (line 22)
+* map-keys: Collections. (line 56)
+* matfile:load: MAT-File Format. (line 25)
+* matfile:read: MAT-File Format. (line 19)
+* matrix->array: Matrix Algebra. (line 15)
+* matrix->lists: Matrix Algebra. (line 12)
+* matrix:inverse: Matrix Algebra. (line 33)
+* matrix:product: Matrix Algebra. (line 30)
+* 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)
+* 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)
+* 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) |
+* 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 9) |
-* newton:find-root: Root Finding. (line 30) |
-* ninth: SRFI-1. (line 65) |
-* not-pair?: SRFI-1. (line 46) |
-* notany: Lists as sets. (line 105) |
-* notevery: Lists as sets. (line 109) |
+ (line 10)
+* 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)
+* notany: Lists as sets. (line 105)
+* notevery: Lists as sets. (line 109)
* nreverse: Destructive list operations.
- (line 38) |
-* nthcdr: Lists as sequences. (line 137) |
-* null-directory?: URI. (line 106) |
-* null-environment: Eval. (line 29) |
-* null-list?: SRFI-1. (line 44) |
-* object: Yasos interface. (line 17) |
-* object->limited-string: Object-To-String. (line 12) |
-* object->string: Object-To-String. (line 9) |
-* object-with-ancestors: Yasos interface. (line 23) |
-* object?: Object. (line 54) |
-* offset-time: Time and Date. (line 30) |
-* open-base on base-table: The Base. (line 33) |
-* open-command-database: Database Extension. (line 34) |
-* open-command-database!: Database Extension. (line 43) |
-* open-database: Using Databases. (line 71) |
+ (line 38)
+* nthcdr: Lists as sequences. (line 137)
+* null-directory?: URI. (line 106)
+* null-environment: Eval. (line 29)
+* null-list?: SRFI-1. (line 44)
+* object: Yasos interface. (line 17)
+* object->limited-string: Object-To-String. (line 12)
+* object->string: Object-To-String. (line 9)
+* object-with-ancestors: Yasos interface. (line 23)
+* object?: Object. (line 54)
+* offset-time: Time and Date. (line 30)
+* open-base on base-table: The Base. (line 33)
+* open-command-database: Database Extension. (line 34)
+* open-command-database!: Database Extension. (line 43)
+* open-database: Using Databases. (line 71)
* open-database on relational-system: Relational Database Objects.
- (line 45) |
-* open-database!: Using Databases. (line 68) |
-* open-file <1>: Byte. (line 57) |
-* open-file: Input/Output. (line 18) |
-* open-table: Using Databases. (line 107) |
-* open-table on base-table: Base Tables. (line 16) |
-* open-table on relational-database: Database Operations. (line 52) |
-* open-table!: Using Databases. (line 114) |
-* operate-as: Yasos interface. (line 31) |
-* or?: Non-List functions. (line 19) |
+ (line 45)
+* open-database!: Using Databases. (line 68)
+* open-file <1>: Byte. (line 57)
+* open-file: Input/Output. (line 18)
+* open-table: Using Databases. (line 107)
+* open-table on base-table: Base Tables. (line 16)
+* open-table on relational-database: Database Operations. (line 52)
+* open-table!: Using Databases. (line 114)
+* operate-as: Yasos interface. (line 31)
+* or?: Non-List functions. (line 19)
* ordered-for-each-key on base-table: Base ISAM Operations.
- (line 10) |
-* os->batch-dialect: Batch. (line 138) |
-* outline-rect: Rectangles. (line 33) |
-* output-port-height: Input/Output. (line 87) |
-* output-port-width: Input/Output. (line 81) |
-* overcast-sky-color-xyy: Daylight. (line 74) |
-* p<-cdna: NCBI-DNA. (line 27) |
-* pad-range: Column Ranges. (line 13) |
-* pair-fold: SRFI-1. (line 115) |
-* pair-fold-right: SRFI-1. (line 117) |
-* pair-for-each: SRFI-1. (line 124) |
-* parameter-list->arglist: Parameter lists. (line 86) |
-* parameter-list-expand: Parameter lists. (line 41) |
-* parameter-list-ref: Parameter lists. (line 26) |
-* parse-ftp-address: URI. (line 117) |
-* partition: SRFI-1. (line 133) |
-* partition!: SRFI-1. (line 137) |
-* partition-page: Rectangles. (line 16) |
-* path->uri: URI. (line 95) |
-* pathname->vicinity: Vicinity. (line 25) |
-* peano-coordinates->integer: Peano Space-Filling Curve. |
- (line 13) |
-* plot <1>: Legacy Plotting. (line 11) |
-* plot: Character Plotting. (line 17) |
-* plot-column: Drawing the Graph. (line 7) |
+ (line 10)
+* os->batch-dialect: Batch. (line 138)
+* outline-rect: Rectangles. (line 33)
+* output-port-height: Input/Output. (line 87)
+* output-port-width: Input/Output. (line 81)
+* overcast-sky-color-xyy: Daylight. (line 74)
+* p<-cdna: NCBI-DNA. (line 27)
+* pad-range: Column Ranges. (line 13)
+* pair-fold: SRFI-1. (line 115)
+* pair-fold-right: SRFI-1. (line 117)
+* pair-for-each: SRFI-1. (line 124)
+* parameter-list->arglist: Parameter lists. (line 86)
+* parameter-list-expand: Parameter lists. (line 41)
+* parameter-list-ref: Parameter lists. (line 26)
+* parse-ftp-address: URI. (line 117)
+* partition: SRFI-1. (line 133)
+* partition!: SRFI-1. (line 137)
+* partition-page: Rectangles. (line 16)
+* 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) |
+* plot <1>: Legacy Plotting. (line 11)
+* plot: Character Plotting. (line 17)
+* plot-column: Drawing the Graph. (line 7)
* pnm:array-write: Portable Image Files.
- (line 44) |
+ (line 44)
* pnm:image-file->array: Portable Image Files.
- (line 35) |
+ (line 35)
* pnm:type-dimensions: Portable Image Files.
- (line 9) |
-* port?: Input/Output. (line 44) |
-* position: Lists as sequences. (line 7) |
-* pprint-file: Pretty-Print. (line 63) |
-* pprint-filter-file: Pretty-Print. (line 69) |
+ (line 9)
+* port?: Input/Output. (line 44)
+* position: Lists as sequences. (line 7)
+* pprint-file: Pretty-Print. (line 63)
+* pprint-filter-file: Pretty-Print. (line 69)
* prec:commentfix: Grammar Rule Definition.
- (line 111) |
+ (line 111)
* prec:define-grammar: Ruleset Definition and Use.
- (line 24) |
+ (line 24)
* prec:delim: Grammar Rule Definition.
- (line 24) |
+ (line 24)
* prec:infix: Grammar Rule Definition.
- (line 53) |
+ (line 53)
* prec:inmatchfix: Grammar Rule Definition.
- (line 151) |
+ (line 151)
* prec:make-led: Nud and Led Definition.
- (line 49) |
+ (line 49)
* prec:make-nud: Nud and Led Definition.
- (line 39) |
+ (line 39)
* prec:matchfix: Grammar Rule Definition.
- (line 131) |
+ (line 131)
* prec:nary: Grammar Rule Definition.
- (line 72) |
+ (line 72)
* prec:nofix: Grammar Rule Definition.
- (line 29) |
+ (line 29)
* prec:parse: Ruleset Definition and Use.
- (line 33) |
+ (line 33)
* prec:postfix: Grammar Rule Definition.
- (line 85) |
+ (line 85)
* prec:prefix: Grammar Rule Definition.
- (line 36) |
+ (line 36)
* prec:prestfix: Grammar Rule Definition.
- (line 94) |
-* predicate->asso: Association Lists. (line 17) |
-* predicate->hash: Hash Tables. (line 9) |
-* predicate->hash-asso: Hash Tables. (line 25) |
+ (line 94)
+* predicate->asso: Association Lists. (line 17)
+* predicate->hash: Hash Tables. (line 9)
+* predicate->hash-asso: Hash Tables. (line 25)
* present? on base-table: Base Record Operations.
- (line 10) |
-* pretty-print: Pretty-Print. (line 9) |
-* pretty-print->string: Pretty-Print. (line 23) |
+ (line 10)
+* pretty-print: Pretty-Print. (line 9)
+* pretty-print->string: Pretty-Print. (line 23)
* primary-limit on relational-table: Table Administration.
- (line 16) |
-* prime?: Prime Numbers. (line 28) |
-* primes<: Prime Numbers. (line 33) |
-* primes>: Prime Numbers. (line 38) |
-* print: Yasos interface. (line 36) |
-* print-call-stack: Trace. (line 29) |
+ (line 16)
+* prime?: Prime Numbers. (line 28)
+* primes<: Prime Numbers. (line 33)
+* primes>: Prime Numbers. (line 38)
+* print: Yasos interface. (line 36)
+* print-call-stack: Trace. (line 29)
* printf: Standard Formatted Output.
- (line 9) |
-* process:schedule!: Multi-Processing. (line 20) |
-* program-vicinity: Vicinity. (line 30) |
-* project-table on relational-database: Database Operations. (line 76) |
-* proper-list?: SRFI-1. (line 38) |
-* protein<-cdna: NCBI-DNA. (line 23) |
-* provide: Feature. (line 58) |
-* provided?: Feature. (line 30) |
-* qp: Quick Print. (line 19) |
-* qpn: Quick Print. (line 20) |
-* qpr: Quick Print. (line 21) |
-* queue-empty?: Queues. (line 19) |
-* queue-front: Queues. (line 39) |
-* queue-pop!: Queues. (line 29) |
-* queue-push!: Queues. (line 22) |
-* queue-rear: Queues. (line 42) |
-* queue?: Queues. (line 16) |
+ (line 9)
+* process:schedule!: Multi-Processing. (line 20)
+* program-vicinity: Vicinity. (line 30)
+* project-table on relational-database: Database Operations. (line 76)
+* proper-list?: SRFI-1. (line 38)
+* protein<-cdna: NCBI-DNA. (line 23)
+* provide: Feature. (line 58)
+* provided?: Feature. (line 30)
+* qp: Quick Print. (line 19)
+* qpn: Quick Print. (line 20)
+* qpr: Quick Print. (line 21)
+* queue-empty?: Queues. (line 19)
+* queue-front: Queues. (line 39)
+* queue-pop!: Queues. (line 29)
+* queue-push!: Queues. (line 22)
+* queue-rear: Queues. (line 42)
+* queue?: Queues. (line 16)
* random: Exact Random Numbers.
- (line 9) |
+ (line 9)
* random:exp: Inexact Random Numbers.
- (line 14) |
+ (line 14)
* random:hollow-sphere!: Inexact Random Numbers.
- (line 32) |
+ (line 32)
* random:normal: Inexact Random Numbers.
- (line 20) |
+ (line 20)
* random:normal-vector!: Inexact Random Numbers.
- (line 26) |
+ (line 26)
* random:solid-sphere!: Inexact Random Numbers.
- (line 39) |
+ (line 39)
* random:uniform: Inexact Random Numbers.
+ (line 9)
+* rationalize: Rationalize. (line 9)
+* read-byte: Byte. (line 69)
+* read-bytes: Byte. (line 87)
+* 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) |
-* rationalize: Rationalize. (line 9) |
-* read-byte: Byte. (line 69) |
-* read-bytes: Byte. (line 87) |
-* 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: SRFI-8. (line 9) |
-* record-accessor: Records. (line 41) |
-* record-constructor: Records. (line 22) |
-* record-modifier: Records. (line 50) |
-* record-predicate: Records. (line 35) |
-* reduce <1>: SRFI-1. (line 119) |
-* reduce <2>: Lists as sequences. (line 19) |
-* reduce: Collections. (line 71) |
-* reduce-init: Lists as sequences. (line 61) |
-* reduce-right: SRFI-1. (line 120) |
-* rem: Modular Arithmetic. (line 10) |
-* remove <1>: SRFI-1. (line 135) |
-* remove: Lists as sets. (line 153) |
-* remove!: SRFI-1. (line 139) |
-* remove-duplicates: Lists as sets. (line 199) |
-* remove-if: Lists as sets. (line 166) |
-* remove-if-not: Lists as sets. (line 177) |
-* remove-parameter: Parameter lists. (line 31) |
-* remove-setter-for: Setters. (line 49) |
-* repl:quit: Repl. (line 17) |
-* repl:top-level: Repl. (line 11) |
-* replace-suffix: Filenames. (line 65) |
-* require <1>: Catalog Creation. (line 48) |
-* require: Require. (line 25) |
-* require-if: Require. (line 40) |
-* resene: Color Names. (line 129) |
-* restrict-table on relational-database: Database Operations. (line 77) |
-* reverse!: SRFI-1. (line 93) |
-* reverse-bit-field: Bit-Twiddling. (line 206) |
-* RGB709->CIEXYZ: Color Conversions. (line 30) |
-* rgb709->color: Color Spaces. (line 46) |
-* rotate-bit-field: Bit-Twiddling. (line 192) |
+* record-accessor: Records. (line 41)
+* record-constructor: Records. (line 22)
+* record-modifier: Records. (line 50)
+* record-predicate: Records. (line 35)
+* reduce <1>: SRFI-1. (line 119)
+* reduce <2>: Lists as sequences. (line 19)
+* reduce: Collections. (line 71)
+* reduce-init: Lists as sequences. (line 61)
+* reduce-right: SRFI-1. (line 120)
+* rem: Modular Arithmetic. (line 10)
+* remove <1>: SRFI-1. (line 135)
+* remove: Lists as sets. (line 153)
+* remove!: SRFI-1. (line 139)
+* remove-duplicates: Lists as sets. (line 199)
+* remove-if: Lists as sets. (line 166)
+* remove-if-not: Lists as sets. (line 177)
+* remove-parameter: Parameter lists. (line 31)
+* remove-setter-for: Setters. (line 49)
+* repl:quit: Repl. (line 17)
+* repl:top-level: Repl. (line 11)
+* replace-suffix: Filenames. (line 65)
+* require <1>: Catalog Creation. (line 48)
+* require: Require. (line 25)
+* require-if: Require. (line 40)
+* 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)
+* reverse-bit-field: Bit-Twiddling. (line 206)
+* RGB709->CIEXYZ: Color Conversions. (line 30)
+* rgb709->color: Color Spaces. (line 46)
+* rotate-bit-field: Bit-Twiddling. (line 192)
* row:delete on relational-table: Single Row Operations.
- (line 50) |
+ (line 50)
* row:delete* on relational-table: Multi-Row Operations.
- (line 26) |
+ (line 26)
* row:insert on relational-table: Single Row Operations.
- (line 12) |
+ (line 12)
* row:insert* on relational-table: Multi-Row Operations.
- (line 41) |
+ (line 41)
* row:remove on relational-table: Single Row Operations.
- (line 45) |
+ (line 45)
* row:remove* on relational-table: Multi-Row Operations.
- (line 21) |
+ (line 21)
* row:retrieve on relational-table: Single Row Operations.
- (line 37) |
+ (line 37)
* row:retrieve* on relational-table: Multi-Row Operations.
- (line 7) |
+ (line 7)
* row:update on relational-table: Single Row Operations.
- (line 31) |
+ (line 31)
* row:update* on relational-table: Multi-Row Operations.
- (line 47) |
-* rule-horizontal: Legending. (line 40) |
-* rule-vertical: Legending. (line 32) |
-* saturate: Color Names. (line 109) |
+ (line 47)
+* rule-horizontal: Legending. (line 40)
+* rule-vertical: Legending. (line 32)
+* saturate: Color Names. (line 109)
* scanf: Standard Formatted Input.
- (line 13) |
+ (line 13)
* scanf-read-list: Standard Formatted Input.
- (line 9) |
-* scene:overcast: Solid Modeling. (line 67) |
-* scene:panorama: Solid Modeling. (line 33) |
-* scene:sky-and-dirt: Solid Modeling. (line 50) |
-* scene:sky-and-grass: Solid Modeling. (line 53) |
-* scene:sphere: Solid Modeling. (line 37) |
-* scene:sun: Solid Modeling. (line 56) |
-* scene:viewpoint: Solid Modeling. (line 81) |
-* scene:viewpoints: Solid Modeling. (line 88) |
-* scheme-report-environment: Eval. (line 28) |
-* schmooz: Schmooz. (line 16) |
-* secant:find-bracketed-root: Root Finding. (line 71) |
-* secant:find-root: Root Finding. (line 70) |
-* second: SRFI-1. (line 55) |
+ (line 9)
+* scene:overcast: Solid Modeling. (line 67)
+* scene:panorama: Solid Modeling. (line 33)
+* scene:sky-and-dirt: Solid Modeling. (line 50)
+* scene:sky-and-grass: Solid Modeling. (line 53)
+* scene:sphere: Solid Modeling. (line 37)
+* scene:sun: Solid Modeling. (line 56)
+* scene:viewpoint: Solid Modeling. (line 81)
+* scene:viewpoints: Solid Modeling. (line 88)
+* scheme-report-environment: Eval. (line 28)
+* schmooz: Schmooz. (line 16)
+* secant:find-bracketed-root: Root Finding. (line 71)
+* secant:find-root: Root Finding. (line 70)
+* second: SRFI-1. (line 55)
* seed->random-state: Exact Random Numbers.
- (line 35) |
-* set: Setters. (line 30) |
-* set-color: Graphics Context. (line 11) |
-* set-difference: Lists as sets. (line 42) |
-* set-font: Graphics Context. (line 18) |
-* set-glyphsize: Graphics Context. (line 48) |
-* set-linedash: Graphics Context. (line 39) |
-* set-linewidth: Graphics Context. (line 34) |
-* set-margin-templates: Legending. (line 27) |
-* Setter: Collections. (line 107) |
-* setter: Setters. (line 22) |
-* setup-plot: Column Ranges. (line 22) |
-* seventh: SRFI-1. (line 63) |
-* si:conversion-factor: Metric Units. (line 160) |
+ (line 35)
+* set: Setters. (line 30)
+* set-color: Graphics Context. (line 11)
+* set-difference: Lists as sets. (line 42)
+* set-font: Graphics Context. (line 18)
+* set-glyphsize: Graphics Context. (line 48)
+* set-linedash: Graphics Context. (line 39)
+* set-linewidth: Graphics Context. (line 34)
+* set-margin-templates: Legending. (line 27)
+* Setter: Collections. (line 107)
+* setter: Setters. (line 22)
+* setup-plot: Column Ranges. (line 22)
+* seventh: SRFI-1. (line 63)
+* si:conversion-factor: Metric Units. (line 160)
* singleton-wt-tree: Construction of Weight-Balanced Trees.
- (line 58) |
-* sixth: SRFI-1. (line 62) |
-* size <1>: Collections. (line 104) |
-* size: Yasos interface. (line 41) |
-* sky-color-xyy: Daylight. (line 85) |
-* slib:error: System. (line 45) |
-* slib:eval: System. (line 30) |
-* slib:eval-load: System. (line 35) |
-* slib:exit: System. (line 51) |
-* slib:in-catalog?: Require. (line 57) |
-* slib:load: System. (line 20) |
-* slib:load-compiled: System. (line 15) |
-* slib:load-source: System. (line 9) |
-* slib:report: Configuration. (line 43) |
-* slib:report-version: Configuration. (line 36) |
-* slib:warn: System. (line 42) |
-* snap-range: Column Ranges. (line 16) |
-* software-type: Configuration. (line 32) |
-* 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: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) |
-* solidify-database: Using Databases. (line 86) |
+ (line 58)
+* sixth: SRFI-1. (line 62)
+* size <1>: Collections. (line 104)
+* size: Yasos interface. (line 41)
+* sky-color-xyy: Daylight. (line 85)
+* slib:error: System. (line 45)
+* slib:eval: System. (line 30)
+* slib:eval-load: System. (line 35)
+* slib:exit: System. (line 51)
+* slib:in-catalog?: Require. (line 57)
+* slib:load: System. (line 20)
+* slib:load-compiled: System. (line 15)
+* slib:load-source: System. (line 9)
+* slib:report: Configuration. (line 43)
+* slib:report-version: Configuration. (line 36)
+* slib:warn: System. (line 42)
+* snap-range: Column Ranges. (line 16)
+* software-type: Configuration. (line 32)
+* 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: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)
+* 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) |
-* soundex: Soundex. (line 9) |
-* span: SRFI-1. (line 148) |
-* span!: SRFI-1. (line 150) |
-* spectrum->chromaticity: Spectra. (line 111) |
-* spectrum->XYZ: Spectra. (line 85) |
-* split-at: SRFI-1. (line 80) |
-* split-at!: SRFI-1. (line 81) |
+ (line 42)
+* some: Lists as sets. (line 73)
+* sort: Sorting. (line 119)
+* sort!: Sorting. (line 126)
+* sorted?: Sorting. (line 88)
+* soundex: Soundex. (line 9)
+* span: SRFI-1. (line 148)
+* span!: SRFI-1. (line 150)
+* spectrum->chromaticity: Spectra. (line 111)
+* spectrum->XYZ: Spectra. (line 85)
+* split-at: SRFI-1. (line 80)
+* split-at!: SRFI-1. (line 81)
* sprintf: Standard Formatted Output.
- (line 11) |
-* sRGB->CIEXYZ: Color Conversions. (line 48) |
-* srgb->color: Color Spaces. (line 195) |
-* sRGB->e-sRGB: Color Conversions. (line 59) |
-* sRGB->xRGB: Color Conversions. (line 53) |
+ (line 11)
+* sRGB->CIEXYZ: Color Conversions. (line 48)
+* srgb->color: Color Spaces. (line 195)
+* sRGB->e-sRGB: Color Conversions. (line 59)
+* sRGB->xRGB: Color Conversions. (line 53)
* sscanf: Standard Formatted Input.
- (line 15) |
-* stack: Trace. (line 49) |
-* stack-all: Debug. (line 27) |
-* stackf: Trace. (line 85) |
-* string->color: Color Data-Type. (line 98) |
-* string-capitalize: String-Case. (line 11) |
-* string-capitalize!: String-Case. (line 16) |
-* string-ci->symbol: String-Case. (line 19) |
+ (line 15)
+* stack: Trace. (line 49)
+* stack-all: Debug. (line 27)
+* stackf: Trace. (line 85)
+* string->color: Color Data-Type. (line 98)
+* string-capitalize: String-Case. (line 11)
+* string-capitalize!: String-Case. (line 16)
+* string-ci->symbol: String-Case. (line 19)
* string-copy: Rev4 Optional Procedures.
- (line 14) |
-* string-downcase: String-Case. (line 10) |
-* string-downcase!: String-Case. (line 15) |
+ (line 14)
+* string-downcase: String-Case. (line 10)
+* string-downcase!: String-Case. (line 15)
* string-fill!: Rev4 Optional Procedures.
- (line 16) |
-* string-index: String Search. (line 9) |
-* string-index-ci: String Search. (line 10) |
-* string-join: Batch. (line 123) |
-* string-null?: Rev2 Procedures. (line 33) |
-* string-reverse-index: String Search. (line 14) |
-* string-reverse-index-ci: String Search. (line 15) |
-* string-subst: String Search. (line 56) |
-* string-upcase: String-Case. (line 9) |
-* string-upcase!: String-Case. (line 14) |
-* StudlyCapsExpand: String-Case. (line 29) |
-* sub-vicinity: Vicinity. (line 73) |
-* subarray: Subarrays. (line 9) |
-* 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?: String Search. (line 19) |
-* substv: Tree Operations. (line 13) |
-* sunlight-chromaticity: Daylight. (line 65) |
-* sunlight-spectrum: Daylight. (line 61) |
-* 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) |
-* sync-base on base-table: The Base. (line 53) |
-* sync-database: Using Databases. (line 82) |
-* sync-database on relational-database: Database Operations. (line 37) |
-* syncase:eval: Syntax-Case Macros. (line 15) |
-* syncase:expand: Syntax-Case Macros. (line 10) |
-* syncase:load: Syntax-Case Macros. (line 21) |
-* syncase:sanity-check: Syntax-Case Macros. (line 67) |
-* synclo:eval: Syntactic Closures. (line 15) |
-* synclo:expand: Syntactic Closures. (line 10) |
-* synclo:load: Syntactic Closures. (line 21) |
-* syntax-rules: Macro by Example. (line 56) |
-* system: System Interface. (line 16) |
-* system->line: Line I/O. (line 35) |
-* table->linked-html: HTML Tables. (line 34) |
-* table->linked-page: HTML Tables. (line 42) |
-* table-exists? on relational-database: Database Operations. (line 48) |
-* table-name->filename: HTML Tables. (line 31) |
-* take: SRFI-1. (line 71) |
-* take!: SRFI-1. (line 72) |
-* take-right: SRFI-1. (line 74) |
-* temperature->chromaticity: Spectra. (line 150) |
-* temperature->XYZ: Spectra. (line 135) |
-* tenth: SRFI-1. (line 66) |
-* third: SRFI-1. (line 57) |
-* time-zone: Time Zone. (line 68) |
-* time:gmtime: Time Infrastructure. (line 9) |
-* time:invert: Time Infrastructure. (line 10) |
-* time:split: Time Infrastructure. (line 11) |
-* title-bottom: Legending. (line 12) |
-* title-top: Legending. (line 7) |
-* tmpnam: Input/Output. (line 65) |
-* tok:bump-column: Token definition. (line 61) |
-* tok:char-group: Token definition. (line 7) |
+ (line 16)
+* string-index: String Search. (line 9)
+* string-index-ci: String Search. (line 10)
+* string-join: Batch. (line 123)
+* string-null?: Rev2 Procedures. (line 33)
+* string-reverse-index: String Search. (line 14)
+* string-reverse-index-ci: String Search. (line 15)
+* string-subst: String Search. (line 56)
+* string-upcase: String-Case. (line 9)
+* string-upcase!: String-Case. (line 14)
+* StudlyCapsExpand: String-Case. (line 29)
+* sub-vicinity: Vicinity. (line 73)
+* subarray: Subarrays. (line 9)
+* 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?: String Search. (line 19)
+* substv: Tree Operations. (line 13)
+* sunlight-chromaticity: Daylight. (line 65)
+* sunlight-spectrum: Daylight. (line 61)
+* 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)
+* sync-base on base-table: The Base. (line 53)
+* sync-database: Using Databases. (line 82)
+* sync-database on relational-database: Database Operations. (line 37)
+* syncase:eval: Syntax-Case Macros. (line 15)
+* syncase:expand: Syntax-Case Macros. (line 10)
+* syncase:load: Syntax-Case Macros. (line 21)
+* syncase:sanity-check: Syntax-Case Macros. (line 67)
+* synclo:eval: Syntactic Closures. (line 15)
+* synclo:expand: Syntactic Closures. (line 10)
+* synclo:load: Syntactic Closures. (line 21)
+* syntax-rules: Macro by Example. (line 56)
+* system: System Interface. (line 16)
+* system->line: Line I/O. (line 35)
+* table->linked-html: HTML Tables. (line 34)
+* table->linked-page: HTML Tables. (line 42)
+* table-exists? on relational-database: Database Operations. (line 48)
+* table-name->filename: HTML Tables. (line 31)
+* take: SRFI-1. (line 71)
+* take!: SRFI-1. (line 72)
+* take-right: SRFI-1. (line 74)
+* temperature->chromaticity: Spectra. (line 150)
+* temperature->XYZ: Spectra. (line 135)
+* tenth: SRFI-1. (line 66)
+* third: SRFI-1. (line 57)
+* time-zone: Time Zone. (line 68)
+* time:gmtime: Time Infrastructure. (line 9)
+* time:invert: Time Infrastructure. (line 10)
+* time:split: Time Infrastructure. (line 11)
+* title-bottom: Legending. (line 12)
+* title-top: Legending. (line 7)
+* tmpnam: Input/Output. (line 65)
+* tok:bump-column: Token definition. (line 61)
+* tok:char-group: Token definition. (line 7)
* top-refs: Top-level Variable References.
- (line 15) |
+ (line 15)
* top-refs<-file: Top-level Variable References.
- (line 19) |
-* topological-sort: Topological Sort. (line 13) |
-* trace: Trace. (line 33) |
-* trace-all: Debug. (line 19) |
-* tracef: Trace. (line 81) |
-* track: Trace. (line 41) |
-* track-all: Debug. (line 23) |
-* trackf: Trace. (line 83) |
-* transact-file-replacement: Transactions. (line 98) |
-* transcript-off: Transcripts. (line 10) |
-* transcript-on: Transcripts. (line 9) |
-* transformer: Syntactic Closures. (line 113) |
-* transpose: Matrix Algebra. (line 26) |
-* truncate-up-to: Batch. (line 113) |
-* tsort: Topological Sort. (line 12) |
-* type-of: Type Coercion. (line 9) |
-* tz:params: Time Zone. (line 73) |
-* tz:std-offset: Time Zone. (line 89) |
-* tzfile:read: Time Infrastructure. (line 15) |
-* tzset: Time Zone. (line 97) |
-* unbreak: Breakpoints. (line 37) |
-* unbreakf: Breakpoints. (line 58) |
-* union: Lists as sets. (line 21) |
-* unmake-method!: Object. (line 75) |
-* unstack: Trace. (line 71) |
-* untrace: Trace. (line 57) |
-* untracef: Trace. (line 96) |
-* untrack: Trace. (line 64) |
-* unzip1: SRFI-1. (line 100) |
-* unzip2: SRFI-1. (line 101) |
-* unzip3: SRFI-1. (line 102) |
-* unzip4: SRFI-1. (line 103) |
-* unzip5: SRFI-1. (line 104) |
-* uri->tree: URI. (line 47) |
-* uri:decode-query: URI. (line 71) |
-* uri:make-path: URI. (line 21) |
-* uri:path->keys: URI. (line 87) |
-* uri:split-fields: URI. (line 67) |
-* uric:decode: URI. (line 81) |
-* uric:encode: URI. (line 76) |
-* url->color-dictionary: Color Names. (line 77) |
-* user-email-address: Transactions. (line 133) |
-* user-vicinity: Vicinity. (line 47) |
-* values: Values. (line 9) |
-* vector->array: Arrays. (line 111) |
+ (line 19)
+* topological-sort: Topological Sort. (line 13)
+* trace: Trace. (line 33)
+* trace-all: Debug. (line 19)
+* tracef: Trace. (line 81)
+* track: Trace. (line 41)
+* track-all: Debug. (line 23)
+* trackf: Trace. (line 83)
+* transact-file-replacement: Transactions. (line 98)
+* transcript-off: Transcripts. (line 10)
+* transcript-on: Transcripts. (line 9)
+* transformer: Syntactic Closures. (line 113)
+* transpose: Matrix Algebra. (line 26)
+* truncate-up-to: Batch. (line 113)
+* tsort: Topological Sort. (line 12)
+* type-of: Type Coercion. (line 9)
+* tz:params: Time Zone. (line 73)
+* tz:std-offset: Time Zone. (line 89)
+* tzfile:read: Time Infrastructure. (line 15)
+* tzset: Time Zone. (line 97)
+* unbreak: Breakpoints. (line 37)
+* unbreakf: Breakpoints. (line 58)
+* union: Lists as sets. (line 21)
+* unmake-method!: Object. (line 75)
+* unstack: Trace. (line 71)
+* untrace: Trace. (line 57)
+* untracef: Trace. (line 96)
+* untrack: Trace. (line 64)
+* unzip1: SRFI-1. (line 100)
+* unzip2: SRFI-1. (line 101)
+* unzip3: SRFI-1. (line 102)
+* unzip4: SRFI-1. (line 103)
+* unzip5: SRFI-1. (line 104)
+* uri->tree: URI. (line 47)
+* uri:decode-query: URI. (line 71)
+* uri:make-path: URI. (line 21)
+* uri:path->keys: URI. (line 87)
+* uri:split-fields: URI. (line 67)
+* uric:decode: URI. (line 81)
+* uric:encode: URI. (line 76)
+* url->color-dictionary: Color Names. (line 77)
+* user-email-address: Transactions. (line 133)
+* user-vicinity: Vicinity. (line 47)
+* values: Values. (line 9)
+* vector->array: Arrays. (line 111)
* vector-fill!: Rev4 Optional Procedures.
- (line 18) |
-* vet-slib: Module Analysis. (line 9) |
-* vicinity:suffix?: Vicinity. (line 58) |
-* vrml: Solid Modeling. (line 12) |
-* vrml-append: Solid Modeling. (line 16) |
-* vrml-to-file: Solid Modeling. (line 20) |
-* wavelength->chromaticity: Spectra. (line 120) |
-* wavelength->XYZ: Spectra. (line 115) |
-* whole-page <1>: Rectangles. (line 11) |
-* whole-page: PostScript Graphing. (line 37) |
-* with-input-from-file: With-File. (line 9) |
-* with-load-pathname: Vicinity. (line 79) |
-* with-output-to-file: With-File. (line 10) |
-* within-database: Within-database. (line 7) |
-* 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-database: Using Databases. (line 79) |
-* write-database on relational-database: Database Operations. (line 26) |
-* write-line: Line I/O. (line 29) |
+ (line 18)
+* vet-slib: Module Analysis. (line 9)
+* vicinity:suffix?: Vicinity. (line 58)
+* vrml: Solid Modeling. (line 12)
+* vrml-append: Solid Modeling. (line 16)
+* vrml-to-file: Solid Modeling. (line 20)
+* wavelength->chromaticity: Spectra. (line 120)
+* wavelength->XYZ: Spectra. (line 115)
+* whole-page <1>: Rectangles. (line 11)
+* whole-page: PostScript Graphing. (line 37)
+* with-input-from-file: With-File. (line 9)
+* with-load-pathname: Vicinity. (line 79)
+* with-output-to-file: With-File. (line 10)
+* within-database: Within-database. (line 7)
+* 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-database: Using Databases. (line 79)
+* write-database on relational-database: Database Operations. (line 26)
+* write-line: Line I/O. (line 29)
* wt-tree/add: Basic Operations on Weight-Balanced Trees.
- (line 20) |
+ (line 20)
* wt-tree/add!: Basic Operations on Weight-Balanced Trees.
- (line 28) |
+ (line 28)
* wt-tree/delete: Basic Operations on Weight-Balanced Trees.
- (line 48) |
+ (line 48)
* wt-tree/delete!: Basic Operations on Weight-Balanced Trees.
- (line 55) |
+ (line 55)
* wt-tree/delete-min: Indexing Operations on Weight-Balanced Trees.
- (line 60) |
+ (line 60)
* wt-tree/delete-min!: Indexing Operations on Weight-Balanced Trees.
- (line 70) |
+ (line 70)
* wt-tree/difference: Advanced Operations on Weight-Balanced Trees.
- (line 49) |
+ (line 49)
* wt-tree/empty?: Basic Operations on Weight-Balanced Trees.
- (line 12) |
+ (line 12)
* wt-tree/fold: Advanced Operations on Weight-Balanced Trees.
- (line 91) |
+ (line 91)
* wt-tree/for-each: Advanced Operations on Weight-Balanced Trees.
- (line 112) |
+ (line 112)
* wt-tree/index: Indexing Operations on Weight-Balanced Trees.
- (line 12) |
+ (line 12)
* wt-tree/index-datum: Indexing Operations on Weight-Balanced Trees.
- (line 13) |
+ (line 13)
* wt-tree/index-pair: Indexing Operations on Weight-Balanced Trees.
- (line 14) |
+ (line 14)
* wt-tree/intersection: Advanced Operations on Weight-Balanced Trees.
- (line 38) |
+ (line 38)
* wt-tree/lookup: Basic Operations on Weight-Balanced Trees.
- (line 41) |
+ (line 41)
* wt-tree/member?: Basic Operations on Weight-Balanced Trees.
- (line 35) |
+ (line 35)
* wt-tree/min: Indexing Operations on Weight-Balanced Trees.
- (line 43) |
+ (line 43)
* wt-tree/min-datum: Indexing Operations on Weight-Balanced Trees.
- (line 44) |
+ (line 44)
* wt-tree/min-pair: Indexing Operations on Weight-Balanced Trees.
- (line 45) |
+ (line 45)
* wt-tree/rank: Indexing Operations on Weight-Balanced Trees.
- (line 35) |
+ (line 35)
* wt-tree/set-equal?: Advanced Operations on Weight-Balanced Trees.
- (line 74) |
+ (line 74)
* wt-tree/size: Basic Operations on Weight-Balanced Trees.
- (line 16) |
+ (line 16)
* wt-tree/split<: Advanced Operations on Weight-Balanced Trees.
- (line 11) |
+ (line 11)
* wt-tree/split>: Advanced Operations on Weight-Balanced Trees.
- (line 18) |
+ (line 18)
* wt-tree/subset?: Advanced Operations on Weight-Balanced Trees.
- (line 59) |
+ (line 59)
* wt-tree/union: Advanced Operations on Weight-Balanced Trees.
- (line 25) |
-* x-axis: Legending. (line 51) |
-* xcons: SRFI-1. (line 15) |
-* xRGB->CIEXYZ: Color Conversions. (line 51) |
-* xrgb->color: Color Spaces. (line 215) |
-* xRGB->sRGB: Color Conversions. (line 54) |
-* xyY->XYZ: Spectra. (line 188) |
-* xyY:normalize-colors: Spectra. (line 190) |
-* XYZ->chromaticity: Spectra. (line 165) |
-* XYZ->xyY: Spectra. (line 184) |
-* y-axis: Legending. (line 48) |
-* zenith-xyy: Daylight. (line 70) |
-* zip: SRFI-1. (line 98) |
+ (line 25)
+* x-axis: Legending. (line 51)
+* x1: Legacy Plotting. (line 18) |
+* xcons: SRFI-1. (line 15)
+* xRGB->CIEXYZ: Color Conversions. (line 51)
+* xrgb->color: Color Spaces. (line 215)
+* xRGB->sRGB: Color Conversions. (line 54)
+* xyY->XYZ: Spectra. (line 188)
+* xyY:normalize-colors: Spectra. (line 190)
+* XYZ->chromaticity: Spectra. (line 165)
+* XYZ->xyY: Spectra. (line 184)
+* y-axis: Legending. (line 48)
+* zenith-xyy: Daylight. (line 70)
+* zip: SRFI-1. (line 98)
Variable Index
**************
This is an alphabetical list of all the global variables in SLIB.
-
+
* Menu:
-* *argv*: Getopt. (line 25) |
-* *base-table-implementations*: Base Table. (line 52) |
-* *catalog*: Require. (line 10) |
-* *http:byline*: HTTP and CGI. (line 17) |
-* *operating-system*: Batch. (line 41) |
-* *optarg*: Getopt. (line 35) |
-* *optind*: Getopt. (line 30) |
-* *qp-width*: Quick Print. (line 28) |
+* *argv*: Getopt. (line 25)
+* *base-table-implementations*: Base Table. (line 52)
+* *catalog*: Require. (line 10)
+* *http:byline*: HTTP and CGI. (line 17)
+* *operating-system*: Batch. (line 41)
+* *optarg*: Getopt. (line 35)
+* *optind*: Getopt. (line 30)
+* *qp-width*: Quick Print. (line 28)
* *random-state*: Exact Random Numbers.
- (line 21) |
-* *ruleset*: Commutative Rings. (line 76) |
+ (line 21)
+* *ruleset*: Commutative Rings. (line 76)
* *syn-defs*: Ruleset Definition and Use.
- (line 7) |
+ (line 7)
* *syn-ignore-whitespace*: Ruleset Definition and Use.
- (line 12) |
-* *timezone*: Time Zone. (line 111) |
-* atm-hec-polynomial: Cyclic Checksum. (line 115) |
-* bottomedge: Legending. (line 18) |
-* char-code-limit: Configuration. (line 11) |
-* charplot:dimensions: Character Plotting. (line 9) |
-* CIEXYZ:A: Color Conversions. (line 21) |
-* CIEXYZ:B: Color Conversions. (line 22) |
-* CIEXYZ:C: Color Conversions. (line 23) |
-* CIEXYZ:D50: Color Conversions. (line 17) |
-* CIEXYZ:D65: Color Conversions. (line 13) |
-* CIEXYZ:E: Color Conversions. (line 24) |
-* crc-08-polynomial: Cyclic Checksum. (line 109) |
-* crc-10-polynomial: Cyclic Checksum. (line 98) |
-* crc-12-polynomial: Cyclic Checksum. (line 77) |
-* crc-16-polynomial: Cyclic Checksum. (line 69) |
-* crc-32-polynomial: Cyclic Checksum. (line 45) |
-* crc-ccitt-polynomial: Cyclic Checksum. (line 61) |
-* D50: Color Data-Type. (line 120) |
-* D65: Color Data-Type. (line 116) |
-* daylight?: Time Zone. (line 117) |
-* debug:max-count: Trace. (line 24) |
-* distribute*: Commutative Rings. (line 100) |
-* distribute/: Commutative Rings. (line 104) |
-* dowcrc-polynomial: Cyclic Checksum. (line 120) |
-* graph:dimensions: Legacy Plotting. (line 7) |
-* graphrect: Rectangles. (line 26) |
-* leftedge: Legending. (line 22) |
-* most-positive-fixnum: Configuration. (line 15) |
-* nil: Miscellany. (line 70) |
+ (line 12)
+* *timezone*: Time Zone. (line 111)
+* atm-hec-polynomial: Cyclic Checksum. (line 115)
+* bottomedge: Legending. (line 18)
+* char-code-limit: Configuration. (line 11)
+* charplot:dimensions: Character Plotting. (line 9)
+* CIEXYZ:A: Color Conversions. (line 21)
+* CIEXYZ:B: Color Conversions. (line 22)
+* CIEXYZ:C: Color Conversions. (line 23)
+* CIEXYZ:D50: Color Conversions. (line 17)
+* CIEXYZ:D65: Color Conversions. (line 13)
+* CIEXYZ:E: Color Conversions. (line 24)
+* crc-08-polynomial: Cyclic Checksum. (line 109)
+* crc-10-polynomial: Cyclic Checksum. (line 98)
+* crc-12-polynomial: Cyclic Checksum. (line 77)
+* crc-16-polynomial: Cyclic Checksum. (line 69)
+* crc-32-polynomial: Cyclic Checksum. (line 45)
+* crc-ccitt-polynomial: Cyclic Checksum. (line 61)
+* D50: Color Data-Type. (line 120)
+* D65: Color Data-Type. (line 116)
+* daylight?: Time Zone. (line 117)
+* debug:max-count: Trace. (line 24)
+* distribute*: Commutative Rings. (line 100)
+* distribute/: Commutative Rings. (line 104)
+* dowcrc-polynomial: Cyclic Checksum. (line 120)
+* graph:dimensions: Legacy Plotting. (line 7)
+* graphrect: Rectangles. (line 26)
+* leftedge: Legending. (line 22)
+* most-positive-fixnum: Configuration. (line 15)
+* nil: Miscellany. (line 70)
* number-wt-type: Construction of Weight-Balanced Trees.
- (line 39) |
-* plotrect: Rectangles. (line 22) |
-* prime:prngs: Prime Numbers. (line 9) |
-* prime:trials: Prime Numbers. (line 24) |
-* rightedge: Legending. (line 23) |
-* slib:form-feed: Configuration. (line 29) |
-* slib:tab: Configuration. (line 26) |
+ (line 39)
+* plotrect: Rectangles. (line 22)
+* prime:prngs: Prime Numbers. (line 9)
+* prime:trials: Prime Numbers. (line 24)
+* rightedge: Legending. (line 23)
+* slib:form-feed: Configuration. (line 29)
+* slib:tab: Configuration. (line 26)
* stderr: Standard Formatted I/O.
- (line 25) |
+ (line 25)
* stdin: Standard Formatted I/O.
- (line 19) |
+ (line 19)
* stdout: Standard Formatted I/O.
- (line 22) |
+ (line 22)
* string-wt-type: Construction of Weight-Balanced Trees.
- (line 45) |
-* subarray0: Subarrays. (line 41) |
-* t: Miscellany. (line 67) |
-* tok:decimal-digits: Token definition. (line 41) |
-* tok:lower-case: Token definition. (line 48) |
-* tok:upper-case: Token definition. (line 44) |
-* tok:whitespaces: Token definition. (line 52) |
-* topedge: Legending. (line 17) |
-* tzname: Time Zone. (line 123) |
-* usb-token-polynomial: Cyclic Checksum. (line 124) |
+ (line 45)
+* subarray0: Subarrays. (line 41)
+* t: Miscellany. (line 67)
+* tok:decimal-digits: Token definition. (line 41)
+* tok:lower-case: Token definition. (line 48)
+* tok:upper-case: Token definition. (line 44)
+* tok:whitespaces: Token definition. (line 52)
+* topedge: Legending. (line 17)
+* tzname: Time Zone. (line 123)
+* usb-token-polynomial: Cyclic Checksum. (line 124)
Concept and Feature Index
*************************
-
+
* Menu:
-* aggregate <1>: Module Semantics. (line 20) |
-* aggregate: Library Catalogs. (line 24) |
-* alarm: Multi-Processing. (line 10) |
-* alarm-interrupt: Multi-Processing. (line 10) |
-* alist: Association Lists. (line 6) |
+* =>: Guarded COND Clause. (line 21) |
+* aggregate <1>: Module Semantics. (line 20)
+* aggregate: Library Catalogs. (line 24)
+* alarm: Multi-Processing. (line 10)
+* alarm-interrupt: Multi-Processing. (line 10)
+* alist: Association Lists. (line 6)
* alist-table <1>: Relational Database Objects.
- (line 23) |
-* alist-table <2>: The Base. (line 12) |
-* alist-table: Base Table. (line 16) |
-* ange-ftp: URI. (line 118) |
-* appearance: Solid Modeling. (line 320) |
-* array: Arrays. (line 6) |
-* array-for-each: Array Mapping. (line 6) |
-* association function: Association Lists. (line 17) |
-* attribute-value: HTML. (line 10) |
-* Auto-sharing: Using Databases. (line 25) |
+ (line 23)
+* alist-table <2>: The Base. (line 12)
+* alist-table: Base Table. (line 16)
+* and-let*: Guarded LET* special form. |
+ (line 6) |
+* ange-ftp: URI. (line 118)
+* appearance: Solid Modeling. (line 320)
+* array: Arrays. (line 6)
+* array-for-each: Array Mapping. (line 6)
+* association function: Association Lists. (line 17)
+* attribute-value: HTML. (line 10)
+* Auto-sharing: Using Databases. (line 25)
* balanced binary trees: Weight-Balanced Trees.
- (line 8) |
-* base: URI. (line 39) |
-* base-table: Base Table. (line 6) |
-* batch: Batch. (line 6) |
-* binary: Byte. (line 56) |
+ (line 8)
+* base: URI. (line 39)
+* base-table: Base Table. (line 6)
+* batch: Batch. (line 6)
+* binary: Byte. (line 56)
* binary trees: Weight-Balanced Trees.
- (line 8) |
+ (line 8)
* binary trees, as discrete maps: Weight-Balanced Trees.
- (line 52) |
+ (line 52)
* binary trees, as sets: Weight-Balanced Trees.
- (line 52) |
+ (line 52)
* binding power: Precedence Parsing Overview.
- (line 22) |
-* break: Breakpoints. (line 6) |
-* byte: Byte. (line 6) |
+ (line 22)
+* break: Breakpoints. (line 6)
+* byte: Byte. (line 6)
* byte-number: Byte/Number Conversions.
- (line 6) |
-* calendar time <1>: Posix Time. (line 10) |
-* calendar time: Time and Date. (line 16) |
-* Calendar-Time: Posix Time. (line 10) |
-* caltime: Posix Time. (line 10) |
-* canonical: Color Names. (line 16) |
-* careful: Commutative Rings. (line 14) |
-* catalog: Require. (line 6) |
-* Catalog File: Library Catalogs. (line 6) |
-* certificate: Transactions. (line 36) |
-* cgi: HTTP and CGI. (line 6) |
-* chapter-order: Chapter Ordering. (line 6) |
-* charplot: Character Plotting. (line 6) |
-* Chroma: Color Spaces. (line 141) |
-* cie1931: Spectra. (line 31) |
-* cie1964: Spectra. (line 27) |
-* ciexyz: Spectra. (line 35) |
-* CIEXYZ: Color Spaces. (line 18) |
-* cksum-string: Cyclic Checksum. (line 160) |
-* coerce: Type Coercion. (line 6) |
-* collect: Collections. (line 6) |
-* color-database: Color Names. (line 65) |
-* color-names: Color Names. (line 6) |
-* command line: Command Line. (line 10) |
-* commentfix: Rule Types. (line 35) |
+ (line 6)
+* calendar time <1>: Posix Time. (line 10)
+* calendar time: Time and Date. (line 16)
+* Calendar-Time: Posix Time. (line 10)
+* caltime: Posix Time. (line 10)
+* canonical: Color Names. (line 16)
+* careful: Commutative Rings. (line 14)
+* catalog: Require. (line 6)
+* Catalog File: Library Catalogs. (line 6)
+* certificate: Transactions. (line 36)
+* cgi: HTTP and CGI. (line 6)
+* chapter-order: Chapter Ordering. (line 6)
+* charplot: Character Plotting. (line 6)
+* Chroma: Color Spaces. (line 141)
+* cie1931: Spectra. (line 31)
+* cie1964: Spectra. (line 27)
+* ciexyz: Spectra. (line 35)
+* CIEXYZ: Color Spaces. (line 18)
+* cksum-string: Cyclic Checksum. (line 160)
+* coerce: Type Coercion. (line 6)
+* collect: Collections. (line 6)
+* color-database: Color Names. (line 65)
+* color-names: Color Names. (line 6)
+* command line: Command Line. (line 10)
+* commentfix: Rule Types. (line 35)
* common-list-functions <1>: Common List Functions.
- (line 6) |
-* common-list-functions: Collections. (line 74) |
-* commutative-ring: Commutative Rings. (line 11) |
-* compiled: Library Catalogs. (line 21) |
-* compiling: Module Conventions. (line 11) |
-* Coordinated Universal Time: Posix Time. (line 13) |
-* copyright: Copyrights. (line 6) |
-* crc: Cyclic Checksum. (line 6) |
-* cvs: CVS. (line 6) |
-* database-commands: Command Example. (line 10) |
-* databases <1>: Command Example. (line 11) |
+ (line 6)
+* common-list-functions: Collections. (line 74)
+* commutative-ring: Commutative Rings. (line 11)
+* compiled: Library Catalogs. (line 21)
+* compiling: Module Conventions. (line 11)
+* Coordinated Universal Time: Posix Time. (line 13)
+* copyright: Copyrights. (line 6)
+* crc: Cyclic Checksum. (line 6)
+* cvs: CVS. (line 6)
+* database-commands: Command Example. (line 10)
+* databases <1>: Command Example. (line 11)
* databases <2>: Define-tables Example.
- (line 12) |
-* databases <3>: Using Databases. (line 6) |
-* databases: Batch. (line 145) |
-* daylight: Daylight. (line 6) |
-* db->html: HTML Tables. (line 6) |
-* debug <1>: Breakpoints. (line 11) |
-* debug: Debug. (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) |
-* diff: Sequence Comparison. (line 6) |
-* directory: Directories. (line 6) |
+ (line 12)
+* databases <3>: Using Databases. (line 6)
+* databases: Batch. (line 145)
+* daylight: Daylight. (line 6)
+* db->html: HTML Tables. (line 6)
+* debug <1>: Breakpoints. (line 11)
+* debug: Debug. (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)
+* diff: Sequence Comparison. (line 6)
+* directory: Directories. (line 6)
* Discrete Fourier Transform: Fast Fourier Transform.
- (line 11) |
+ (line 11)
* discrete maps, using binary trees: Weight-Balanced Trees.
- (line 52) |
-* DrScheme: Installation. (line 103) |
-* dynamic: Dynamic Data Type. (line 6) |
-* dynamic-wind: Dynamic-Wind. (line 6) |
-* e-sRGB: Color Spaces. (line 218) |
-* emacs: Transactions. (line 33) |
-* Encapsulated-PostScript: PostScript Graphing. (line 23) |
-* escaped: URI. (line 77) |
-* EUC: Extra-SLIB Packages. (line 53) |
-* Euclidean Domain: Commutative Rings. (line 67) |
-* eval: Eval. (line 6) |
-* exchanger: Miscellany. (line 31) |
-* factor: Prime Numbers. (line 6) |
-* feature <1>: About this manual. (line 13) |
-* feature <2>: Require. (line 18) |
-* feature: Feature. (line 6) |
+ (line 52)
+* DrScheme: Installation. (line 103)
+* dynamic: Dynamic Data Type. (line 6)
+* dynamic-wind: Dynamic-Wind. (line 6)
+* e-sRGB: Color Spaces. (line 218)
+* emacs: Transactions. (line 33)
+* Encapsulated-PostScript: PostScript Graphing. (line 23)
+* escaped: URI. (line 77)
+* EUC: Extra-SLIB Packages. (line 53)
+* Euclidean Domain: Commutative Rings. (line 67)
+* eval: Eval. (line 6)
+* exchanger: Miscellany. (line 31)
+* factor: Prime Numbers. (line 6)
+* feature <1>: About this manual. (line 13)
+* feature <2>: Require. (line 18)
+* feature: Feature. (line 6)
* fft: Fast Fourier Transform.
- (line 6) |
-* File Transfer Protocol: URI. (line 113) |
-* file-lock: Transactions. (line 32) |
-* filename: Filenames. (line 6) |
-* fluid-let: Fluid-Let. (line 6) |
-* form: HTML. (line 63) |
-* format: Format. (line 6) |
-* Gambit-C: Installation. (line 116) |
-* gamut: Color Spaces. (line 18) |
-* generic-write: Generic-Write. (line 6) |
-* getit: URI. (line 118) |
-* getopt <1>: Command Example. (line 14) |
-* getopt: Getopt. (line 6) |
-* getopt-parameters <1>: Command Example. (line 12) |
+ (line 6)
+* File Transfer Protocol: URI. (line 113)
+* file-lock: Transactions. (line 32)
+* filename: Filenames. (line 6)
+* fluid-let: Fluid-Let. (line 6)
+* form: HTML. (line 63)
+* format: Format. (line 6)
+* Gambit-C: Installation. (line 116)
+* gamut: Color Spaces. (line 18)
+* generic-write: Generic-Write. (line 6)
+* getit: URI. (line 118)
+* getopt <1>: Command Example. (line 14)
+* getopt: Getopt. (line 6)
+* getopt-parameters <1>: Command Example. (line 12)
* getopt-parameters: Getopt Parameter lists.
- (line 6) |
-* glob <1>: Batch. (line 148) |
-* glob: Filenames. (line 6) |
-* Gray code: Hilbert Space-Filling Curve. |
- (line 52) |
-* Guile: Installation. (line 119) |
-* hash: Hashing. (line 6) |
-* hash-table: Hash Tables. (line 6) |
-* Hilbert: Hilbert Space-Filling Curve. |
- (line 8) |
-* Hilbert Space-Filling Curve: Hilbert Space-Filling Curve. |
- (line 8) |
-* hilbert-fill: Hilbert Space-Filling Curve. |
- (line 6) |
-* HOME <1>: Vicinity. (line 51) |
-* HOME: Catalog Creation. (line 19) |
-* homecat: Catalog Vicinities. (line 35) |
-* html-for-each: Parsing HTML. (line 6) |
-* html-form: HTML. (line 6) |
-* http: HTTP and CGI. (line 6) |
-* Hue: Color Spaces. (line 143) |
-* ICC Profile: Color Spaces. (line 191) |
-* implcat: Catalog Vicinities. (line 23) |
+ (line 6)
+* glob <1>: Batch. (line 148)
+* glob: Filenames. (line 6)
+* Gray code: Hilbert Space-Filling Curve.
+ (line 52)
+* guarded-cond-clause: Guarded COND Clause. (line 6) |
+* Guile: Installation. (line 119)
+* hash: Hashing. (line 6)
+* hash-table: Hash Tables. (line 6)
+* Hilbert: Hilbert Space-Filling Curve.
+ (line 8)
+* Hilbert Space-Filling Curve: Hilbert Space-Filling Curve.
+ (line 8)
+* hilbert-fill: Hilbert Space-Filling Curve.
+ (line 6)
+* HOME <1>: Vicinity. (line 51)
+* HOME: Catalog Creation. (line 19)
+* homecat: Catalog Vicinities. (line 35)
+* html-for-each: Parsing HTML. (line 6)
+* html-form: HTML. (line 6)
+* http: HTTP and CGI. (line 6)
+* Hue: Color Spaces. (line 143)
+* ICC Profile: Color Spaces. (line 191)
+* implcat: Catalog Vicinities. (line 23)
* indexed-sequential-access-method: Byte/Number Conversions.
- (line 120) |
-* infix: Rule Types. (line 19) |
+ (line 127) |
+* infix: Rule Types. (line 19)
* Info: Top-level Variable References.
- (line 32) |
-* inmatchfix: Rule Types. (line 43) |
-* install: Installation. (line 6) |
-* installation: Installation. (line 6) |
-* intrinsic feature: Feature. (line 9) |
+ (line 32)
+* inmatchfix: Rule Types. (line 43)
+* install: Installation. (line 6)
+* installation: Installation. (line 6)
+* intrinsic feature: Feature. (line 9)
* ISAM: Indexed Sequential Access Methods.
- (line 6) |
-* Japanese: Extra-SLIB Packages. (line 53) |
-* JFILTER: Extra-SLIB Packages. (line 53) |
-* JIS: Extra-SLIB Packages. (line 53) |
-* L*a*b*: Color Spaces. (line 68) |
-* L*C*h: Color Spaces. (line 135) |
-* L*u*v*: Color Spaces. (line 98) |
-* lamination: Hilbert Space-Filling Curve. |
- (line 88) |
+ (line 6)
+* Japanese: Extra-SLIB Packages. (line 53)
+* JFILTER: Extra-SLIB Packages. (line 53)
+* JIS: Extra-SLIB Packages. (line 53)
+* L*a*b*: Color Spaces. (line 68)
+* L*C*h: Color Spaces. (line 135)
+* L*u*v*: Color Spaces. (line 98)
+* lamination: Hilbert Space-Filling Curve.
+ (line 88)
* Left Denotation, led: Nud and Led Definition.
- (line 13) |
-* Lightness: Color Spaces. (line 71) |
-* line-i: Line I/O. (line 6) |
-* list-processing library: SRFI-1. (line 8) |
+ (line 13)
+* Lightness: Color Spaces. (line 71)
+* line-i: Line I/O. (line 6)
+* list-processing library: SRFI-1. (line 8)
* load-option: Weight-Balanced Trees.
- (line 73) |
-* logical: Bit-Twiddling. (line 6) |
-* macro <1>: Repl. (line 32) |
-* macro <2>: R4RS Macros. (line 6) |
-* macro: Library Catalogs. (line 37) |
-* macro-by-example <1>: Macro by Example. (line 6) |
-* macro-by-example: Library Catalogs. (line 34) |
-* macros-that-work <1>: Macros That Work. (line 6) |
-* macros-that-work: Library Catalogs. (line 40) |
-* manifest: Module Manifests. (line 6) |
-* match: Match Keys. (line 6) |
-* match-keys <1>: Match Keys. (line 6) |
-* match-keys: Match-Keys. (line 6) |
-* matchfix: Rule Types. (line 39) |
-* matfile: MAT-File Format. (line 6) |
-* matlab: MAT-File Format. (line 6) |
-* metric-units: Metric Units. (line 6) |
-* minimize: Minimizing. (line 6) |
+ (line 73)
+* logical: Bit-Twiddling. (line 6)
+* macro <1>: Repl. (line 32)
+* macro <2>: R4RS Macros. (line 6)
+* macro: Library Catalogs. (line 37)
+* macro-by-example <1>: Macro by Example. (line 6)
+* macro-by-example: Library Catalogs. (line 34)
+* macros-that-work <1>: Macros That Work. (line 6)
+* macros-that-work: Library Catalogs. (line 40)
+* manifest: Module Manifests. (line 6)
+* match: Match Keys. (line 6)
+* match-keys <1>: Match Keys. (line 6)
+* match-keys: Match-Keys. (line 6)
+* matchfix: Rule Types. (line 39)
+* matfile: MAT-File Format. (line 6)
+* matlab: MAT-File Format. (line 6)
+* metric-units: Metric Units. (line 6)
+* minimize: Minimizing. (line 6)
* minimum field width (printf): Standard Formatted Output.
- (line 88) |
-* MIT Scheme: Installation. (line 113) |
-* mkimpcat.scm: Catalog Vicinities. (line 28) |
-* mklibcat.scm: Catalog Vicinities. (line 16) |
-* modular: Modular Arithmetic. (line 6) |
+ (line 88)
+* MIT Scheme: Installation. (line 113)
+* mkimpcat.scm: Catalog Vicinities. (line 28)
+* mklibcat.scm: Catalog Vicinities. (line 16)
+* modular: Modular Arithmetic. (line 6)
* multiarg: Multi-argument / and -.
- (line 6) |
+ (line 6)
* multiarg-apply: Multi-argument Apply.
- (line 6) |
-* MzScheme: Installation. (line 104) |
-* nary: Rule Types. (line 23) |
-* new-catalog: Catalog Creation. (line 48) |
-* nofix: Rule Types. (line 11) |
-* null: HTML Tables. (line 92) |
+ (line 6)
+* MzScheme: Installation. (line 104)
+* nary: Rule Types. (line 23)
+* new-catalog: Catalog Creation. (line 48)
+* nofix: Rule Types. (line 11)
+* null: HTML Tables. (line 92)
* Null Denotation, nud: Nud and Led Definition.
- (line 9) |
-* object: Object. (line 6) |
-* object->string: Object-To-String. (line 6) |
-* oop: Yasos. (line 6) |
+ (line 9)
+* object: Object. (line 6)
+* object->string: Object-To-String. (line 6)
+* oop: Yasos. (line 6)
* option, run-time-loadable: Weight-Balanced Trees.
- (line 69) |
-* options file: Command Line. (line 65) |
-* parameters <1>: Command Example. (line 13) |
-* parameters <2>: Batch. (line 146) |
-* parameters: Parameter lists. (line 6) |
-* parse: Precedence Parsing. (line 6) |
+ (line 69)
+* options file: Command Line. (line 65)
+* parameters <1>: Command Example. (line 13)
+* parameters <2>: Batch. (line 146)
+* parameters: Parameter lists. (line 6)
+* parse: Precedence Parsing. (line 6)
* pbm: Portable Image Files.
- (line 22) |
+ (line 22)
* pbm-raw: Portable Image Files.
- (line 22) |
+ (line 22)
+* peano-fill: Peano Space-Filling Curve. |
+ (line 6) |
* pgm: Portable Image Files.
- (line 26) |
+ (line 26)
* pgm-raw: Portable Image Files.
- (line 26) |
-* plain-text: HTML. (line 14) |
-* PLT Scheme: Installation. (line 102) |
+ (line 26)
+* plain-text: HTML. (line 14)
+* PLT Scheme: Installation. (line 102)
* pnm: Portable Image Files.
- (line 6) |
+ (line 6)
* portable bitmap graphics: Portable Image Files.
- (line 9) |
-* posix-time: Posix Time. (line 7) |
-* postfix: Rule Types. (line 27) |
+ (line 9)
+* posix-time: Posix Time. (line 7)
+* postfix: Rule Types. (line 27)
* ppm: Portable Image Files.
- (line 31) |
+ (line 31)
* ppm-raw: Portable Image Files.
- (line 31) |
-* pprint-file: Pretty-Print. (line 60) |
-* PRE: HTML. (line 50) |
-* precedence: Precedence Parsing. (line 6) |
+ (line 31)
+* pprint-file: Pretty-Print. (line 60)
+* PRE: HTML. (line 50)
+* precedence: Precedence Parsing. (line 6)
* precision (printf): Standard Formatted Output.
- (line 101) |
-* prefix: Rule Types. (line 15) |
-* prestfix: Rule Types. (line 31) |
-* pretty-print: Pretty-Print. (line 6) |
-* primes: Prime Numbers. (line 6) |
+ (line 101)
+* prefix: Rule Types. (line 15)
+* prestfix: Rule Types. (line 31)
+* pretty-print: Pretty-Print. (line 6)
+* primes: Prime Numbers. (line 6)
* printf: Standard Formatted Output.
- (line 6) |
-* priority-queue: Priority Queues. (line 6) |
-* PRNG: Random Numbers. (line 6) |
-* process: Multi-Processing. (line 6) |
-* Prolog: Extra-SLIB Packages. (line 49) |
-* promise: Promises. (line 6) |
-* PSD: Extra-SLIB Packages. (line 26) |
-* qp <1>: Quick Print. (line 6) |
-* qp: Getopt. (line 146) |
-* query-string: HTTP and CGI. (line 36) |
-* queue: Queues. (line 6) |
-* r2rs: RnRS. (line 11) |
-* r3rs <1>: Coding Guidelines. (line 10) |
-* r3rs: RnRS. (line 16) |
-* r4rs: RnRS. (line 24) |
-* r5rs: RnRS. (line 29) |
+ (line 6)
+* priority-queue: Priority Queues. (line 6)
+* PRNG: Random Numbers. (line 6)
+* process: Multi-Processing. (line 6)
+* Prolog: Extra-SLIB Packages. (line 49)
+* promise: Promises. (line 6)
+* PSD: Extra-SLIB Packages. (line 26)
+* qp <1>: Quick Print. (line 6)
+* qp: Getopt. (line 146)
+* query-string: HTTP and CGI. (line 36)
+* queue: Queues. (line 6)
+* r2rs: RnRS. (line 11)
+* r3rs <1>: Coding Guidelines. (line 10)
+* r3rs: RnRS. (line 16)
+* r4rs: RnRS. (line 24)
+* r5rs: RnRS. (line 29)
* random: Exact Random Numbers.
- (line 6) |
+ (line 6)
* random-inexact: Inexact Random Numbers.
+ (line 6)
+* range: Column Ranges. (line 6)
+* rationalize: Rationalize. (line 6)
+* read-command: Command Line. (line 6)
+* receive: Binding to multiple values. |
(line 6) |
-* range: Column Ranges. (line 6) |
-* rationalize: Rationalize. (line 6) |
-* read-command: Command Line. (line 6) |
-* record: Records. (line 6) |
-* rectangle: Rectangles. (line 6) |
-* relational-database: Relational Database. (line 6) |
-* relational-system: Using Databases. (line 53) |
-* repl <1>: Repl. (line 6) |
-* repl: Syntax-Case Macros. (line 61) |
-* resene: Color Names. (line 126) |
-* Resene: Color Names. (line 95) |
-* reset: HTML. (line 95) |
-* rev2-procedures: Rev2 Procedures. (line 6) |
+* record: Records. (line 6)
+* rectangle: Rectangles. (line 6)
+* relational-database: Relational Database. (line 6)
+* relational-system: Using Databases. (line 53)
+* repl <1>: Repl. (line 6)
+* repl: Syntax-Case Macros. (line 61)
+* resene: Color Names. (line 126)
+* Resene: Color Names. (line 95)
+* reset: HTML. (line 95)
+* rev2-procedures: Rev2 Procedures. (line 6)
* rev4-optional-procedures: Rev4 Optional Procedures.
- (line 6) |
-* RGB709: Color Spaces. (line 37) |
-* ring, commutative: Commutative Rings. (line 11) |
-* RNG: Random Numbers. (line 6) |
-* root: Root Finding. (line 6) |
+ (line 6)
+* RGB709: Color Spaces. (line 37)
+* ring, commutative: Commutative Rings. (line 11)
+* RNG: Random Numbers. (line 6)
+* root: Root Finding. (line 6)
* run-time-loadable option: Weight-Balanced Trees.
- (line 69) |
-* rwb-isam: Base Table. (line 39) |
-* saturate: Color Names. (line 95) |
+ (line 69)
+* rwb-isam: Base Table. (line 39)
+* saturate: Color Names. (line 95)
* scanf: Standard Formatted Input.
- (line 6) |
-* SCHELOG: Extra-SLIB Packages. (line 49) |
-* scheme: URI. (line 99) |
-* Scheme Request For Implementation: SRFI. (line 8) |
-* Scheme48: Installation. (line 137) |
-* schmooz: Schmooz. (line 6) |
-* SCM: Installation. (line 97) |
-* script: Installation. (line 37) |
-* self-set: Commutative Rings. (line 17) |
-* Sequence Comparison: Sequence Comparison. (line 6) |
-* Server-based Naming Authority: URI. (line 58) |
-* session: Feature. (line 7) |
+ (line 6)
+* SCHELOG: Extra-SLIB Packages. (line 49)
+* scheme: URI. (line 99)
+* Scheme Request For Implementation: SRFI. (line 8)
+* Scheme48: Installation. (line 137)
+* schmooz: Schmooz. (line 6)
+* SCM: Installation. (line 97)
+* script: Installation. (line 37)
+* self-set: Commutative Rings. (line 17)
+* Sequence Comparison: Sequence Comparison. (line 6)
+* Server-based Naming Authority: URI. (line 58)
+* session: Feature. (line 7)
* sets, using binary trees: Weight-Balanced Trees.
- (line 52) |
-* shell: Command Line. (line 12) |
-* sierpinski: Sierpinski Curve. (line 6) |
-* sitecat: Catalog Vicinities. (line 19) |
-* sky: Daylight. (line 6) |
-* slib: Installation. (line 37) |
-* slibcat: Catalog Vicinities. (line 11) |
-* solid: Solid Modeling. (line 6) |
-* solid-modeling: Solid Modeling. (line 6) |
-* solids: Solid Modeling. (line 6) |
-* sort: Sorting. (line 6) |
-* soundex: Soundex. (line 6) |
-* source: Library Catalogs. (line 18) |
-* Space-Filling: Hilbert Space-Filling Curve. |
- (line 8) |
-* sparse: MAT-File Format. (line 15) |
-* Spectral Tristimulus Values: Spectra. (line 24) |
-* spiff: Sequence Comparison. (line 29) |
-* srfi: SRFI. (line 6) |
-* SRFI-1: SRFI-1. (line 8) |
-* srfi-1: SRFI-1. (line 6) |
-* srfi-2: SRFI-2. (line 6) |
-* srfi-8: SRFI-8. (line 6) |
-* srfi-9: SRFI-9. (line 6) |
-* sRGB: Color Spaces. (line 189) |
+ (line 52)
+* shell: Command Line. (line 12)
+* sierpinski: Sierpinski Curve. (line 6)
+* sitecat: Catalog Vicinities. (line 19)
+* sky: Daylight. (line 6)
+* slib: Installation. (line 37)
+* slibcat: Catalog Vicinities. (line 11)
+* solid: Solid Modeling. (line 6)
+* solid-modeling: Solid Modeling. (line 6)
+* solids: Solid Modeling. (line 6)
+* sort: Sorting. (line 6)
+* soundex: Soundex. (line 6)
+* source: Library Catalogs. (line 18)
+* Space-Filling: Hilbert Space-Filling Curve.
+ (line 8)
+* sparse: MAT-File Format. (line 15)
+* Spectral Tristimulus Values: Spectra. (line 24)
+* spiff: Sequence Comparison. (line 29)
+* 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) |
+* sRGB: Color Spaces. (line 189)
* stdio: Standard Formatted I/O.
- (line 14) |
-* string-case: String-Case. (line 6) |
-* string-port: String Ports. (line 6) |
-* string-search: String Search. (line 6) |
-* subarray: Subarrays. (line 6) |
-* sun: Daylight. (line 6) |
-* sunlight: Daylight. (line 6) |
-* symmetric: Modular Arithmetic. (line 54) |
-* syntactic-closures <1>: Syntactic Closures. (line 6) |
-* syntactic-closures: Library Catalogs. (line 46) |
+ (line 14)
+* string-case: String-Case. (line 6)
+* string-port: String Ports. (line 6)
+* string-search: String Search. (line 6)
+* subarray: Subarrays. (line 6)
+* sun: Daylight. (line 6)
+* sunlight: Daylight. (line 6)
+* symmetric: Modular Arithmetic. (line 54)
+* syntactic-closures <1>: Syntactic Closures. (line 6)
+* syntactic-closures: Library Catalogs. (line 46)
* syntax tree: Precedence Parsing Overview.
- (line 32) |
-* syntax-case <1>: Syntax-Case Macros. (line 6) |
-* syntax-case: Library Catalogs. (line 43) |
-* time: Time and Date. (line 16) |
-* time-zone: Time Zone. (line 63) |
+ (line 32)
+* syntax-case <1>: Syntax-Case Macros. (line 6)
+* syntax-case: Library Catalogs. (line 43)
+* time: Time and Date. (line 16)
+* time-zone: Time Zone. (line 63)
* top-level variable references: Top-level Variable References.
- (line 6) |
+ (line 6)
* top-refs: Top-level Variable References.
- (line 6) |
-* topological-sort: Topological Sort. (line 6) |
-* trace: Trace. (line 6) |
-* transact: Transactions. (line 10) |
-* transcript: Transcripts. (line 6) |
-* tree: Tree Operations. (line 6) |
+ (line 6)
+* topological-sort: Topological Sort. (line 6)
+* trace: Trace. (line 6)
+* transact: Transactions. (line 10)
+* transcript: Transcripts. (line 6)
+* tree: Tree Operations. (line 6)
* trees, balanced binary: Weight-Balanced Trees.
- (line 8) |
-* tristimulus: Color Spaces. (line 9) |
-* tsort: Topological Sort. (line 6) |
-* turbidity: Daylight. (line 31) |
-* TZ-string: Time Zone. (line 9) |
-* Uniform Resource Identifiers: URI. (line 8) |
-* Uniform Resource Locator: URI. (line 118) |
-* Unique Factorization: Commutative Rings. (line 67) |
-* unsafe: URI. (line 77) |
-* URI: URI. (line 71) |
-* uri: URI. (line 6) |
-* URI: HTTP and CGI. (line 36) |
-* usercat: Catalog Vicinities. (line 38) |
-* UTC: Posix Time. (line 13) |
-* values: Values. (line 6) |
+ (line 8)
+* tristimulus: Color Spaces. (line 9)
+* tsort: Topological Sort. (line 6)
+* turbidity: Daylight. (line 31)
+* TZ-string: Time Zone. (line 9)
+* Uniform Resource Identifiers: URI. (line 8)
+* Uniform Resource Locator: URI. (line 118)
+* Unique Factorization: Commutative Rings. (line 67)
+* unsafe: URI. (line 77)
+* URI: URI. (line 71)
+* uri: URI. (line 6)
+* URI: HTTP and CGI. (line 36)
+* usercat: Catalog Vicinities. (line 38)
+* UTC: Posix Time. (line 13)
+* values: Values. (line 6)
* variable references: Top-level Variable References.
- (line 6) |
-* vet: Module Analysis. (line 6) |
-* VSCM: Installation. (line 148) |
-* WB: Base Table. (line 34) |
-* wb-table: Base Table. (line 32) |
+ (line 6)
+* vet: Module Analysis. (line 6)
+* VSCM: Installation. (line 148)
+* WB: Base Table. (line 34)
+* wb-table: Base Table. (line 32)
* weight-balanced binary trees: Weight-Balanced Trees.
- (line 8) |
-* wget: Color Names. (line 81) |
-* white point: Color Data-Type. (line 107) |
-* wild-card: Match Keys. (line 6) |
-* with-file: With-File. (line 6) |
-* Word: Transactions. (line 34) |
+ (line 8)
+* wget: Color Names. (line 81)
+* white point: Color Data-Type. (line 107)
+* wild-card: Match Keys. (line 6)
+* with-file: With-File. (line 6)
+* Word: Transactions. (line 34)
* wt-tree: Weight-Balanced Trees.
- (line 6) |
-* xRGB: Color Spaces. (line 204) |
-* xyY: Spectra. (line 175) |
-* yasos: Yasos. (line 6) |
+ (line 6)
+* xRGB: Color Spaces. (line 204)
+* xyY: Spectra. (line 175)
+* yasos: Yasos. (line 6)

Tag Table:
-Node: Top1050
-Node: The Library System1830
-Node: Feature2245
+Node: Top1038
+Node: The Library System1818
+Node: Feature2115
Ref: Feature-Footnote-14358
-Node: Require5422
-Node: Library Catalogs8232
-Node: Catalog Creation9818
-Node: Catalog Vicinities12409
-Node: Compiling Scheme15318
-Node: Module Conventions16086
+Node: Require4694
+Node: Library Catalogs7107
+Node: Catalog Creation8538
+Node: Catalog Vicinities10959
+Node: Compiling Scheme13719
+Node: Module Conventions14369
Ref: Module Conventions-Footnote-115790
-Node: Module Manifests17905
-Node: Module Semantics24174
-Node: Top-level Variable References25906
+Node: Module Manifests16040
+Node: Module Semantics21512
+Node: Top-level Variable References23130
Ref: Top-level Variable References-Footnote-125205
-Node: Module Analysis28540
-Node: Universal SLIB Procedures29984
-Node: Vicinity30703
-Node: Configuration35672
-Node: Input/Output39213
-Node: System43424
-Node: Miscellany47174
-Node: Scheme Syntax Extension Packages50488
-Node: Defmacro51328
-Node: R4RS Macros53936
-Node: Macro by Example55457
-Node: Macros That Work58668
-Node: Syntactic Closures65450
-Node: Syntax-Case Macros84160
-Node: Define-Structure88676
-Node: Fluid-Let92589
-Node: Yasos93779
-Node: Yasos terms94719
-Node: Yasos interface95891
-Node: Setters98343
-Node: Yasos examples101344
-Node: Textual Conversion Packages104430
-Node: Precedence Parsing105331
-Node: Precedence Parsing Overview106130
-Ref: Precedence Parsing Overview-Footnote-192368
-Node: Rule Types107883
-Node: Ruleset Definition and Use109969
-Node: Token definition112657
-Node: Nud and Led Definition115647
-Node: Grammar Rule Definition118282
-Node: Format126334
-Node: Format Interface127181
-Node: Format Specification130001
-Node: Standard Formatted I/O164087
-Node: Standard Formatted Output165095
-Node: Standard Formatted Input175192
-Node: Programs and Arguments182214
-Node: Getopt182830
-Node: Command Line189908
-Node: Parameter lists193453
-Node: Getopt Parameter lists197629
-Node: Filenames201062
-Node: Batch205387
-Node: HTML213937
-Node: HTML Tables221689
-Node: HTTP and CGI229219
-Node: Parsing HTML234169
-Node: URI236951
-Node: Printing Scheme242831
-Node: Generic-Write243268
-Node: Object-To-String244827
-Node: Pretty-Print245438
-Node: Time and Date248854
-Node: Time Zone250220
-Node: Posix Time255673
-Node: Common-Lisp Time258625
-Node: Time Infrastructure260591
-Node: NCBI-DNA261802
-Node: Schmooz263727
-Node: Mathematical Packages268256
-Node: Bit-Twiddling269021
-Node: Modular Arithmetic281008
-Node: Prime Numbers284612
-Node: Random Numbers286794
-Node: Exact Random Numbers287776
-Node: Inexact Random Numbers290537
-Node: Fast Fourier Transform292983
-Node: Cyclic Checksum294111
-Node: Graphing303476
-Node: Character Plotting303805
-Node: PostScript Graphing309646
-Node: Column Ranges311628
-Node: Drawing the Graph313486
-Node: Graphics Context314712
-Node: Rectangles317024
-Node: Legending318945
-Node: Legacy Plotting322142
-Node: Example Graph323249
-Node: Solid Modeling327759
-Node: Color351601
-Node: Color Data-Type352612
-Ref: Color Data-Type-Footnote-1284376
-Node: Color Spaces358369
-Ref: Color Spaces-Footnote-1294375
-Node: Spectra370274
-Node: Color Difference Metrics382078
-Node: Color Conversions385366
-Node: Color Names389006
-Node: Daylight396689
-Node: Root Finding401853
-Node: Minimizing406185
-Ref: Minimizing-Footnote-1325873
-Node: Commutative Rings408394
-Node: Matrix Algebra420462
-Node: Database Packages422035
-Node: Relational Database422438
-Node: Using Databases423442
-Node: Table Operations430658
-Node: Single Row Operations432012
-Node: Match-Keys434523
-Node: Multi-Row Operations436752
-Node: Indexed Sequential Access Methods439440
-Node: Sequential Index Operations440524
-Node: Table Administration443107
-Node: Database Interpolation444263
-Node: Embedded Commands445497
-Node: Database Extension447183
-Node: Command Intrinsics449704
-Node: Define-tables Example451428
-Node: The *commands* Table453178
-Node: Command Service455558
-Node: Command Example457663
-Node: Database Macros462328
-Node: Within-database463389
-Node: Within-database Example467960
-Node: Database Browser469922
-Node: Relational Infrastructure471391
-Node: Base Table471795
-Node: The Base474637
-Node: Base Tables478020
-Node: Base Field Types479690
-Node: Composite Keys480635
-Node: Base Record Operations482873
-Node: Match Keys484812
-Node: Aggregate Base Operations485815
-Node: Base ISAM Operations487046
-Node: Catalog Representation488515
-Node: Relational Database Objects491286
-Node: Database Operations494070
-Node: Weight-Balanced Trees498159
-Node: Construction of Weight-Balanced Trees502153
-Node: Basic Operations on Weight-Balanced Trees505925
-Node: Advanced Operations on Weight-Balanced Trees509145
-Node: Indexing Operations on Weight-Balanced Trees515503
-Node: Other Packages519732
-Node: Data Structures520387
-Node: Arrays521297
-Node: Subarrays537830
-Node: Array Mapping540359
-Node: Association Lists543098
-Node: Byte545792
-Node: Byte/Number Conversions552214
-Node: MAT-File Format559755
-Node: Portable Image Files561303
-Node: Collections563302
-Node: Dynamic Data Type570079
-Node: Hash Tables571690
-Node: Object574797
-Node: Priority Queues584148
-Node: Queues585299
-Node: Records587191
-Node: Sorting and Searching591002
-Node: Common List Functions591803
-Node: List construction592364
-Node: Lists as sets594388
-Node: Lists as sequences601898
-Node: Destructive list operations607714
-Node: Non-List functions610724
-Node: Tree Operations612077
-Node: Chapter Ordering614118
-Node: Sorting616063
-Node: Topological Sort622251
-Node: Hashing624164
-Node: Space-Filling Curves625476
-Node: Hilbert Space-Filling Curve625936
-Node: Peano Space-Filling Curve634464
-Node: Sierpinski Curve635724
-Node: Soundex638404
-Node: String Search640187
-Node: Sequence Comparison643272
-Node: Procedures647125
-Node: Type Coercion647783
-Node: String-Case648432
-Node: String Ports650820
-Node: Line I/O651780
-Node: Multi-Processing654063
-Node: Metric Units655440
-Node: Standards Support664254
-Node: RnRS665166
-Node: With-File666775
-Node: Transcripts667248
-Node: Rev2 Procedures667791
-Node: Rev4 Optional Procedures670214
-Node: Multi-argument / and -670979
-Node: Multi-argument Apply671573
-Node: Rationalize672062
-Node: Promises673492
-Node: Dynamic-Wind674227
-Node: Eval675646
-Node: Values679319
-Node: SRFI680355
-Node: SRFI-1682144
-Node: SRFI-2693631
-Node: SRFI-8694050
-Node: SRFI-9694469
-Node: Session Support695156
-Node: Repl696162
-Node: Quick Print697691
-Node: Debug699333
-Node: Breakpoints700639
-Node: Trace703394
-Node: System Interface707940
-Node: Directories708727
-Node: Transactions710523
-Node: CVS716514
-Node: Extra-SLIB Packages718222
-Node: About SLIB720688
-Node: Installation721619
-Node: The SLIB script730918
-Node: Porting731819
-Ref: Porting-Footnote-1590851
-Node: Coding Guidelines733598
-Node: Copyrights736248
-Node: About this manual739997
-Node: Index740742
+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

End Tag Table
diff --git a/slib.spec b/slib.spec
index 857e25c..83e4780 100644
--- a/slib.spec
+++ b/slib.spec
@@ -1,23 +1,18 @@
-%define name slib
-%define version 3a2
-%define release 1
-
-Name: %{name}
-Release: %{release}
-Version: %{version}
+Summary: platform independent library for scheme
+Name: slib
+Version: 3a3
+Release: 2
+Group: Development/Languages
+BuildArch: noarch
Packager: Aubrey Jaffer <agj@alum.mit.edu>
Copyright: distributable, see individual files for copyright
Vendor: Aubrey Jaffer <agj @ alum.mit.edu>
-Group: Development/Tools
Provides: slib
-BuildArch: noarch
-Summary: platform independent library for scheme
Source: ftp://swiss.csail.mit.edu/pub/scm/slib%{version}.zip
URL: http://swiss.csail.mit.edu/~jaffer/SLIB.html
-BuildRoot: %{_tmppath}/%{name}%{version}
-Prefix: /usr
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
"SLIB" is a portable library for the programming language Scheme.
@@ -27,73 +22,92 @@ packages for all Scheme implementations. Its catalog can be
transparently extended to accomodate packages specific to a site,
implementation, user, or directory.
-%define __os_install_post /usr/lib/rpm/brp-compress
-
%prep
-%setup -n slib -c -T
-cd ..
-unzip ${RPM_SOURCE_DIR}/slib%{version}.zip
+%setup -q -n %{name}
+for i in *; do
+ cp -f ${i} ${i}.orig
+ sed -s "s,/usr/local/lib,%{_datadir},g" < ${i} > ${i}.orig
+ sed -s "s,/usr/lib,%{_datadir},g" < ${i}.orig > ${i}
+ sed -s "s,/usr/local,/usr,g" < ${i}.orig > ${i}
+ rm -f ${i}.orig
+done
%build
-gzip -f slib.info
+gzip -9nf slib.info
%install
-mkdir -p ${RPM_BUILD_ROOT}%{prefix}/lib/slib
-mkdir -p ${RPM_BUILD_ROOT}%{prefix}/bin
-cp -r *.scm *.init *.xyz saturate.txt resenecolours.txt grapheps.ps Makefile ${RPM_BUILD_ROOT}%{prefix}/lib/slib
-mkdir -p ${RPM_BUILD_ROOT}/usr/info
-cp slib.info.gz ${RPM_BUILD_ROOT}/usr/info
-
-echo '#! /bin/sh' > ${RPM_BUILD_ROOT}%{prefix}/bin/slib
-echo SCHEME_LIBRARY_PATH=%{prefix}/lib/slib/ >> ${RPM_BUILD_ROOT}%{prefix}/bin/slib
-echo export SCHEME_LIBRARY_PATH >> ${RPM_BUILD_ROOT}%{prefix}/bin/slib
-echo VERSION=%{version} >> ${RPM_BUILD_ROOT}%{prefix}/bin/slib
-echo "S48_VICINITY=\"%{prefix}/lib/scheme48\";export S48_VICINITY" >> ${RPM_BUILD_ROOT}%{prefix}/bin/slib
-cat slib.sh >> ${RPM_BUILD_ROOT}%{prefix}/bin/slib
-chmod +x ${RPM_BUILD_ROOT}%{prefix}/bin/slib
+mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/slib
+mkdir -p ${RPM_BUILD_ROOT}%{_bindir}
+cp *.scm *.init *.xyz *.txt grapheps.ps Makefile ${RPM_BUILD_ROOT}%{_datadir}/slib
+mkdir -p ${RPM_BUILD_ROOT}%{_infodir}
+install -m644 slib.info.gz ${RPM_BUILD_ROOT}%{_infodir}
+
+echo '#! /bin/sh' > ${RPM_BUILD_ROOT}%{_bindir}/slib
+echo SCHEME_LIBRARY_PATH=%{_datadir}/slib/ >> ${RPM_BUILD_ROOT}%{_bindir}/slib
+echo export SCHEME_LIBRARY_PATH >> ${RPM_BUILD_ROOT}%{_bindir}/slib
+echo VERSION=%{version} >> ${RPM_BUILD_ROOT}%{_bindir}/slib
+echo "S48_VICINITY=\"%{_datadir}/scheme48\";export S48_VICINITY" >> ${RPM_BUILD_ROOT}%{_bindir}/slib
+cat slib.sh >> ${RPM_BUILD_ROOT}%{_bindir}/slib
+chmod +x ${RPM_BUILD_ROOT}%{_bindir}/slib
%clean
rm -rf ${RPM_BUILD_ROOT}
%post
-/sbin/install-info /usr/info/slib.info.gz /usr/info/dir
+# /sbin/install-info ${RPM_BUILD_ROOT}%{_infodir}/slib.info.gz %{_infodir}/dir
# This symlink is made as in the spec file of Robert J. Meier.
if [ -L /usr/share/guile/slib ]; then
rm /usr/share/guile/slib
- ln -s %{prefix}/lib/slib /usr/share/guile/slib
+ ln -s %{_datadir}/slib /usr/share/guile/slib
fi
# Rebuild catalogs for as many implementations as possible.
export PATH=$PATH:/usr/local/bin
echo PATH=${PATH}
-cd %{prefix}/lib/slib/
+cd %{_datadir}/slib/
make catalogs
+# %postun
+# if [ $1 = 0 ]; then
+# /sbin/install-info --delete %{_infodir}/slib.info.gz %{_infodir}/dir
+# fi
+
%preun
-cd %{prefix}/lib/slib/
+cd %{_datadir}/slib/
rm -f srcdir.mk slib.image
%files
%defattr(-, root, root)
-%{prefix}/bin/slib
-%dir %{prefix}/lib/slib
-%{prefix}/lib/slib/*.scm
-%{prefix}/lib/slib/*.init
-%{prefix}/lib/slib/cie1931.xyz
-%{prefix}/lib/slib/cie1964.xyz
-%{prefix}/lib/slib/saturate.txt
-%{prefix}/lib/slib/resenecolours.txt
-%{prefix}/lib/slib/grapheps.ps
-/usr/info/slib.info.gz
+%{_bindir}/slib
+%dir %{_datadir}/slib
+%{_datadir}/slib/*.scm
+%{_datadir}/slib/*.init
+%{_datadir}/slib/cie1931.xyz
+%{_datadir}/slib/cie1964.xyz
+%{_datadir}/slib/nbs-iscc.txt
+%{_datadir}/slib/saturate.txt
+%{_datadir}/slib/resenecolours.txt
+%{_datadir}/slib/grapheps.ps
+%{_infodir}/slib.info.gz
# The Makefile is included as it is useful for building documentation.
-%{prefix}/lib/slib/Makefile
+%{_datadir}/slib/Makefile
%doc ANNOUNCE README COPYING FAQ ChangeLog
%changelog
+* Sun Sep 25 2005 Aubrey Jaffer <agj@alum.mit.edu>
+- Updated from RedHat version from Jindrich Novy.
+
+* Fri Jun 22 2005 Aubrey Jaffer <agj@alum.mit.edu>
+- slib.spec (install): Make slib executable.
+
* Sat Jun 18 2004 Aubrey Jaffer <agj@alum.mit.edu>
- Fixed for RPMbuild version 4.3.1
- Make slib executable.
+* Thu Nov 03 2002 Aubrey Jaffer <agj@alum.mit.edu>
+- slib.spec (%post): Improved catalog-building scripts.
+- Make clrnamdb.scm.
+
* Wed Mar 14 2001 Radey Shouman <shouman@ne.mediaone.net>
- Adapted from the spec file of R. J. Meier.
diff --git a/slib.texi b/slib.texi
index 8a97e27..0a5b8f3 100644
--- a/slib.texi
+++ b/slib.texi
@@ -412,11 +412,11 @@ installation to installation, SLIB builds a separate catalog for each
implementation it is used with.
@noindent
-The definition of @code{*SLIB-VERSION*} in SLIB file
+The definition of @code{*slib-version*} in SLIB file
@file{require.scm} is checked against the catalog association of
-@code{*SLIB-VERSION*} to ascertain when versions have changed. It is
+@code{*slib-version*} to ascertain when versions have changed. It is
a reasonable practice to change the definition of
-@code{*SLIB-VERSION*} whenever the library is changed. If multiple
+@code{*slib-version*} whenever the library is changed. If multiple
implementations of Scheme use SLIB, remember that recompiling one
@file{slibcat} will update only that implementation's catalog.
@@ -1183,7 +1183,11 @@ Returns the last pair in the list @var{l}. Example:
Syntax extensions (macros) included with SLIB.
* Define-Structure:: 'structure
+* 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
* Yasos:: 'yasos, 'oop, 'collect
@end menu
@@ -2132,7 +2136,7 @@ Send bug reports, comments, suggestions, and questions to Kent Dybvig
-@node Define-Structure, Fluid-Let, Syntax-Case Macros, Scheme Syntax Extension Packages
+@node Define-Structure, Define-Record-Type, Syntax-Case Macros, Scheme Syntax Extension Packages
@section Define-Structure
@code{(require 'structure)}
@@ -2195,8 +2199,30 @@ red
@end deffn
+@node Define-Record-Type, Fluid-Let, Define-Structure, Scheme Syntax Extension Packages
+@section Define-Record-Type
-@node Fluid-Let, Yasos, Define-Structure, Scheme Syntax Extension Packages
+@code{(require 'define-record-type)} or @code{(require 'srfi-9)}
+@ftindex srfi-9
+@ftindex define-record-type
+
+@url{http://srfi.schemers.org/srfi-9/srfi-9.html}
+
+@defspec define-record-type <type-name> (<constructor-name> <field-tag> ...) <predicate-name> <field-spec> ...
+
+Where
+@lisp
+<field-spec> @equiv{} (<field-tag> <accessor-name>)
+ @equiv{} (<field-tag> <accessor-name> <modifier-name>)
+
+@end lisp
+
+@code{define-record-type} is a syntax wrapper for the SLIB
+@code{record} module.
+@end defspec
+
+
+@node Fluid-Let, Binding to multiple values, Define-Record-Type, Scheme Syntax Extension Packages
@section Fluid-Let
@code{(require 'fluid-let)}
@@ -2224,7 +2250,107 @@ by the rules of lexical scoping) of its corresponding
@var{variable}.
-@node Yasos, , Fluid-Let, Scheme Syntax Extension Packages
+@node Binding to multiple values, Guarded LET* special form, Fluid-Let, Scheme Syntax Extension Packages
+@section Binding to multiple values
+
+@code{(require 'receive)} or @code{(require 'srfi-8)}
+@ftindex srfi-8
+@ftindex receive
+
+@defspec receive formals expression body @dots{}
+
+@url{http://srfi.schemers.org/srfi-8/srfi-8.html}
+@end defspec
+
+
+
+@node Guarded LET* special form, Guarded COND Clause, Binding to multiple values, Scheme Syntax Extension Packages
+@section Guarded LET* special form
+
+@code{(require 'and-let*)} or @code{(require 'srfi-2)}
+@ftindex srfi-2
+@ftindex and-let*
+
+@defmac and-let* claws body @dots{}
+
+@url{http://srfi.schemers.org/srfi-2/srfi-2.html}
+@end defmac
+
+
+@node Guarded COND Clause, Yasos, Guarded LET* special form, Scheme Syntax Extension Packages
+@section Guarded COND Clause
+
+@code{(require 'guarded-cond-clause)} or @code{(require 'srfi-61)}
+@ftindex srfi-61
+@ftindex guarded-cond-clause
+
+@url{http://srfi.schemers.org/srfi-61/srfi-61.html}
+
+@deffn {library syntax} cond <clause1> <clause2> @dots{}
+
+@emph{Syntax:}
+Each @r{<clause>} should be of the form
+
+@format
+@t{(@r{<test>} @r{<expression1>} @dots{})
+}
+@end format
+
+where @r{<test>} is any expression. Alternatively, a @r{<clause>} may be
+of the form
+
+@format
+@t{(@r{<test>} => @r{<expression>})
+}
+@end format
+
+The @r{<clause>} production in the formal syntax of Scheme as
+written by R5RS in section 7.1.3 is extended with a new option:
+@cindex @w{=>}
+
+@format
+@t{@r{<clause>} => (@r{<generator>} @r{<guard>} => @r{<receiver>})
+}
+@end format
+
+where @r{<generator>}, @r{<guard>}, & @r{<receiver>} are all
+@r{<expression>}s.
+
+@quotation
+Clauses of this form have the following semantics: @r{<generator>} is
+evaluated. It may return arbitrarily many values. @r{<Guard>} is
+applied to an argument list containing the values in order that
+@r{<generator>} returned. If @r{<guard>} returns a true value for
+that argument list, @r{<receiver>} is applied with an equivalent
+argument list. If @r{<guard>} returns a false value, however, the
+clause is abandoned and the next one is tried.
+@end quotation
+
+The last @r{<clause>} may be
+an ``else clause,'' which has the form
+
+@format
+@t{(else @r{<expression1>} @r{<expression2>} @dots{})@r{.}
+}
+@end format
+@end deffn
+
+@noindent
+This @code{port->char-list} procedure accepts an input port and
+returns a list of all the characters it produces until the end.
+
+@example
+(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)
+@end example
+
+
+
+@node Yasos, , Guarded COND Clause, Scheme Syntax Extension Packages
@section Yasos
@c Much of the documentation in this section was written by Dave Love
@@ -2516,6 +2642,8 @@ value is unspecified.
@result{} 2
@end lisp
+
+
@node Textual Conversion Packages, Mathematical Packages, Scheme Syntax Extension Packages, Top
@chapter Textual Conversion Packages
@@ -4698,6 +4826,7 @@ match the arguments to @code{encode-universal-time}.
* Color::
* Root Finding:: 'root
* Minimizing:: 'minimize
+* The Limit:: 'limit
* Commutative Rings:: 'commutative-ring
* Matrix Algebra:: 'determinant
@end menu
@@ -6183,6 +6312,11 @@ Resene Paints Ltd.
@code{(require 'root)}
@ftindex root
+@defun integer-sqrt y
+Given a non-negative integer @var{y}, returns the largest integer
+whose square is less than or equal to @var{y}.
+@end defun
+
@defun newton:find-integer-root f df/dx x0
Given integer valued procedure @var{f}, its derivative (with respect to
its argument) @var{df/dx}, and initial integer value @var{x0} for which
@@ -6203,11 +6337,6 @@ To find the closest integer to a given integer's square root:
@end example
@end defun
-@defun integer-sqrt y
-Given a non-negative integer @var{y}, returns the rounded square-root of
-@var{y}.
-@end defun
-
@defun newton:find-root f df/dx x0 prec
Given real valued procedures @var{f}, @var{df/dx} of one (real)
argument, initial real value @var{x0} for which @var{df/dx}(@var{x0}) is
@@ -6287,7 +6416,7 @@ iterations performed so far. @var{prec} should return non-false
if the iteration should be stopped.
@end defun
-@node Minimizing, Commutative Rings, Root Finding, Mathematical Packages
+@node Minimizing, The Limit, Root Finding, Mathematical Packages
@section Minimizing
@code{(require 'minimize)}
@@ -6296,7 +6425,13 @@ if the iteration should be stopped.
@include minimize.txi
-@node Commutative Rings, Matrix Algebra, Minimizing, Mathematical Packages
+@node The Limit, Commutative Rings, Minimizing, Mathematical Packages
+@section The Limit
+
+@include limit.texi
+
+
+@node Commutative Rings, Matrix Algebra, The Limit, Mathematical Packages
@section Commutative Rings
Scheme provides a consistent and capable set of numeric functions.
@@ -8835,6 +8970,7 @@ operation is equivalent to
* Arrays:: 'array
* Subarrays:: 'subarray
* Array Mapping:: 'array-for-each
+* Array Interpolation:: 'array-interpolate
* Association Lists:: 'alist
* Byte:: 'byte
* Byte/Number Conversions:: 'byte-number
@@ -8864,13 +9000,19 @@ operation is equivalent to
@include subarray.txi
-@node Array Mapping, Association Lists, Subarrays, Data Structures
+@node Array Mapping, Array Interpolation, Subarrays, Data Structures
@subsection Array Mapping
@include arraymap.txi
-@node Association Lists, Byte, Array Mapping, Data Structures
+@node Array Interpolation, Association Lists, Array Mapping, Data Structures
+@subsection Array Interpolation
+
+@include linterp.txi
+
+
+@node Association Lists, Byte, Array Interpolation, Data Structures
@subsection Association Lists
@include alist.txi
@@ -11234,48 +11376,24 @@ unspecified.
@menu
* SRFI-1:: list-processing
-* SRFI-2:: guarded LET* special form
-* SRFI-8:: Binding to multiple values
-* SRFI-9:: Defining Record Types
@end menu
-SRFI-47 is the same as @ref{Arrays}.
+@itemize @bullet
+@item SRFI-2 @ref{Guarded LET* special form}
+@item SRFI-8 @ref{Binding to multiple values}
+@item SRFI-9 @ref{Define-Record-Type}
+@item SRFI-47 @ref{Arrays}
+@item SRFI-59 @ref{Vicinity}
+@item SRFI-63 @ref{Arrays}
+@item SRFI-60 @ref{Bit-Twiddling}
+@item SRFI-61 @ref{Guarded COND Clause}
+@end itemize
-@node SRFI-1, SRFI-2, SRFI, SRFI
+@node SRFI-1, , SRFI, SRFI
@subsubsection SRFI-1
@include srfi-1.txi
-@node SRFI-2, SRFI-8, SRFI-1, SRFI
-@subsubsection SRFI-2
-
-@include srfi-2.txi
-
-@node SRFI-8, SRFI-9, SRFI-2, SRFI
-@subsubsection SRFI-8
-
-@include srfi-8.txi
-
-@node SRFI-9, , SRFI-8, SRFI
-@subsubsection SRFI-9
-
-@code{(require 'srfi-9)}
-@ftindex srfi-9
-
-@url{http://srfi.schemers.org/srfi-9/srfi-9.html}
-
-@defspec define-record-type <type-name> (<constructor-name> <field-tag> ...) <predicate-name> <field spec> ...
-
-Where
-@lisp
-<field-spec> @equiv{} (<field-tag> <accessor-name>)
- @equiv{} (<field-tag> <accessor-name> <modifier-name>)
-
-@end lisp
-
-@code{define-record-type} is a syntax wrapper for the SLIB
-@code{record} module.
-@end defspec
@node Session Support, System Interface, Standards Support, Other Packages
diff --git a/srfi-2.txi b/srfi-2.txi
deleted file mode 100644
index 5b43293..0000000
--- a/srfi-2.txi
+++ /dev/null
@@ -1,9 +0,0 @@
-@code{(require 'srfi-2)}
-@ftindex srfi-2
-
-
-@defmac and-let* claws body @dots{}
-
-@url{http://srfi.schemers.org/srfi-2/srfi-2.html}
-@end defmac
-
diff --git a/srfi-61.scm b/srfi-61.scm
new file mode 100644
index 0000000..015320b
--- /dev/null
+++ b/srfi-61.scm
@@ -0,0 +1,49 @@
+;;; "srfi-61.scm" -- A more general cond clause -*- Scheme -*-
+
+;;; Public domain
+;;; Author: Taylor Campbell
+;;; URL:http://srfi.schemers.org/srfi-61/srfi-61.html
+
+;@
+(define-syntax cond
+ (syntax-rules (=> else)
+
+ ((cond (else else1 else2 ...))
+ ;; The (IF #T (BEGIN ...)) wrapper ensures that there may be no
+ ;; internal definitions in the body of the clause. R5RS mandates
+ ;; this in text (by referring to each subform of the clauses as
+ ;; <expression>) but not in its reference implementation of COND,
+ ;; which just expands to (BEGIN ...) with no (IF #T ...) wrapper.
+ (if #t (begin else1 else2 ...)))
+
+ ((cond (test => receiver) more-clause ...)
+ (let ((T test))
+ (cond/maybe-more T
+ (receiver T)
+ more-clause ...)))
+
+ ((cond (generator guard => receiver) more-clause ...)
+ (call-with-values (lambda () generator)
+ (lambda T
+ (cond/maybe-more (apply guard T)
+ (apply receiver T)
+ more-clause ...))))
+
+ ((cond (test) more-clause ...)
+ (let ((T test))
+ (cond/maybe-more T T more-clause ...)))
+
+ ((cond (test body1 body2 ...) more-clause ...)
+ (cond/maybe-more test
+ (begin body1 body2 ...)
+ more-clause ...))))
+
+(define-syntax cond/maybe-more
+ (syntax-rules ()
+ ((cond/maybe-more test consequent)
+ (if test
+ consequent))
+ ((cond/maybe-more test consequent clause ...)
+ (if test
+ consequent
+ (cond clause ...)))))
diff --git a/srfi-8.txi b/srfi-8.txi
deleted file mode 100644
index b2d8618..0000000
--- a/srfi-8.txi
+++ /dev/null
@@ -1,9 +0,0 @@
-@code{(require 'srfi-8)}
-@ftindex srfi-8
-
-
-@defspec receive formals expression body @dots{}
-
-@url{http://srfi.schemers.org/srfi-8/srfi-8.html}
-@end defspec
-
diff --git a/srfi.scm b/srfi.scm
index eeee41c..6d9018c 100644
--- a/srfi.scm
+++ b/srfi.scm
@@ -22,15 +22,6 @@
;;
;;@noindent Implements @dfn{Scheme Request For Implementation} (SRFI) as
;;described at @url{http://srfi.schemers.org/}
-;;
-;;@noindent The Copyright terms of each SRFI states:
-;;@quotation
-;;"However, this document itself may not be modified in any way, ..."
-;;@end quotation
-;;
-;;@noindent Therefore, the specification of SRFI constructs must not be
-;;quoted without including the complete SRFI document containing
-;;discussion and a sample implementation program.
;;@args <clause1> <clause2> @dots{}
;;
diff --git a/srfi.txi b/srfi.txi
index 2ef0bc8..8f6861c 100644
--- a/srfi.txi
+++ b/srfi.txi
@@ -5,15 +5,6 @@
@cindex Scheme Request For Implementation
described at @url{http://srfi.schemers.org/}
-@noindent The Copyright terms of each SRFI states:
-@quotation
-"However, this document itself may not be modified in any way, ..."
-@end quotation
-
-@noindent Therefore, the specification of SRFI constructs must not be
-quoted without including the complete SRFI document containing
-discussion and a sample implementation program.
-
@defmac cond-expand <clause1> <clause2> @dots{}
diff --git a/t3.init b/t3.init
index d5665d0..d34d9d9 100644
--- a/t3.init
+++ b/t3.init
@@ -10,7 +10,7 @@
;;; This is provided with ABSOLUTELY NO GUARANTEE.
(herald t3)
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
(define (scheme-implementation-type) 'T)
@@ -52,7 +52,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -60,12 +60,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -89,7 +89,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -99,10 +99,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
diff --git a/top-refs.scm b/top-refs.scm
index 3647dc4..0c88ba5 100644
--- a/top-refs.scm
+++ b/top-refs.scm
@@ -163,11 +163,15 @@
((case)
(top-refs:expression (cadr exp))
(for-each (lambda (exp)
- (for-each top-refs:expression (cdr exp)))
+ (if (list? exp)
+ (for-each top-refs:expression (cdr exp))
+ (top-refs:expression exp)))
(cddr exp)))
((cond)
(for-each (lambda (exp)
- (for-each top-refs:expression exp))
+ (if (list? exp)
+ (for-each top-refs:expression exp)
+ (top-refs:expression exp)))
(cdr exp)))
((let)
(cond ((symbol? (cadr exp))
diff --git a/transact.scm b/transact.scm
index 83b37a7..3533aa3 100644
--- a/transact.scm
+++ b/transact.scm
@@ -148,7 +148,7 @@
(define (file-lock:certificate path)
(or (case (software-type)
- ((UNIX COHERENT PLAN9)
+ ((unix coherent plan9)
(emacs-lock:certificate (emacs-lock:path path)))
(else #f))
(word-lock:certificate (word-lock:path path))))
@@ -225,7 +225,7 @@
(not (file-lock:certificate path))
(let ((wl (word:lock! path email)))
(case (software-type)
- ((UNIX COHERENT PLAN9)
+ ((unix coherent plan9)
;; file-system may not support symbolic links.
(or (and (provided? 'current-time) (emacs:lock! path email))
wl))
@@ -252,7 +252,7 @@
(let ((e-path (emacs-lock:path path)))
(define e-cert (emacs-lock:certificate e-path))
(case (software-type)
- ((UNIX COHERENT PLAN9)
+ ((unix coherent plan9)
(cond ((not (equal? e-cert certificate))
(slib:warn 'file-unlock! e-path 'mismatch certificate)
#f)
@@ -354,8 +354,8 @@
(+ 2 (length args)) 'args))))
(define backup-style (if (null? args) #f (car args)))
(define move (case (software-type)
- ((UNIX COHERENT PLAN9) "mv -f")
- ((MS-DOS WINDOWS OS/2 ATARIST) "MOVE /Y")
+ ((unix coherent plan9) "mv -f")
+ ((ms-dos windows os/2 atarist) "MOVE /Y")
(else (slib:error (software-type) 'move?))))
(define (move? tmpfn path)
(eqv? 0 (system (sprintf #f "%s %#a %#a" move tmpfn path))))
@@ -471,13 +471,13 @@
(define hostname (getenv "HOSTNAME")) ;with domain
(cond ((and user hostname) (string-append user "@" hostname))
(else (case (software-type)
- ;;((AMIGA) )
- ;;((MACOS THINKC) )
- ((MS-DOS WINDOWS OS/2 ATARIST)
+ ;;((amiga) )
+ ;;((macos thinkc) )
+ ((ms-dos windows os/2 atarist)
(windows:user-email-address user hostname))
- ;;((NOSVE) )
- ;;((VMS) )
- ((UNIX COHERENT PLAN9)
+ ;;((nosve) )
+ ;;((vms) )
+ ((unix coherent plan9)
(call-with-tmpnam
(lambda (tmp)
(if (not user) (set! user (system->line "whoami" tmp)))
diff --git a/umbscheme.init b/umbscheme.init
index 9794d80..f531605 100644
--- a/umbscheme.init
+++ b/umbscheme.init
@@ -9,7 +9,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -30,9 +30,9 @@
;;; implementation reside.
(define (implementation-vicinity)
(case (software-type)
- ((UNIX) "/usr/lib/umb-scheme/")
- ((VMS) "scheme$src:")
- ((MS-DOS) "C:\\scheme\\")))
+ ((unix) "/usr/lib/umb-scheme/")
+ ((vms) "scheme$src:")
+ ((ms-dos) "C:\\scheme\\")))
;;; (library-vicinity) should be defined to be the pathname of the
;;; directory where files of Scheme library functions reside.
@@ -44,9 +44,9 @@
;; Use this path if your scheme does not support GETENV
;; or if SCHEME_LIBRARY_PATH is not set.
(case (software-type)
- ((UNIX) "/usr/lib/umb-scheme/slib/")
- ((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/lib/umb-scheme/slib/")
+ ((vms) "lib$scheme:")
+ ((ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -59,7 +59,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -67,12 +67,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -91,7 +91,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -101,10 +101,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -219,7 +219,7 @@
;;(define (file-exists? f) #f)
(define file-exists?
(case (software-type)
- ((UNIX)
+ ((unix)
(lambda (f)
(zero? (system (string-append "test -r " f)))))
(else
@@ -229,7 +229,7 @@
;;(define (delete-file f) #f)
(define delete-file
(case (software-type)
- ((UNIX)
+ ((unix)
(lambda (f)
(zero? (system (string-append "rm " f)))))
(else
@@ -344,7 +344,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))
diff --git a/version.txi b/version.txi
index 5d88497..1c1c2d8 100644
--- a/version.txi
+++ b/version.txi
@@ -1,2 +1,2 @@
-@set SLIBVERSION 3a2
-@set SLIBDATE June 2005
+@set SLIBVERSION 3a3
+@set SLIBDATE February 2006
diff --git a/vscm.init b/vscm.init
index 5bfd8fb..cd9e0c4 100644
--- a/vscm.init
+++ b/vscm.init
@@ -36,7 +36,7 @@
;;; (software-type) should be set to the generic operating system type.
;;; UNIX, VMS, MACOS, AMIGA and MS-DOS are supported.
-(define (software-type) 'UNIX)
+(define (software-type) 'unix)
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -57,9 +57,9 @@
;;; implementation reside.
(define (implementation-vicinity)
(case (software-type)
- ((UNIX) "/usr/local/src/scheme/")
- ((VMS) "scheme$src:")
- ((MS-DOS) "C:\\scheme\\")))
+ ((unix) "/usr/local/src/scheme/")
+ ((vms) "scheme$src:")
+ ((ms-dos) "C:\\scheme\\")))
;;; (library-vicinity) should be defined to be the pathname of the
;;; directory where files of Scheme library functions reside.
@@ -68,9 +68,9 @@
(or (getenv "SCHEME_LIBRARY_PATH")
;; Uses this path if SCHEME_LIBRARY_PATH is not set.
(case (software-type)
- ((UNIX) "/usr/local/lib/slib/")
- ((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
+ ((unix) "/usr/local/lib/slib/")
+ ((vms) "lib$scheme:")
+ ((ms-dos) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -81,7 +81,7 @@
(let ((home (getenv "HOME")))
(and home
(case (software-type)
- ((UNIX COHERENT MS-DOS) ;V7 unix has a / on HOME
+ ((unix coherent ms-dos) ;V7 unix has a / on HOME
(if (eqv? #\/ (string-ref home (+ -1 (string-length home))))
home
(string-append home "/")))
@@ -91,7 +91,7 @@
;@
(define (user-vicinity)
(case (software-type)
- ((VMS) "[.]")
+ ((vms) "[.]")
(else "")))
(define *load-pathname* #f)
@@ -99,12 +99,12 @@
(define vicinity:suffix?
(let ((suffi
(case (software-type)
- ((AMIGA) '(#\: #\/))
- ((MACOS THINKC) '(#\:))
- ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
- ((NOSVE) '(#\: #\.))
- ((UNIX COHERENT PLAN9) '(#\/))
- ((VMS) '(#\: #\]))
+ ((amiga) '(#\: #\/))
+ ((macos thinkc) '(#\:))
+ ((ms-dos windows atarist os/2) '(#\\ #\/))
+ ((nosve) '(#\: #\.))
+ ((unix coherent plan9) '(#\/))
+ ((vms) '(#\: #\]))
(else
(slib:warn "require.scm" 'unknown 'software-type (software-type))
"/"))))
@@ -123,7 +123,7 @@
;@
(define sub-vicinity
(case (software-type)
- ((VMS) (lambda
+ ((vms) (lambda
(vic name)
(let ((l (string-length vic)))
(if (or (zero? (string-length vic))
@@ -133,10 +133,10 @@
"." name "]")))))
(else (let ((*vicinity-suffix*
(case (software-type)
- ((NOSVE) ".")
- ((MACOS THINKC) ":")
- ((MS-DOS WINDOWS ATARIST OS/2) "\\")
- ((UNIX COHERENT PLAN9 AMIGA) "/"))))
+ ((nosve) ".")
+ ((macos thinkc) ":")
+ ((ms-dos windows atarist os/2) "\\")
+ ((unix coherent plan9 amiga) "/"))))
(lambda (vic name)
(string-append vic name *vicinity-suffix*))))))
;@
@@ -463,7 +463,7 @@
;;; Here for backward compatability
(define scheme-file-suffix
(let ((suffix (case (software-type)
- ((NOSVE) "_scm")
+ ((nosve) "_scm")
(else ".scm"))))
(lambda () suffix)))