diff options
| -rw-r--r-- | ANNOUNCE | 158 | ||||
| -rw-r--r-- | ChangeLog | 226 | ||||
| -rw-r--r-- | FAQ | 4 | ||||
| -rw-r--r-- | Makefile | 195 | ||||
| -rw-r--r-- | README | 174 | ||||
| -rw-r--r-- | RScheme.init | 49 | ||||
| -rw-r--r-- | SLIB.ico | bin | 0 -> 9326 bytes | |||
| -rw-r--r-- | STk.init | 42 | ||||
| -rw-r--r-- | Template.scm | 35 | ||||
| -rw-r--r-- | bigloo.init | 40 | ||||
| -rw-r--r-- | byte.scm | 101 | ||||
| -rw-r--r-- | byte.txi | 44 | ||||
| -rw-r--r-- | chez.init | 28 | ||||
| -rw-r--r-- | clrnamdb.scm | 2764 | ||||
| -rw-r--r-- | defmacex.scm | 2 | ||||
| -rw-r--r-- | determ.scm | 4 | ||||
| -rw-r--r-- | determ.txi | 4 | ||||
| -rw-r--r-- | dirs.scm | 2 | ||||
| -rw-r--r-- | elk.init | 40 | ||||
| -rw-r--r-- | fdl.texi | 21 | ||||
| -rw-r--r-- | gambit.init | 48 | ||||
| -rw-r--r-- | glob.scm | 2 | ||||
| -rw-r--r-- | glob.txi | 2 | ||||
| -rw-r--r-- | guile.init | 38 | ||||
| -rw-r--r-- | jscheme.init | 34 | ||||
| -rw-r--r-- | kawa.init | 20 | ||||
| -rw-r--r-- | macscheme.init | 26 | ||||
| -rw-r--r-- | mbe.scm | 4 | ||||
| -rw-r--r-- | mitscheme.init | 14 | ||||
| -rw-r--r-- | mklibcat.scm | 8 | ||||
| -rw-r--r-- | mkpltcat.scm | 54 | ||||
| -rw-r--r-- | mzscheme.init (renamed from DrScheme.init) | 36 | ||||
| -rw-r--r-- | peanosfc.scm | 2 | ||||
| -rw-r--r-- | prec.scm | 2 | ||||
| -rw-r--r-- | pscheme.init | 75 | ||||
| -rw-r--r-- | random.scm | 12 | ||||
| -rw-r--r-- | rdms.scm | 650 | ||||
| -rw-r--r-- | require.scm | 5 | ||||
| -rw-r--r-- | resenecolours.txt | 2772 | ||||
| -rw-r--r-- | scheme2c.init | 22 | ||||
| -rw-r--r-- | scheme48.init | 91 | ||||
| -rw-r--r-- | scsh.init | 26 | ||||
| -rw-r--r-- | sisc.init | 39 | ||||
| -rw-r--r-- | slib.1 | 4 | ||||
| -rw-r--r-- | slib.doc | 8 | ||||
| -rw-r--r-- | slib.info | 2812 | ||||
| -rw-r--r-- | slib.nsi | 46 | ||||
| -rwxr-xr-x | slib.sh | 10 | ||||
| -rw-r--r-- | slib.spec | 9 | ||||
| -rw-r--r-- | slib.texi | 198 | ||||
| -rw-r--r-- | solid.scm | 37 | ||||
| -rw-r--r-- | srfi-1.scm | 2 | ||||
| -rw-r--r-- | strsrch.scm | 2 | ||||
| -rw-r--r-- | t3.init | 13 | ||||
| -rw-r--r-- | transact.scm | 162 | ||||
| -rw-r--r-- | transact.txi | 18 | ||||
| -rw-r--r-- | umbscheme.init | 24 | ||||
| -rw-r--r-- | version.txi | 4 | ||||
| -rw-r--r-- | vscm.init | 35 | ||||
| -rw-r--r-- | wttest.scm | 2 | ||||
| -rw-r--r-- | xml-parse.scm | 2 | 
61 files changed, 6050 insertions, 5253 deletions
@@ -1,4 +1,4 @@ -This message announces the availability of Scheme Library release slib3a5. +This message announces the availability of Scheme Library release slib-3b1.  SLIB is a portable Scheme library providing compatibiliy and utility  functions for all standard Scheme implementations. @@ -20,81 +20,145 @@ Links to distributions of SLIB and related softwares are at the end of  this message.  				-=-=- -slib3a5 news: +slib-3b1 news: -  * Jerry van Dijk wrote NSIS  scripts to created MS-Windows installers. +  * Larceny (Scheme) is supported. -  * Robert Babbit updated "guile.init" for Guile 1.8. + From Ivan Shmakov: -  * Taylor R. Campbell updated "mitscheme.init" for versions after 7.7.1. +  * scheme48.init (slib:os-strings): Fixed init for 1.7 (and 1.3). +  (defmacro:eval, defmacro:load): Fixed. -  * Ivan Shmakov rewrote scheme48(.init) delete-file using Posix unlink. + From Rob Browning: -  * Stéphane Rollandin fixed problem with macros-that-work.  +  * guile.init (implementation-vicinity): Just (%site-dir). +  (file-position, gentemp): module-replace! +  (library-vicinity): Try (%search-load-path "slib/guile.init"). -* Draft SRFI-96 "SRFI Prerequisites" -  (http://srfi.schemers.org/srfi-96/srfi-96.html) specifies the -  interface between implementations and the SLIB library system. + From Aubrey Jaffer: -* Added support for Kawa and SISC. +  * Logo and icon. -* SSAX (xml-parse) module ported from SSAX 5.1 (http://ssax.sourceforge.net/). +  * Added program-arguments to System-Interface section in Manual. -* Sort package compatibly upgraded to SRFI-95. +  * *.init: implementation-vicinity can be overridden by +  implementation-specific environment variable: +  MITSCHEME_IMPLEMENTATION_PATH +  VSCM_IMPLEMENTATION_PATH +  STK_IMPLEMENTATION_PATH +  RSCHEME_IMPLEMENTATION_PATH +  JSCHEME_IMPLEMENTATION_PATH +  GAMBIT_IMPLEMENTATION_PATH +  ELK_IMPLEMENTATION_PATH +  CHEZ_IMPLEMENTATION_PATH +  BIGLOO_IMPLEMENTATION_PATH +  GUILE_IMPLEMENTATION_PATH +  MZSCHEME_IMPLEMENTATION_PATH -* Added features SRFI-11 (let-values) and SRFI-28 (format). +  * FAQ, slib.spec, Makefile: Always put - between slib and version. -* file-position is procedure to set and retrieve file position. +  * byte.scm: Rewritten based on uniform arrays. -* Fixed Guile array? in "guile.init". +  * random.scm (random): Err when passed negative number. -* jscheme.init (scheme-implementation-version): 7.2. -  (gcd, lcm, round, atan, expt): Fixed some R5RS non-conformances. +  * srfi-1.scm (lset<=): Fixed to use first argument. -* elk.init (delete-file): Quoted filename to system. -* scheme2c.init (delete-file, file-exists?): Quoted filename to system. -* scheme48.init (delete-file): Quoted filename to system. -* umbscheme.init (file-exists?, delete-file): Quoted filename to system. -* vscm.init (file-exists?): Quoted filename to system. +  * transact.scm (word:lock!): Don't try to read file until after +  call-with-open-ports returns. +  (describe-file-lock): Handle case when file isn't locked. +  (windows:user-email-address): Much simplified; updated to +  Windows-XP from Windows-95. +  (describe-file-lock): Added diagnostic to current-error-port. -* slib.sh (Kawa): Now supported. +  * rdms.scm (open-table): Return #f for failure per documentation. -* require.scm: Check up to SRFI-150. +  * solid.scm (light:point, light:spot): Fixed. -* Makefile (srcdir.mk): Removed. -(install*): Added $(DESTDIR) prefix. -* Makefile: Changed to use "mkdir -p" (per Marijn Schouten). +  * prec.scm (prec:parse-delimited): First (recursive) clause was +  missing argument. -* integer-sqrt moved from "root.scm" to "math-integer.scm". +  * determ.scm (matrix:inverse, matrix->lists): Corrected +  documentation. -* arraymap.scm (array-index-for-each): Added. +  * clrnamdb.scm, resenecolours.txt: Updated to Resene-2007. -* schmooz.scm (schmooz): Put generated .txi files in current directory. -(pathname->local-filename): Added complement to pathname->vicinity. +  * slib.texi (Spectra): Clarified action of features cie1964, +  cie1931, and ciexyz. -* determ.scm (matrix:sum, matrix:difference): Added. -(matrix:product): Extended to multiplication by scalar. +  * glob.scm, slib.texi: Removed glob as alias for filename. -* logical.scm (logcount): Simplified in terms of bitwise-bit-count. -(bitwise-bit-count): Added; returns negative integer for negative input. +  * dirs.scm: Require 'filename instead of 'glob. -* slib.texi: Eliminated cover texts from GFDL. +  * require.scm: Condition SRFI scan on srfi-0. -* collect.scm (reduce): Support both comlist (2-argument) variant -and the collect (> 2-argument) variant. -* srfi-1.scm (reduce): Support both comlist (2-argument) variant -and the SRFI-1 (3-argument) variant. +  * mklibcat.scm: Feature-name is srfi-0 (was srfi). -* bytenumb.scm (ieee-float->bytes, ieee-double->bytes): Test for 0 -and 0/0 only once; changed abs to magnitude to work with 0/0. +  * mbe.scm (macro:eval): defmacro:eval. +  (macro:load): defmacro:load. + +  * defmacex.scm (defmacro:expand*): Use macroexpand instead of +  macroexpand-1 in preparation for macroexpand-1 deprecation. + +  * slib.nsi: Added *.init files. + +  * README (Implementation-specific Instructions): Updated. + +  * scheme48.init (char-code-limit): 128; does ascii conversions. +  (1+, -1+): Removed; choked Scheme48-1.7. +  Added SRFIs as found in Scheme-48 release-notes. +  (scheme-implementation-version): Lose text after number. +  (program-arguments): Removed dummy definition. + +  * scsh.init (program-arguments): Defined to command-line per +  http://practical-scheme.net/wiliki/schemexref.cgi?command-line +  (library-vicinity, implementation-vicinity): Find path once. + +  * scheme2c.init, kawa.init, umbscheme.init +  (implementation-vicinity): find path once. + +  * vscm.init (slib:features): Added macro. + +  * RScheme.init (slib:features): Added defmacro. + +  * mzscheme.init (slib:features): Added syntax-case. + +  * guile.init, sisc.init (macro:load): slib:load-source. + +  * umbscheme.init, pscheme.init (defmacro:eval, defmacro:load): +  Simplified. + +  * kawa.init, mitscheme.init, bigloo.init, gambit.init, +  jscheme.init: (re)moved some comments. + +  * Template.scm, t3.init, STk.init, macscheme.init, scheme2c.init, +  scsh.init, chez.init, elk.init (slib:features): Added defmacro. + +  * guile.init ((ice-9 slib)): "ice-9/slib.scm" doesn't become valid +  (and shorter) until version guile-1.8.3. + +  * mzscheme.init: Renamed from DrScheme.init. +  (slib:features): Added format. +  (slib:load-compiled): Handle SRFI requires. + +  * Makefile (catalogs): Copy "mkpltcat.scm" to "mkimpcat.scm" in +  mzscheme's implementation-vicinity. +  (mkfiles): Added "mkpltcat.scm". + +  * mkpltcat.scm: "mkimpcat.scm" for mzscheme which adds all +  supported SRFIs to the catalog. + +  * Makefile (ciefiles): Separated from Scheme sourcefiles. +  (test): Unmaintained target removed.  				-=-=-  SLIB is available from: - http://swiss.csail.mit.edu/ftpdir/scm/slib3a5.zip - http://swiss.csail.mit.edu/ftpdir/scm/slib-3a5-1.noarch.rpm - swiss.csail.mit.edu:/pub/scm/slib3a5.zip - swiss.csail.mit.edu:/pub/scm/slib-3a5-1.noarch.rpm + http://swiss.csail.mit.edu/ftpdir/scm/slib-3b1.zip + http://swiss.csail.mit.edu/ftpdir/scm/slib-3b1-1.noarch.rpm + http://swiss.csail.mit.edu/ftpdir/scm/slib-3b1-1.exe + swiss.csail.mit.edu:/pub/scm/slib-3b1.zip + swiss.csail.mit.edu:/pub/scm/slib-3b1-1.noarch.rpm + swiss.csail.mit.edu:/pub/scm/slib-3b1-1.exe  SLIB-PSD is a portable debugger for Scheme (requires emacs editor):   http://swiss.csail.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz @@ -1,3 +1,229 @@ +2008-02-01  Aubrey Jaffer  <jaffer@aubrey.jaffer> + +	* require.scm (*slib-version*): Bumped from 3a5 to 3b1. + +2008-01-31  Aubrey Jaffer  <agj@alum.mit.edu> + +	* FAQ, slib.spec, Makefile: Always put - between slib and version. + +2008-01-28  Aubrey Jaffer  <agj@alum.mit.edu> + +	* fdl.texi: (Version 1.2, November 2002) Registered in CVS. + +	* slib.texi (About SLIB): SLIB is part of the GNU project. +	(Installation): Fixed \ problem choking pdf generation. + +2008-01-23  Aubrey Jaffer  <agj@alum.mit.edu> + +	* byte.scm: Rewritten to use uniform arrays. + +	* random.scm (random): Err when passed negative number. + +	* scheme48.init (char-code-limit): 128; does ascii conversions. + +2008-01-23  Ivan Shmakov + +	* scheme48.init (slib:os-strings): Fixed init for 1.7 (and 1.3). +	(defmacro:eval, defmacro:load): Fixed. + +2008-01-21  Aubrey Jaffer  <agj@alum.mit.edu> + +	* Makefile (ciefiles): Separated from Scheme sourefiles. +	(test): Unmaintained target removed. + +2008-01-19  Aubrey Jaffer  <agj@alum.mit.edu> + +	* scheme48.init (1+, -1+): Removed; choke Scheme48-1.7. +	Added SRFIs as found in Scheme-48 release-notes. +	(scheme-implementation-version): Lose text after number. + +	* Makefile ($(S48SLIB), $(S48LIB)): Prefix with $(DESTDIR). + +2008-01-18  Aubrey Jaffer  <agj@alum.mit.edu> + +	* srfi-1.scm (lset<=): Fixed to use first argument. + +	* Makefile (install, psdtemp/slib): mkdir -p. + +2008-01-17  Aubrey Jaffer  <agj@alum.mit.edu> + +	* transact.scm (word:lock!): Don't try to read file until after +	call-with-open-ports returns. +	(describe-file-lock): Handle case when file isn't locked. +	(windows:user-email-address): Much simplified; updated to +	Windows-XP from Windows-95. + +2008-01-16  Aubrey Jaffer  <agj@alum.mit.edu> + +	* Makefile (RSYNC): --rsync-path no longer needed. + +	* transact.scm (describe-file-lock): Added diagnostic to +	current-error-port. + +	* slib.nsi (MUI_ICON): Set to "SLIB.ico". + +	* Makefile (allfiles): Added SLIB.ico. + +2008-01-15  Aubrey Jaffer  <agj@alum.mit.edu> + +	* rdms.scm (open-table): Return #f for failure per documentation. + +2008-01-07  Aubrey Jaffer  <agj@alum.mit.edu> + +	* solid.scm (light:point, light:spot): Fixed. + +2008-01-02  Aubrey Jaffer  <agj@alum.mit.edu> + +	* determ.scm (matrix:inverse, matrix->lists): Corrected +	documentation. + +2007-12-31  Aubrey Jaffer  <agj@alum.mit.edu> + +	* clrnamdb.scm, resenecolours.txt: Updated to Resene-2007. + +2007-12-23  Aubrey Jaffer  <agj@alum.mit.edu> + +	* slib.texi: Removed glob as alias for filename. + +	* glob.scm: In documentation, removed glob as alias for filename. + +	* dirs.scm: Require 'filename instead of 'glob. + +	* require.scm: Condition SRFI scan on srfi-0. + +	* mklibcat.scm: Feature-name is srfi-0 (was srfi). + +	* scheme48.init, mzscheme.init, Template.scm, umbscheme.init, +	vscm.init, STk.init, scheme2c.init, scsh.init, sisc.init, t3.init, +	RScheme.init, macscheme.init, mitscheme.init, pscheme.init, +	jscheme.init, kawa.init, bigloo.init, chez.init, elk.init, +	gambit.init, guile.init (slib:features): +	Added srfi-96.  Replaced srfi with srfi-0. + +	* mbe.scm (macro:eval): defmacro:eval. +	(macro:load): defmacro:load. + +	* defmacex.scm (defmacro:expand*): Use macroexpand instead of +	macroexpand-1 in preparation for macroexpand-1 deprecation. + +	* vscm.init (slib:features): Added macro. + +	* RScheme.init (slib:features): Added defmacro. + +	* mzscheme.init (slib:features): Added syntax-case. + +	* guile.init, scheme48.init, sisc.init (macro:load): +	slib:load-source. + +	* umbscheme.init, pscheme.init (defmacro:eval, defmacro:load): +	Simplified. + +	* kawa.init, mitscheme.init, bigloo.init, gambit.init, +	jscheme.init: (re)moved some comments. + +	* Template.scm, t3.init, STk.init, macscheme.init, scheme2c.init, +	scsh.init, chez.init, elk.init (slib:features): Added defmacro. + +2007-12-21  Aubrey Jaffer  <agj@alum.mit.edu> + +	* slib.nsi: Added *.init files. + +	* slib.sh, slib.1: Added Larceny. + +	* slib.texi (Installation): Added Larceny. + +	* README (Implementation-specific Instructions): Updated. + +2007-12-20  Aubrey Jaffer  <agj@alum.mit.edu> + +	* prec.scm (prec:parse-delimited): First (recursive) clause was +	missing argument. + +2007-12-18  Aubrey Jaffer  <agj@alum.mit.edu> + +	* guile.init ((ice-9 slib)): "ice-9/slib.scm" doesn't become valid +	(and shorter) until version guile-1.8.3. + +2007-12-08  Aubrey Jaffer  <agj@alum.mit.edu> + +	* Makefile (catalogs): Copy "mkpltcat.scm" to "mkimpcat.scm" in +	mzscheme's implementation-vicinity. +	(mkfiles): Added "mkpltcat.scm". + +	* mkpltcat.scm: "mkimpcat.scm" for mzscheme which adds all +	supported SRFIs to the catalog. + +	* mzscheme.init (slib:features): Added format. +	(slib:load-compiled): Handle SRFI requires. + +	* slib.texi (Spectra): Clarified action of features cie1964, +	cie1931, and ciexyz. + +2007-11-29  Aubrey Jaffer  <agj@alum.mit.edu> + +	* slib.texi (Installation): Documented *_IMPLEMENTATION_PATHs. + +	* slib.sh: mzscheme.init renamed from DrScheme.init. + +	* mzscheme.init: Renamed from DrScheme.init. + +	* Makefile (ifiles): mzscheme.init renamed from DrScheme.init. + +	* Template.scm (implementation-vicinity): Environment variable +	{TEMPLATE}_IMPLEMENTATION_PATH overrides. + +	* mitscheme.init (implementation-vicinity): Environment variable +	MITSCHEME_IMPLEMENTATION_PATH overrides. + +	* vscm.init (implementation-vicinity): Environment variable +	VSCM_IMPLEMENTATION_PATH overrides. + +	* STk.init (implementation-vicinity): Environment variable +	STK_IMPLEMENTATION_PATH overrides. + +	* RScheme.init (implementation-vicinity): Environment variable +	RSCHEME_IMPLEMENTATION_PATH overrides. + +	* jscheme.init (implementation-vicinity): Environment variable +	JSCHEME_IMPLEMENTATION_PATH overrides. + +	* gambit.init (implementation-vicinity): Environment variable +	GAMBIT_IMPLEMENTATION_PATH overrides. + +	* elk.init (implementation-vicinity): Environment variable +	ELK_IMPLEMENTATION_PATH overrides. + +	* chez.init (implementation-vicinity): Environment variable +	CHEZ_IMPLEMENTATION_PATH overrides. + +	* bigloo.init (program-arguments): Defined per information on +	http://practical-scheme.net/wiliki/schemexref.cgi?command-line and +	http://practical-scheme.net/wiliki/schemexref.cgi?executable-name. +	(implementation-vicinity): Environment variable +	BIGLOO_IMPLEMENTATION_PATH overrides. + +	* guile.init (slib:features): Abstracted defined? tests. +	(implementation-vicinity): Environment variable +	GUILE_IMPLEMENTATION_PATH overrides. + +	* DrScheme.init, elk.init (program-arguments): Fake the program +	name (first element) from scheme-implementation-type. +	(implementation-vicinity): Environment variable +	MZSCHEME_IMPLEMENTATION_PATH overrides. + +	* scsh.init (program-arguments): Defined to command-line per +	http://practical-scheme.net/wiliki/schemexref.cgi?command-line + +	* scheme48.init (program-arguments): Removed dummy definition. + +	* sisc.init (library-vicinity, implementation-vicinity): Find path +	once. + +	* scheme2c.init, kawa.init, umbscheme.init +	(implementation-vicinity): find path once. + +	* slib.texi (System Interface): Added program-arguments. +  2007-11-28  Aubrey Jaffer  <agj@alum.mit.edu>  	* slib.sh (Usage): Updated implementation list. @@ -1,4 +1,4 @@ -FAQ (Frequently Asked Questions and answers) for SLIB Scheme Library (slib3a5). +FAQ (Frequently Asked Questions and answers) for SLIB Scheme Library (slib-3b1).  Written by Aubrey Jaffer (http://swiss.csail.mit.edu/~jaffer).  		INTRODUCTION AND GENERAL INFORMATION @@ -47,7 +47,7 @@ Several times a year.  []	What is the latest version? -The version as of this writing is slib3a5.  The latest documentation +The version as of this writing is slib-3b1.  The latest documentation  is available online at:   http://swiss.csail.mit.edu/~jaffer/SLIB.html @@ -11,7 +11,7 @@ intro:  	@echo  	-make slib.info -VERSION = 3a5 +VERSION = 3b1  RELEASE = 1  rpm_prefix=$(HOME)/rpmbuild/ @@ -22,8 +22,7 @@ bindir = $(exec_prefix)bin/  libdir = $(exec_prefix)lib/  libslibdir = $(libdir)slib/  # directory where `make install' will put manual page. -mandir = $(prefix)man/ -man1dir = $(mandir)man1/ +man1dir = $(prefix)man/man1/  infodir = $(prefix)info/  PREVDOCS = prevdocs/ @@ -38,8 +37,8 @@ VM = scheme48vm  IMAGE48 = slib.image  INSTALL_DATA = install -c -$(S48LIB)slibcat: -	touch $(S48LIB)slibcat +$(DESTDIR)$(S48LIB)slibcat: +	touch $(DESTDIR)$(S48LIB)slibcat  catalogs:  	-if type scm; then scm -c "(require 'new-catalog)"; fi @@ -47,8 +46,10 @@ catalogs:  	  "(use-modules (ice-9 slib)) (require 'new-catalog)"; fi  	-if type umb-scheme; then SCHEME_INIT=umbscheme.init;export SCHEME_INIT;\  	  echo "(require 'new-catalog)" | umb-scheme; fi -	-if type mzscheme; then SCHEME_LIBRARY_PATH=`pwd`/;export SCHEME_LIBRARY_PATH;\ -	  mzscheme -g -f DrScheme.init -e "(require 'new-catalog)" </dev/null; fi +	-if type mzscheme; then\ +	  SCHEME_LIBRARY_PATH=`pwd`/;export SCHEME_LIBRARY_PATH;\ +	  cp mkpltcat.scm `mzscheme -mf mzscheme.init -e '(begin(display(implementation-vicinity))(exit))'`mkimpcat.scm;\ +	  mzscheme -g -f mzscheme.init -e "(require 'new-catalog)" </dev/null; fi  	-if type scheme48; then make install48; fi  MKNMDB = (require 'color-database) (make-slib-color-name-db) (slib:exit) @@ -61,46 +62,46 @@ clrnamdb.scm:  mkclrnam.scm color.scm resenecolours.txt saturate.txt nbs-iscc.tx  	elif type umb-scheme; then SCHEME_INIT=`pwd`/umbscheme.init;export SCHEME_INIT;\  	 echo "$(MKNMDB)" | umb-scheme;\  	elif type mzscheme; then SCHEME_LIBRARY_PATH=`pwd`/;export SCHEME_LIBRARY_PATH;\ -	 echo "$(MKNMDB)" | mzscheme -f DrScheme.init;\ +	 echo "$(MKNMDB)" | mzscheme -f mzscheme.init;\  	fi -$(S48SLIB)strport.scm: -	test -d $(S48SLIB) || mkdir $(S48SLIB) -	echo ";;; strport.scm  -*- scheme -*-">$(S48SLIB)strport.scm -	echo ";@">>$(S48SLIB)strport.scm -	echo "(define (call-with-output-string proc)">>$(S48SLIB)strport.scm -	echo "  (let ((port (make-string-output-port)))">>$(S48SLIB)strport.scm -	echo "    (proc port)">>$(S48SLIB)strport.scm -	echo "    (string-output-port-output port)))">>$(S48SLIB)strport.scm -	echo "(define (call-with-input-string string proc)">>$(S48SLIB)strport.scm -	echo "  (proc (make-string-input-port string)))">>$(S48SLIB)strport.scm - -$(S48SLIB)record.scm: -	test -d $(S48SLIB) || mkdir $(S48SLIB) -	echo ";;; record.scm  -*- scheme -*-">$(S48SLIB)record.scm -	echo ";; This code is in the public domain">>$(S48SLIB)record.scm -	echo ";@">>$(S48SLIB)record.scm -	echo "(define make-record-type   make-record-type)">>$(S48SLIB)record.scm -	echo "(define record-constructor">>$(S48SLIB)record.scm -	echo "  (let ((constructor record-constructor))">>$(S48SLIB)record.scm -	echo "    (lambda (rt . fields)">>$(S48SLIB)record.scm -	echo "      (constructor rt (if (pair? fields)">>$(S48SLIB)record.scm -	echo "                          (car fields)">>$(S48SLIB)record.scm -	echo "                          (record-type-field-names rt))))))">>$(S48SLIB)record.scm -	echo "(define record-predicate   record-predicate)">>$(S48SLIB)record.scm -	echo "(define record-accessor    record-accessor)">>$(S48SLIB)record.scm -	echo "(define record-modifier    record-modifier)">>$(S48SLIB)record.scm +$(DESTDIR)$(S48SLIB)strport.scm: +	mkdir -p $(DESTDIR)$(S48SLIB) +	echo ";;; strport.scm  -*- scheme -*-">$(DESTDIR)$(S48SLIB)strport.scm +	echo ";@">>$(DESTDIR)$(S48SLIB)strport.scm +	echo "(define (call-with-output-string proc)">>$(DESTDIR)$(S48SLIB)strport.scm +	echo "  (let ((port (make-string-output-port)))">>$(DESTDIR)$(S48SLIB)strport.scm +	echo "    (proc port)">>$(DESTDIR)$(S48SLIB)strport.scm +	echo "    (string-output-port-output port)))">>$(DESTDIR)$(S48SLIB)strport.scm +	echo "(define (call-with-input-string string proc)">>$(DESTDIR)$(S48SLIB)strport.scm +	echo "  (proc (make-string-input-port string)))">>$(DESTDIR)$(S48SLIB)strport.scm + +$(DESTDIR)$(S48SLIB)record.scm: +	mkdir -p $(DESTDIR)$(S48SLIB) +	echo ";;; record.scm  -*- scheme -*-">$(DESTDIR)$(S48SLIB)record.scm +	echo ";; This code is in the public domain">>$(DESTDIR)$(S48SLIB)record.scm +	echo ";@">>$(DESTDIR)$(S48SLIB)record.scm +	echo "(define make-record-type   make-record-type)">>$(DESTDIR)$(S48SLIB)record.scm +	echo "(define record-constructor">>$(DESTDIR)$(S48SLIB)record.scm +	echo "  (let ((constructor record-constructor))">>$(DESTDIR)$(S48SLIB)record.scm +	echo "    (lambda (rt . fields)">>$(DESTDIR)$(S48SLIB)record.scm +	echo "      (constructor rt (if (pair? fields)">>$(DESTDIR)$(S48SLIB)record.scm +	echo "                          (car fields)">>$(DESTDIR)$(S48SLIB)record.scm +	echo "                          (record-type-field-names rt))))))">>$(DESTDIR)$(S48SLIB)record.scm +	echo "(define record-predicate   record-predicate)">>$(DESTDIR)$(S48SLIB)record.scm +	echo "(define record-accessor    record-accessor)">>$(DESTDIR)$(S48SLIB)record.scm +	echo "(define record-modifier    record-modifier)">>$(DESTDIR)$(S48SLIB)record.scm  slib48:	$(IMAGE48)  $(IMAGE48):	Makefile $(S48INIT)  	S48_VERSION="`echo ,exit | $(RUNNABLE) | sed -n 's/Welcome to Scheme 48 //;s/ ([^)]*)[.]//;p;q'`";export S48_VERSION;\ -	S48_VICINITY="$(S48LIB)";export S48_VICINITY;\ +	S48_VICINITY="$(DESTDIR)$(S48LIB)";export S48_VICINITY;\  	SCHEME_LIBRARY_PATH="`pwd`/";export SCHEME_LIBRARY_PATH;\  	$(RUNNABLE) < $(S48INIT) -install48:	$(IMAGE48) $(S48SLIB)strport.scm $(S48SLIB)record.scm -	$(INSTALL_DATA) $(IMAGE48) $(S48LIB) +install48:	$(IMAGE48) $(DESTDIR)$(S48SLIB)strport.scm $(DESTDIR)$(S48SLIB)record.scm +	$(INSTALL_DATA) $(IMAGE48) $(DESTDIR)$(S48LIB)  	(echo '#! /bin/sh';\ -	 echo exec $(RUNNABLE) -i '$(S48LIB)$(IMAGE48)' \"\$$\@\") \ +	 echo exec $(RUNNABLE) -i '$(DESTDIR)$(S48LIB)$(IMAGE48)' \"\$$\@\") \  	  > $(DESTDIR)$(bindir)slib48  	chmod +x $(DESTDIR)$(bindir)slib48 @@ -126,7 +127,7 @@ efiles = record.scm dynamic.scm process.scm hash.scm \  rfiles = rdms.scm alistab.scm paramlst.scm \  	batch.scm crc.scm dbrowse.scm getopt.scm dbinterp.scm \  	dbcom.scm dbsyn.scm -gfiles = colorspc.scm cie1931.xyz cie1964.xyz resenecolours.txt saturate.txt \ +ciefiles = cie1931.xyz cie1964.xyz resenecolours.txt saturate.txt \  	nbs-iscc.txt ciesid65.dat ciesia.dat  txiscms =grapheps.scm glob.scm getparam.scm \ @@ -157,31 +158,29 @@ texifiles = schmooz.texi indexes.texi object.texi format.texi limit.texi \  	 fdl.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 \ -	Bev2slib.scm slib.spec slib.sh grapheps.ps slib.nsi +mkfiles = Makefile require.scm Template.scm mklibcat.scm mkpltcat.scm \ +	syncase.sh Bev2slib.scm slib.spec slib.sh grapheps.ps slib.nsi  ifiles = bigloo.init chez.init elk.init macscheme.init mitscheme.init \  	scheme2c.init scheme48.init gambit.init t3.init vscm.init \  	scm.init scsh.init sisc.init pscheme.init STk.init kawa.init \ -	RScheme.init DrScheme.init umbscheme.init guile.init jscheme.init +	RScheme.init mzscheme.init umbscheme.init guile.init jscheme.init  tfiles = macrotst.scm dwindtst.scm formatst.scm  sfiles = $(ffiles) $(lfiles) $(revfiles) $(afiles) $(scfiles) $(efiles) \ -	$(rfiles) $(gfiles) $(scafiles) $(txiscms) $(srfiles) +	$(rfiles) colorspc.scm $(scafiles) $(txiscms) $(srfiles)  allfiles = $(docfiles) $(mkfiles) $(ifiles) $(sfiles) $(tfiles) $(bfiles) \ -	slib.doc clrnamdb.scm +	slib.doc $(ciefiles) clrnamdb.scm SLIB.ico  pinstall:	slib.1 -	test -d $(DESTDIR)$(mandir) || mkdir $(DESTDIR)$(mandir) -	test -d $(DESTDIR)$(man1dir) || mkdir $(DESTDIR)$(man1dir) +	mkdir -p $(DESTDIR)$(man1dir)  	-cp slib.1 $(DESTDIR)$(man1dir)  install:	pinstall clrnamdb.scm -	test -d $(DESTDIR)$(libdir) || mkdir $(DESTDIR)$(libdir) -	test -d $(DESTDIR)$(libslibdir) || mkdir $(DESTDIR)$(libslibdir) +	mkdir -p $(DESTDIR)$(libslibdir)  	-cp  $(ifiles) $(sfiles) $(bfiles) $(mkfiles) clrnamdb.scm $(DESTDIR)$(libslibdir) -	test -d $(DESTDIR)$(bindir) || mkdir $(DESTDIR)$(bindir) +	mkdir -p $(DESTDIR)$(bindir)  	echo '#! /bin/sh'			 > $(DESTDIR)$(bindir)slib  	echo SCHEME_LIBRARY_PATH=$(DESTDIR)$(libslibdir)  >> $(DESTDIR)$(bindir)slib -	echo S48_VICINITY=$(S48LIB)		>> $(DESTDIR)$(bindir)slib +	echo S48_VICINITY=$(DESTDIR)$(S48LIB)	>> $(DESTDIR)$(bindir)slib  	echo VERSION=$(VERSION)			>> $(DESTDIR)$(bindir)slib  	echo export SCHEME_LIBRARY_PATH S48_VICINITY >> $(DESTDIR)$(bindir)slib  	cat slib.sh				>> $(DESTDIR)$(bindir)slib @@ -249,13 +248,13 @@ $(htmldir)slib_toc.html:	slib_toc.html Makefile  		then hitch $(PREVDOCS)slib_\*.html slib_\*.html $(htmldir); \  		else cp slib_*.html $(htmldir);fi -slib$(VERSION).info:	version.txi slib.texi $(txifiles) $(texifiles) +slib-$(VERSION).info:	version.txi slib.texi $(txifiles) $(texifiles)  	makeinfo slib.texi --no-warn --no-split -o slib.info -	mv slib.info slib$(VERSION).info -slib.info:	slib$(VERSION).info +	mv slib.info slib-$(VERSION).info +slib.info:	slib-$(VERSION).info  	if [ -f $(PREVDOCS)slib.info ];\ -		then infobar $(PREVDOCS)slib.info slib$(VERSION).info slib.info;\ -		else cp slib$(VERSION).info slib.info;fi +		then infobar $(PREVDOCS)slib.info slib-$(VERSION).info slib.info;\ +		else cp slib-$(VERSION).info slib.info;fi  info:	installinfo  installinfo:	$(DESTDIR)$(infodir)slib.info  $(DESTDIR)$(infodir)slib.info:	slib.info @@ -274,7 +273,7 @@ docs:	$(DESTDIR)$(infodir)slib.info.gz $(htmldir)slib_toc.html slib.dvi \  makedev = make -f $(HOME)/makefile.dev  CHPAT=$(HOME)/bin/chpat -RSYNC=rsync --rsync-path=bin/rsync -bav +RSYNC=rsync -bav  UPLOADEE=swissnet_upload  dest = $(HOME)/dist/  DOSCM = /c/Voluntocracy/dist/ @@ -297,6 +296,7 @@ $(PREVDOCS)slib.info:	Makefile  	cd $(PREVDOCS)slib; make slib.info; make slib_toc.html  	cd $(PREVDOCS); mv -f slib/slib.info slib/*.html ./  	rm -rf $(PREVDOCS)slib +	-rm -f slib-$(VERSION).info  distinfo:	$(dest)slib.info.zip  $(dest)slib.info.zip:	infotemp/slib @@ -304,34 +304,34 @@ $(dest)slib.info.zip:	infotemp/slib  	rm -rf infotemp  release:	dist pdf tar.gz	# rpm -	cvs tag -F slib$(VERSION) +	cvs tag -F slib-$(VERSION)  	cp ANNOUNCE $(htmldir)SLIB_ANNOUNCE.txt  	cp COPYING $(htmldir)SLIB_COPYING.txt  	cp FAQ $(htmldir)SLIB.FAQ  	$(RSYNC) $(htmldir)SLIB.html $(htmldir)SLIB_ANNOUNCE.txt \  	 $(htmldir)SLIB_COPYING.txt $(UPLOADEE):public_html/ -	$(RSYNC) $(dest)README $(dest)slib$(VERSION).zip \ -	 $(dest)slib$(VERSION).tar.gz \ +	$(RSYNC) $(dest)README $(dest)slib-$(VERSION).zip \ +	 $(dest)slib-$(VERSION).tar.gz \  	 $(dest)slib-$(VERSION)-$(RELEASE).noarch.rpm \  	 $(dest)slib-$(VERSION)-$(RELEASE).src.rpm $(UPLOADEE):dist/ -#	upload $(dest)README $(dest)slib$(VERSION).zip ftp.gnu.org:gnu/jacal/ +#	upload $(dest)README $(dest)slib-$(VERSION).zip ftp.gnu.org:gnu/jacal/  upzip:	$(HOME)/pub/slib.zip  	$(RSYNC) $(HOME)/pub/slib.zip $(UPLOADEE):pub/ -dist:	$(dest)slib$(VERSION).zip -$(dest)slib$(VERSION).zip:	temp/slib -	$(makedev) DEST=$(dest) PROD=slib ver=$(VERSION) zip +dist:	$(dest)slib-$(VERSION).zip +$(dest)slib-$(VERSION).zip:	temp/slib +	$(makedev) DEST=$(dest) PROD=slib ver=-$(VERSION) zip -tar.gz:	$(dest)slib$(VERSION).tar.gz -$(dest)slib$(VERSION).tar.gz:	temp/slib -	$(makedev) DEST=$(dest) PROD=slib ver=$(VERSION) tar.gz +tar.gz:	$(dest)slib-$(VERSION).tar.gz +$(dest)slib-$(VERSION).tar.gz:	temp/slib +	$(makedev) DEST=$(dest) PROD=slib ver=-$(VERSION) tar.gz  rpm:	pubzip -#$(dest)slib-$(VERSION)-$(RELEASE).noarch.rpm:	$(dest)slib$(VERSION).zip -	cp $(HOME)/pub/slib.zip $(rpm_prefix)SOURCES/slib$(VERSION).zip +#$(dest)slib-$(VERSION)-$(RELEASE).noarch.rpm:	$(dest)slib-$(VERSION).zip +	cp $(HOME)/pub/slib.zip $(rpm_prefix)SOURCES/slib-$(VERSION).zip  	rpmbuild -ba slib.spec	# --clean -	rm $(rpm_prefix)SOURCES/slib$(VERSION).zip +	rm $(rpm_prefix)SOURCES/slib-$(VERSION).zip  	mv $(rpm_prefix)RPMS/noarch/slib-$(VERSION)-$(RELEASE).noarch.rpm \  	   $(rpm_prefix)SRPMS/slib-$(VERSION)-$(RELEASE).src.rpm $(dest) @@ -345,11 +345,11 @@ slib.com:	temp/slib  zip:	slib.zip  slib.zip:	temp/slib  	$(makedev) DEST=../ PROD=slib zip -doszip:	$(DOSCM)slib$(VERSION).zip -$(DOSCM)slib$(VERSION).zip:	temp/slib slib.html -	$(makedev) DEST=$(DOSCM) PROD=slib ver=$(VERSION) zip -	-cd ..; zip -9ur $(DOSCM)slib$(VERSION).zip slib/slib.html -	zip -d $(DOSCM)slib$(VERSION).zip slib/slib.info +doszip:	$(DOSCM)slib-$(VERSION).zip +$(DOSCM)slib-$(VERSION).zip:	temp/slib slib.html +	$(makedev) DEST=$(DOSCM) PROD=slib ver=-$(VERSION) zip +	-cd ..; zip -9ur $(DOSCM)slib-$(VERSION).zip slib/slib.html +	zip -d $(DOSCM)slib-$(VERSION).zip slib/slib.info  pubzip:	temp/slib  	$(makedev) DEST=$(HOME)/pub/ PROD=slib zip @@ -359,7 +359,7 @@ pubdiffs:	temp/slib  distdiffs:	temp/slib  	$(makedev) DEST=$(dest) PROD=slib ver=$(ver) distdiffs  announcediffs:	temp/slib -	$(makedev) DEST=$(dest) PROD=slib ver=$(VERSION) announcediffs +	$(makedev) DEST=$(dest) PROD=slib ver=-$(VERSION) announcediffs  psdfiles=COPYING.psd README.psd cmuscheme.el comint.el instrum.scm pexpr.scm \  	primitives.scm psd-slib.scm psd.el read.scm runtime.scm version.scm @@ -369,52 +369,45 @@ psdtemp/slib:  	-rm -rf psdtemp  	mkdir -p psdtemp/slib/psd  	cd psd; ln $(psdfiles) ../psdtemp/slib/psd -	mkdir psdtemp/slib/psd/doc +	mkdir -p psdtemp/slib/psd/doc  	cd psd/doc; ln $(psdocfiles) ../../psdtemp/slib/psd/doc  psdist:	$(dest)slib-psd.tar.gz  $(dest)slib-psd.tar.gz:	psdtemp/slib  	$(makedev) DEST=$(dest) PROD=slib ver=-psd tar.gz TEMP=psdtemp/ +CITERS = FAQ README ANNOUNCE \ +	../dist/README \ +	../jacal/ANNOUNCE ../jacal/jacal.texi \ +	../scm/ANNOUNCE ../scm/scm.texi \ +	../wb/ANNOUNCE ../wb/README \ +	../synch/ANNOUNCE \ +	$(DOSCM)unzipall.bat $(DOSCM)buildall \ +	$(htmldir)JACAL.html \ +	$(htmldir)README.html \ +	$(htmldir)SCM.html \ +	$(htmldir)SIMSYNCH.html \ +	$(htmldir)FreeSnell/ANNOUNCE $(htmldir)FreeSnell/index.html +CITES =  require.scm Makefile slib.spec scheme48.init \ +	$(htmldir)SLIB.html slib.nsi ../scm/scm.nsi +  new: +	$(CHPAT) slib-$(VERSION) slib-$(ver) $(CITERS) +	$(CHPAT) $(VERSION) $(ver) $(CITES)  	echo `date -I` \ Aubrey Jaffer \ \<`whoami`@`hostname`\>> change  	echo>> change  	echo \	\* require.scm \(*slib-version*\): Bumped from $(VERSION) to $(ver).>>change  	echo>> change  	cat ChangeLog >> change  	mv -f change ChangeLog -	$(CHPAT) slib$(VERSION) slib$(ver) ANNOUNCE FAQ README \ -		../scm/ANNOUNCE \ -		../jacal/ANNOUNCE ../wb/README ../wb/ANNOUNCE \ -		../synch/ANNOUNCE \ -		$(htmldir)README.html ../dist/README \ -		$(htmldir)JACAL.html \ -		$(htmldir)SCM.html \ -		$(htmldir)SIMSYNCH.html ../scm/scm.texi ../jacal/jacal.texi \ -		$(DOSCM)install.bat $(DOSCM)makefile \ -		$(DOSCM)mkdisk.bat -	$(CHPAT) slib-$(VERSION) slib-$(ver) ANNOUNCE FAQ ../scm/ANNOUNCE \ -		../jacal/ANNOUNCE ../wb/README ../wb/ANNOUNCE \ -		../synch/ANNOUNCE \ -		$(htmldir)README.html ../dist/README \ -		$(htmldir)JACAL.html \ -		$(htmldir)SCM.html \ -		$(htmldir)SIMSYNCH.html ../scm/scm.texi ../jacal/jacal.texi \ -		$(DOSCM)install.bat $(DOSCM)makefile \ -		$(DOSCM)mkdisk.bat -	$(CHPAT) $(VERSION) $(ver) require.scm Makefile \ -		 $(htmldir)SLIB.html slib.spec scheme48.init \ -		 slib.nsi ../scm/scm.nsi  	cvs commit -lm '(*slib-version*): Bumped from $(VERSION) to $(ver).' -	cvs tag -lF slib$(ver) +	cvs tag -F slib-$(ver)  tagfiles = README version.txi slib.texi $(texifiles) \  	$(mkfiles) $(sfiles) $(bfiles) $(tfiles) $(ifiles)  # README and $(ifiles) cause semgentation faults in ETAGS for Emacs version 19.  tags:	$(tagfiles)  	etags $(tagfiles) -test:	$(sfiles) -	$(scheme) Template.scm $(sfiles)  rights:  	$(scheme) -ladmin -e"(admin:check-all)" $(sfiles) $(tfiles) \  		$(bfiles) $(ifiles) @@ -1,4 +1,4 @@ -This directory contains the distribution of Scheme Library slib3a5. +This directory contains the distribution of Scheme Library slib-3b1.  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. @@ -18,7 +18,7 @@ The maintainer can be reached at agj @ alum.mit.edu.  	reflect your system.    `bigloo.init' is a configuration file for Bigloo.    `chez.init' is a configuration file for Chez Scheme. -  `DrScheme.init' is a configuration file for DrScheme. +  `mzscheme.init' is a configuration file for mzscheme.    `elk.init' is a configuration file for ELK 3.0.    `gambit.init' is a configuration file for Gambit Scheme.    `macscheme.init' is a configuration file for MacScheme. @@ -197,20 +197,22 @@ The maintainer can be reached at agj @ alum.mit.edu.  		      INSTALLATION INSTRUCTIONS -  There are four parts to installation: +There are five parts to installation:     * Unpack the SLIB distribution. -   * Configure the Scheme implementation(s) to locate the SLIB -     directory. +   * Install documentation and `slib' script. + +   * Configure the Scheme implementation(s) to locate the SLIB directory +     and implementation directories.     * Arrange for Scheme implementation to load its SLIB initialization       file.     * Build the SLIB catalog for the Scheme implementation. -Unpacking the SLIB Distribution -------------------------------- +8.1.1 Unpacking the SLIB Distribution +-------------------------------------  If the SLIB distribution is a GNU/Linux RPM, it will create the SLIB  directory `/usr/share/slib'. @@ -223,21 +225,50 @@ 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. -Configure Scheme Implementation to Locate SLIB ----------------------------------------------- +8.1.2 Install documentation and slib script +------------------------------------------- -If the Scheme implementation supports `getenv', then the value of the -shell environment variable SCHEME_LIBRARY_PATH will be used for -`(library-vicinity)' if it is defined.  Currently, Chez, Elk, -MITScheme, scheme->c, VSCM, and SCM support `getenv'.  Scheme48 -supports `getenv' but does not use it for determining -`library-vicinity'.  (That is done from the Makefile.) +     make infoz +     make install -  The `(library-vicinity)' can also be specified from the SLIB -initialization file or by implementation-specific means. +8.1.3 Configure Scheme Implementation to Locate SLIB +---------------------------------------------------- -Loading SLIB Initialization File --------------------------------- +If the Scheme implementation supports `getenv', then the value of the +shell environment variable SCHEME_LIBRARY_PATH will be used for +`(library-vicinity)' if it is defined.  Currently, Bigloo, Chez, Elk, +Gambit, Guile, Jscheme, Larceny, MITScheme, MzScheme, RScheme, STk, +VSCM, and SCM support `getenv'.  Scheme48 supports `getenv' but does +not use it for determining `library-vicinity'.  (That is done from the +Makefile.) + +  The `(library-vicinity)' can also be set from the SLIB initialization +file or by implementation-specific means. + +  Support for locating an implementation's auxiliary directory is uneven +among implementations.  Also, the person installing SLIB may not have +write permission to some of these directories (necessary for writing +slibcat).  Therefore, those implementations supporting `getenv' (except +SCM and Scheme48) provide a means for specifying the +`implementation-vicinity' through environment variables.  Define the +indicated environment variable to the pathname (with trailing slash or +backslash) of the desired directory.  Do not use `slib/' as an +implementation-vicinity! + +Bigloo                 BIGLOO_IMPLEMENTATION_PATH +Chez                   CHEZ_IMPLEMENTATION_PATH +ELK                    ELK_IMPLEMENTATION_PATH +Gambit                 GAMBIT_IMPLEMENTATION_PATH +Guile                  GUILE_IMPLEMENTATION_PATH +Jscheme                JSCHEME_IMPLEMENTATION_PATH +MIT-Scheme             MITSCHEME_IMPLEMENTATION_PATH +MzScheme               MZSCHEME_IMPLEMENTATION_PATH +RScheme                RSCHEME_IMPLEMENTATION_PATH +STk                    STK_IMPLEMENTATION_PATH +Vscm                   VSCM_IMPLEMENTATION_PATH + +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 @@ -251,8 +282,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. -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. @@ -272,43 +303,69 @@ SLIB-installed scheme implementation, type:       (require 'new-catalog)       (slib:exit) -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: VSCM -     From: Matthias Blume <blume @ cs.Princeton.EDU> -     Date: Tue, 1 Mar 1994 11:42:31 -0500 + -- Implementation: Larceny +     Starting with version 0.96, Larceny contains its own SLIB +     initialization file, loaded by `(require 'srfi-96)'.  If +     SCHEME_LIBRARY_PATH is not set, then Larceny looks for an `slib' +     subdirectory of a directory in the list returned by +     `(current-require-path)' -     Disclaimer: The code below is only a quick hack.  If I find some -     time to spare I might get around to make some more things work. +          larceny -- -e "(require 'srfi-96)" -     You have to provide `vscm.init' as an explicit command line -     argument.  Since this is not very nice I would recommend the -     following installation procedure: + -- Implementation: ELK +          elk -i -l ${SCHEME_LIBRARY_PATH}elk.init -       1. run scheme + -- Implementation: PLT Scheme + -- Implementation: DrScheme + -- Implementation: MzScheme +     The `init.ss' file in the _slibinit_ collection is an SLIB +     initialization file.  To run SLIB in MzScheme: -       2. `(load "vscm.init")' +          mzscheme -f ${SCHEME_LIBRARY_PATH}mzscheme.init -       3. `(slib:dump "dumpfile")' + -- Implementation: MIT Scheme +          scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init + + -- Implementation: Gambit-C 3.0 +          gsi -:s ${SCHEME_LIBRARY_PATH}gambit.init - + + -- Implementation: SISC +          sisc -e "(load \"${SCHEME_LIBRARY_PATH}sisc.init\")" -- + + -- Implementation: Kawa +          kawa -f ${SCHEME_LIBRARY_PATH}kawa.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 -       4. mv dumpfile place-where-vscm-standard-bootfile-resides e.g. -          mv dumpfile /usr/local/vscm/lib/scheme-boot (In this case -          vscm should have been compiled with flag -          -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"'.  See -          Makefile (definition of DDP) for details.) +     In Debian installations: +          rm /usr/share/guile/1.6/slib +          ln -s ${SCHEME_LIBRARY_PATH} /usr/share/guile/1.6/slib - - Implementation: Scheme48 +     `${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 @@ -319,22 +376,33 @@ above.            This will also create a shell script with the name `slib48'            which will invoke the saved image. - - Implementation: PLT Scheme - - Implementation: DrScheme - - Implementation: MzScheme -     The `init.ss' file in the _slibinit_ collection is an SLIB -     initialization file. + -- Implementation: VSCM +     From: Matthias Blume <blume @ cs.Princeton.EDU> +     Date: Tue, 1 Mar 1994 11:42:31 -0500 + +     Disclaimer: The code below is only a quick hack.  If I find some +     time to spare I might get around to make some more things work. + +     You have to provide `vscm.init' as an explicit command line +     argument.  Since this is not very nice I would recommend the +     following installation procedure: + +       1. run scheme + +       2. `(load "vscm.init")' + +       3. `(slib:dump "dumpfile")' + +       4. mv dumpfile place-where-vscm-standard-bootfile-resides.  For +          example: -     To use SLIB in MzScheme, set the SCHEME_LIBRARY_PATH environment -     variable to the installed SLIB location; then invoke MzScheme thus: +          `mv dumpfile /usr/local/vscm/lib/scheme-boot' -     `mzscheme -f ${SCHEME_LIBRARY_PATH}DrScheme.init' +          In this case vscm should have been compiled with flag: - - Implementation: MIT Scheme -     `scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init' +          -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"' - - Implementation: Guile -     `guile -l ${SCHEME_LIBRARY_PATH}guile.init' +          See Makefile (definition of DDP) for details.  			 PORTING INSTRUCTIONS diff --git a/RScheme.init b/RScheme.init index 87aacdb..a9607f4 100644 --- a/RScheme.init +++ b/RScheme.init @@ -31,11 +31,15 @@  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) -  (case (software-type) -    ((unix)	 "/usr/local/lib/rs/0.7.1/") -    ((vms)	"scheme$src:") -    ((ms-dos)	"C:\\scheme\\"))) +(define implementation-vicinity +  (let ((impl-path +	 (or (getenv "RSCHEME_IMPLEMENTATION_PATH") +	     (case (software-type) +	       ((unix) "/usr/local/lib/rs/0.7.1/") +	       ((vms) "scheme$src:") +	       ((ms-dos) "C:\\scheme\\") +	       (else ""))))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -103,8 +107,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -144,6 +147,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -187,11 +191,11 @@  			;; Other common features -	srfi				;srfi-0, COND-EXPAND finds all srfi-* +	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO  ;;;	record				;has user defined data structures  	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -283,14 +287,6 @@  ;;; Return argument  ;;(define (identity x) x) -;;; If your implementation provides eval SLIB:EVAL is single argument -;;; eval using the top-level (user) environment. -(define slib:eval eval) - -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -320,14 +316,14 @@        (string->symbol         (string-append "slib:G" (number->string *gensym-counter*)))))) -(define base:eval slib:eval) -(define (defmacro:eval x) (base:eval (defmacro:expand* x))) +;;; SLIB:EVAL is single argument eval using the top-level (user) +;;; environment. +(define slib:eval eval) +(define (defmacro:eval x) (eval (defmacro:expand* x)))  (define (defmacro:expand* x)    (require 'defmacroexpand) (apply defmacro:expand* x '())) -  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args @@ -372,17 +368,22 @@  ;;; (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-source f) (load (string-append f ".scm")))  ;;; (SLIB:LOAD-COMPILED "foo") should load the file that was produced  ;;; by compiling "foo.scm" if this implementation can compile files.  ;;; See feature 'COMPILED. -  (define slib:load-compiled load)  ;;; At this point SLIB:LOAD must be able to load SLIB files. -  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load load) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  (slib:load (in-vicinity (library-vicinity) "require")) diff --git a/SLIB.ico b/SLIB.ico Binary files differnew file mode 100644 index 0000000..09f18fb --- /dev/null +++ b/SLIB.ico @@ -26,7 +26,11 @@  ;;; (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) "/usr/local/lib/stk/3.99.3/") +(define implementation-vicinity +  (let ((impl-path +	 (or (getenv "STK_IMPLEMENTATION_PATH") +	     "/usr/local/lib/stk/3.99.3/"))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -84,8 +88,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -126,6 +129,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -169,11 +173,11 @@  			;; Other common features -	srfi				;srfi-0, COND-EXPAND finds all srfi-* +	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO  ;;;	record				;has user defined data structures  	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -256,10 +260,6 @@  ;;; eval using the top-level (user) environment.  (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -  (define *macros* '())  (define-macro (defmacro name args . body) @@ -267,12 +267,10 @@       (define-macro (,name ,@args) ,@body)       (set! *macros* (cons ,name *macros*)))) -  (define (defmacro? m) (and (memv m *macros*) #t)) -(define macroexpand-1 MACRO-EXPAND-1) -(define macroexpand   MACRO-EXPAND) - +(define macroexpand-1 macro-expand-1) +(define macroexpand   macro-expand)  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -285,7 +283,6 @@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args @@ -324,13 +321,21 @@  ;;; (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-source LOAD) +(define slib:load-source load)  ;;; (SLIB:LOAD-COMPILED "foo") should load the file that was produced  ;;; by compiling "foo.scm" if this implementation can compile files.  ;;; See feature 'COMPILED.  (define slib:load-compiled load) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  ;;;  ;;; Retain original require/provide before loading "require.scm"  ;;; @@ -341,11 +346,8 @@  (define slib:load slib:load-source)  (slib:load (in-vicinity (library-vicinity) "require")) - -;;; -;;; Redefine require/provide so that symbols use SLIB one and strings use STk one -;;; - +;;; Redefine require/provide so that symbols use SLIB one and strings +;;; use STk one  (define require    (let ((slib:require require))      (lambda (item) diff --git a/Template.scm b/Template.scm index b006f7a..c61de29 100644 --- a/Template.scm +++ b/Template.scm @@ -23,11 +23,15 @@  ;;@ (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) -  (case (software-type) -    ((unix)	"/usr/local/src/scheme/") -    ((vms)	"scheme$src:") -    ((ms-dos)	"C:\\scheme\\"))) +(define implementation-vicinity +  (let ((impl-path +	 (or (getenv "{TEMPLATE}_IMPLEMENTATION_PATH") +	     (case (software-type) +	       ((unix) "/usr/local/src/scheme/") +	       ((vms) "scheme$src:") +	       ((ms-dos) "C:\\scheme\\") +	       (else ""))))) +    (lambda () impl-path)))  ;;@ (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -95,8 +99,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -137,6 +140,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -180,11 +184,12 @@  			;; Other common features -	srfi				;srfi-0, COND-EXPAND finds all srfi-* +	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO +;;;	syntax-case			;has syncase:eval and syncase:load  ;;;	record				;has user defined data structures  ;;;	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -256,9 +261,6 @@  ;;@ SLIB:EVAL is single argument eval using the top-level (user) environment.  (define slib:eval eval) -;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load)  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -300,7 +302,6 @@  ;@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  ;@  (define slib:warn    (lambda args @@ -386,4 +387,12 @@  ;;@ At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  (slib:load (in-vicinity (library-vicinity) "require")) diff --git a/bigloo.init b/bigloo.init index 13ad86d..54467bb 100644 --- a/bigloo.init +++ b/bigloo.init @@ -24,11 +24,14 @@  ;;@ (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) -  (case (software-type) -    ((unix) (string-append *default-lib-dir* "/")) -    ((ms-dos) "C:\\scheme\\") -    (else ""))) +(define implementation-vicinity +  (let ((impl-path +	 (or (getenv "BIGLOO_IMPLEMENTATION_PATH") +	     (case (software-type) +	       ((unix) (string-append *default-lib-dir* "/")) +	       ((ms-dos) "C:\\scheme\\") +	       (else ""))))) +    (lambda () impl-path)))  ;;@ (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -98,8 +101,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -139,6 +141,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -182,7 +185,7 @@  			;; Other common features -	srfi				;srfi-0, COND-EXPAND finds all srfi-* +	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -199,7 +202,7 @@  ;;;	ed				;(ED) is editor  	system				;posix (system <string>)  	getenv				;posix (getenv <string>) -;;;	program-arguments		;returns list of strings (argv) +	program-arguments		;returns list of strings (argv)  ;;;	current-time			;returns time in seconds since 1/1/1970  		  ;; Implementation Specific features @@ -210,6 +213,11 @@  					; non-symbols.  	)) +;;@ http://practical-scheme.net/wiliki/schemexref.cgi?command-line +;;http://practical-scheme.net/wiliki/schemexref.cgi?executable-name +(define (program-arguments) +  (cons (executable-name) (command-line))) +  (define pretty-print pp)  ;;; OBJ->STRING returns strings with control characters. @@ -293,10 +301,6 @@  ;;@ SLIB:EVAL is single argument eval using the top-level (user) environment.  (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -  (define-macro (defmacro name . forms)    `(define-macro (,name . ,(car forms)) ,@(cdr forms)))  ;@ @@ -313,8 +317,6 @@  ;;(define (defmacro:expand* x)  ;;  (require 'defmacroexpand) (apply defmacro:expand* x '())) -;; slib:eval-load definition moved to "require.scm" -  ;@  (define slib:warn    (lambda args @@ -408,4 +410,12 @@  ;@  (define defmacro:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  (slib:load (in-vicinity (library-vicinity) "require")) @@ -1,5 +1,5 @@  ;;; "byte.scm" small integers, not necessarily chars. -; Copyright (C) 2001, 2002, 2003, 2006 Aubrey Jaffer +; Copyright (C) 2001, 2002, 2003, 2006, 2008 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 @@ -17,7 +17,7 @@  ;promotional, or sales literature without prior written consent in  ;each case. -(require 'rev4-optional-procedures)	; string-copy +(require 'array)  ;;@code{(require 'byte)}  ;;@ftindex byte @@ -29,16 +29,17 @@  ;;character sets.  These functions abstract the notion of a @dfn{byte}.  ;;@cindex byte -;;@body +;;@args bytes k  ;;@2 must be a valid index of @1.  @0 returns byte @2 of @1 using  ;;zero-origin indexing. -(define (byte-ref bytes k) (char->integer (string-ref bytes k))) +(define byte-ref array-ref)  ;;@body  ;;@2 must be a valid index of @1, and @var{byte} must be a small  ;;nonnegative integer.  @0 stores @var{byte} in element @2 of @1 and  ;;returns an unspecified value.  @c <!> -(define (byte-set! bytes k byte) (string-set! bytes k (integer->char byte))) +(define (byte-set! bytes k byte) +  (array-set! bytes byte k))  ;;@args k byte  ;;@args k @@ -46,27 +47,29 @@  ;;given, then all elements of the byte-array are initialized to @2,  ;;otherwise the contents of the byte-array are unspecified.  (define (make-bytes len . opt) -  (if (null? opt) (make-string len) -      (make-string len (integer->char (car opt))))) +  (make-array (apply A:fixN8b opt) len))  ;;@args bytes  ;;@0 returns length of byte-array @1. -(define bytes-length string-length) +(define (bytes-length bts) +  (car (array-dimensions bts)))  ;;@args byte @dots{}  ;;Returns a newly allocated byte-array composed of the small  ;;nonnegative arguments. -(define (bytes . args) (list->bytes args)) - -;;@args bytes -;;@0 returns a newly allocated list of the bytes that make up the -;;given byte-array. -(define (bytes->list bts) (map char->integer (string->list bts))) +(define (bytes . args) +  (list->array 1 (A:fixN8b) args))  ;;@args bytes  ;;@0 returns a newly allocated byte-array formed from the small  ;;nonnegative integers in the list @1. -(define (list->bytes lst) (list->string (map integer->char lst))) +(define (list->bytes lst) +  (list->array 1 (A:fixN8b) lst)) + +;;@args bytes +;;@0 returns a newly allocated list of the bytes that make up the +;;given byte-array. +(define bytes->list array->list)  ;;@noindent  ;;@code{Bytes->list} and @code{list->bytes} are inverses so far as @@ -74,8 +77,35 @@  ;;@findex equal?  ;;@args bytes +;;Returns a new string formed from applying @code{integer->char} to +;;each byte in @0.  Note that this may signal an error for bytes +;;having values between 128 and 255. +(define (bytes->string bts) +  (define len (bytes-length bts)) +  (let ((new (make-string len))) +    (do ((idx (- len 1) (+ -1 idx))) +	((negative? idx) new) +      (string-set! new idx (integer->char (byte-ref bts idx)))))) + +;;@args string +;;Returns a new byte-array formed from applying @code{char->integer} +;;to each character in @0.  Note that this may signal an error if an +;;integer is larger than 255. +(define (string->bytes str) +  (define len (string-length str)) +  (let ((new (make-bytes len))) +    (do ((idx (- len 1) (+ -1 idx))) +	((negative? idx) new) +      (byte-set! new idx (char->integer (string-ref str idx)))))) + +;;@args bytes  ;;Returns a newly allocated copy of the given @1. -(define bytes-copy string-copy) +(define (bytes-copy bts) +  (define len (bytes-length bts)) +  (let ((new (make-bytes len))) +    (do ((idx (- len 1) (+ -1 idx))) +	((negative? idx) new) +      (byte-set! new idx (byte-ref bytes idx)))))  ;;@args bytes start end  ;;@1 must be a bytes, and @2 and @3 @@ -86,7 +116,11 @@  ;;@0 returns a newly allocated bytes formed from the bytes of  ;;@1 beginning with index @2 (inclusive) and ending with index  ;;@3 (exclusive). -(define subbytes substring) +(define (subbytes bytes start end) +  (define new (make-bytes (- end start))) +  (do ((idx (- end start 1) (+ -1 idx))) +      ((negative? idx) new) +    (byte-set! new idx (byte-ref bytes (+ start idx)))))  ;;@body  ;;Reverses the order of byte-array @1. @@ -119,7 +153,8 @@  ;;be omitted, in which case it defaults to the value returned by  ;;@code{current-output-port}.  ;;@findex current-output-port -(define (write-byte byt . opt) (apply write-char (integer->char byt) opt)) +(define (write-byte byt . opt) +  (apply write-char (integer->char byt) opt))  ;;@args port  ;;@args @@ -151,7 +186,7 @@  ;;@code{(abs @var{n})} bytes read from @2.  If @1 is positive, then  ;;the first byte read is stored at index 0; otherwise the last byte  ;;read is stored at index 0.  Note that the length of the returned -;;string will be less than @code{(abs @var{n})} if @2 reaches +;;byte-array will be less than @code{(abs @var{n})} if @2 reaches  ;;end-of-file.  ;;  ;;@2 may be omitted, in which case it defaults to the value returned @@ -165,8 +200,8 @@      (if (= cnt len)  	byts  	(if (positive? n) -	    (substring byts 0 cnt) -	    (substring byts (- len cnt) len))))) +	    (subbytes byts 0 cnt) +	    (subbytes byts (- len cnt) len)))))  ;;@args bytes n port  ;;@args bytes n @@ -188,15 +223,15 @@  ;;relative size of @var{start} and @var{end} determines the order of  ;;writing. -;;@args string start end port -;;@args string start end +;;@args bts start end port +;;@args bts start end  ;;Fills @1 with up to @code{(abs (- @var{start} @var{end}))} bytes  ;;read from @4.  The first byte read is stored at index @1.  ;;@0 returns the number of bytes read.  ;;  ;;@4 may be omitted, in which case it defaults to the value returned  ;;by @code{current-input-port}. -(define (subbytes-read! string start end . port) +(define (subbytes-read! bts start end . port)    (if (>= end start)        (do ((idx start (+ 1 idx)))  	  ((>= idx end) idx) @@ -204,7 +239,7 @@  	  (cond ((eof-object? byt)  		 (set! idx (+ -1 idx))  		 (set! end idx)) -		(else (byte-set! string idx byt))))) +		(else (byte-set! bts idx byt)))))        (do ((idx (+ -1 start) (+ -1 idx))  	   (cnt 0 (+ 1 cnt)))  	  ((< idx end) cnt) @@ -212,25 +247,21 @@  	  (cond ((eof-object? byt)  		 (set! idx start)  		 (set! cnt (+ -1 cnt))) -		(else (byte-set! string idx byt))))))) +		(else (byte-set! bts idx byt))))))) -;;@args string start end port -;;@args string start end +;;@args bts start end port +;;@args bts start end  ;;@0 writes @code{(abs (- @var{start} @var{end}))} bytes to  ;;output-port @4.  The first byte written is index @2 of @1.  @0  ;;returns the number of bytes written.  ;;  ;;@4 may be omitted, in which case it defaults to the value returned  ;;by @code{current-output-port}. -(define (subbytes-write string start end . port) +(define (subbytes-write bts start end . port)    (if (>= end start)        (do ((idx start (+ 1 idx)))  	  ((>= idx end) (- end start)) -	(apply write-byte (byte-ref string idx) port)) +	(apply write-byte (byte-ref bts idx) port))        (do ((idx (+ -1 start) (+ -1 idx)))  	  ((< idx end) (- start end)) -	(apply write-byte (byte-ref string idx) port)))) - -;;;; Legacy names. -(define substring-read! subbytes-read!) -(define substring-write subbytes-write) +	(apply write-byte (byte-ref bts idx) port)))) @@ -48,17 +48,17 @@ nonnegative arguments.  @end defun -@defun bytes->list bytes +@defun list->bytes bytes -@code{bytes->list} returns a newly allocated list of the bytes that make up the -given byte-array. +@code{list->bytes} returns a newly allocated byte-array formed from the small +nonnegative integers in the list @var{bytes}.  @end defun -@defun list->bytes bytes +@defun bytes->list bytes -@code{list->bytes} returns a newly allocated byte-array formed from the small -nonnegative integers in the list @var{bytes}. +@code{bytes->list} returns a newly allocated list of the bytes that make up the +given byte-array.  @end defun  @noindent @@ -67,6 +67,22 @@ nonnegative integers in the list @var{bytes}.  @findex equal? +@defun bytes->string bytes + +Returns a new string formed from applying @code{integer->char} to +each byte in @code{bytes->string}.  Note that this may signal an error for bytes +having values between 128 and 255. +@end defun + + +@defun string->bytes string + +Returns a new byte-array formed from applying @code{char->integer} +to each character in @code{string->bytes}.  Note that this may signal an error if an +integer is larger than 255. +@end defun + +  @defun bytes-copy bytes  Returns a newly allocated copy of the given @var{bytes}. @@ -153,7 +169,7 @@ multi-byte sequences produced and used by number conversion routines  @code{(abs @var{n})} bytes read from @var{port}.  If @var{n} is positive, then  the first byte read is stored at index 0; otherwise the last byte  read is stored at index 0.  Note that the length of the returned -string will be less than @code{(abs @var{n})} if @var{port} reaches +byte-array will be less than @code{(abs @var{n})} if @var{port} reaches  end-of-file.  @var{port} may be omitted, in which case it defaults to the value returned @@ -181,12 +197,12 @@ relative size of @var{start} and @var{end} determines the order of  writing. -@deffn {Procedure} subbytes-read! string start end port +@deffn {Procedure} subbytes-read! bts start end port -@deffnx {Procedure} subbytes-read! string start end -Fills @var{string} with up to @code{(abs (- @var{start} @var{end}))} bytes -read from @var{port}.  The first byte read is stored at index @var{string}. +@deffnx {Procedure} subbytes-read! bts start end +Fills @var{bts} with up to @code{(abs (- @var{start} @var{end}))} bytes +read from @var{port}.  The first byte read is stored at index @var{bts}.  @code{subbytes-read!} returns the number of bytes read.  @var{port} may be omitted, in which case it defaults to the value returned @@ -194,12 +210,12 @@ by @code{current-input-port}.  @end deffn -@defun subbytes-write string start end port +@defun subbytes-write bts start end port -@defunx subbytes-write string start end +@defunx subbytes-write bts start end  @code{subbytes-write} writes @code{(abs (- @var{start} @var{end}))} bytes to -output-port @var{port}.  The first byte written is index @var{start} of @var{string}.  @code{subbytes-write} +output-port @var{port}.  The first byte written is index @var{start} of @var{bts}.  @code{subbytes-write}  returns the number of bytes written.  @var{port} may be omitted, in which case it defaults to the value returned @@ -28,7 +28,10 @@  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside.  (define implementation-vicinity -  (lambda () "/usr/unsup/scheme/chez/")) +  (let ((impl-path +	 (or (getenv "CHEZ_IMPLEMENTATION_PATH") +	     "/usr/unsup/scheme/chez/"))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -95,8 +98,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -137,6 +139,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -180,11 +183,11 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO  	record				;has user defined data structures  	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -374,6 +377,15 @@  ;;; At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +;;; macro:load also needs the default suffix. +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  ;;; The following make procedures in Chez Scheme compatible with  ;;; the assumptions of SLIB. @@ -431,11 +443,6 @@        (close-input-port insp)        res))) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -;;; macro:load also needs the default suffix. -(define macro:load slib:load-source) -  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -468,7 +475,6 @@    (require 'defmacroexpand) (apply defmacro:expand* x '()))  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args diff --git a/clrnamdb.scm b/clrnamdb.scm index d1ed549..f95575f 100644 --- a/clrnamdb.scm +++ b/clrnamdb.scm @@ -1,4 +1,4 @@ -;;; "/usr/local/lib/slib/clrnamdb.scm" SLIB 3a4 alist-table database	 -*-scheme-*- +;;; "/usr/local/lib/slib/clrnamdb.scm" SLIB 3a5 alist-table database	 -*-scheme-*-  (   (10 @@ -276,1389 +276,1385 @@    (1 #t name #f string)   )   (8 -  ("zydeco" "sRGB:2/64/44" 1383) -  ("zumthor" "sRGB:237/246/255" 1382) -  ("zuccini" "sRGB:4/64/34" 1381) -  ("zorba" "sRGB:165/155/145" 1380) -  ("zombie" "sRGB:228/214/155" 1379) -  ("zircon" "sRGB:244/248/255" 1378) -  ("ziggurat" "sRGB:191/219/226" 1377) -  ("zeus" "sRGB:41/35/25" 1376) -  ("zest" "sRGB:229/132/27" 1375) -  ("zanah" "sRGB:218/236/214" 1374) -  ("zambezi" "sRGB:104/85/88" 1373) -  ("yuma" "sRGB:206/194/145" 1372) -  ("yukongold" "sRGB:123/102/8" 1371) -  ("yourpink" "sRGB:255/195/192" 1370) -  ("yellowsea" "sRGB:254/169/4" 1369) -  ("yellowmetal" "sRGB:113/99/56" 1368) -  ("xanadu" "sRGB:115/134/120" 1367) -  ("woodybrown" "sRGB:72/49/49" 1366) -  ("woodybay" "sRGB:41/33/48" 1365) -  ("woodsmoke" "sRGB:12/13/15" 1364) -  ("woodrush" "sRGB:48/42/15" 1363) -  ("woodland" "sRGB:77/83/40" 1362) -  ("woodburn" "sRGB:60/32/5" 1361) -  ("woodbark" "sRGB:38/17/5" 1360) -  ("witchhaze" "sRGB:255/252/153" 1359) -  ("wistful" "sRGB:164/166/211" 1358) -  ("wisteria" "sRGB:151/113/181" 1357) -  ("wisppink" "sRGB:254/244/248" 1356) -  ("winterhazel" "sRGB:213/209/149" 1355) -  ("wineberry" "sRGB:89/29/53" 1354) -  ("windsor" "sRGB:60/8/120" 1353) -  ("willowgrove" "sRGB:101/116/93" 1352) -  ("willowbrook" "sRGB:223/236/218" 1351) -  ("william" "sRGB:58/104/108" 1350) -  ("wildwillow" "sRGB:185/196/106" 1349) -  ("wildsand" "sRGB:244/244/244" 1348) -  ("wildrice" "sRGB:236/224/144" 1347) -  ("whiterock" "sRGB:234/232/212" 1346) -  ("whitepointer" "sRGB:254/248/255" 1345) -  ("whitenectar" "sRGB:252/255/231" 1344) -  ("whitelinen" "sRGB:248/240/232" 1343) -  ("whitelilac" "sRGB:248/247/252" 1342) -  ("whiteice" "sRGB:221/249/241" 1341) -  ("whisper" "sRGB:247/245/250" 1340) -  ("whiskeysour" "sRGB:219/153/94" 1339) -  ("whiskey" "sRGB:213/154/111" 1338) -  ("wheatfield" "sRGB:243/237/207" 1337) -  ("wewak" "sRGB:241/155/171" 1336) -  ("westernred" "sRGB:139/7/35" 1335) -  ("westar" "sRGB:220/217/210" 1334) -  ("westside" "sRGB:255/145/15" 1333) -  ("westcoast" "sRGB:98/81/25" 1332) -  ("wellread" "sRGB:180/51/50" 1331) -  ("wedgewood" "sRGB:78/127/158" 1330) -  ("wepeep" "sRGB:247/219/230" 1329) -  ("waxflower" "sRGB:255/192/168" 1328) -  ("watusi" "sRGB:255/221/207" 1327) -  ("wattle" "sRGB:220/215/71" 1326) -  ("waterloo" "sRGB:123/124/148" 1325) -  ("watercourse" "sRGB:5/111/87" 1324) -  ("waterleaf" "sRGB:161/233/222" 1323) -  ("wasabi" "sRGB:120/138/37" 1322) -  ("wanwhite" "sRGB:252/255/249" 1321) -  ("walnut" "sRGB:119/63/26" 1320) -  ("waiouru" "sRGB:54/60/13" 1319) -  ("waikawagrey" "sRGB:90/110/156" 1318) -  ("wafer" "sRGB:222/203/198" 1317) -  ("vulcan" "sRGB:16/18/29" 1316) -  ("voodoo" "sRGB:83/52/85" 1315) -  ("volcano" "sRGB:101/26/20" 1314) -  ("vistawhite" "sRGB:252/248/247" 1313) -  ("vistablue" "sRGB:143/214/180" 1312) -  ("visvis" "sRGB:255/239/161" 1311) -  ("viridiangreen" "sRGB:103/137/117" 1310) -  ("violet" "sRGB:36/10/64" 1309) -  ("violentviolet" "sRGB:41/12/94" 1308) -  ("viola" "sRGB:203/143/169" 1307) -  ("vinrouge" "sRGB:152/61/97" 1306) -  ("viking" "sRGB:100/204/219" 1305) -  ("vidaloca" "sRGB:84/144/25" 1304) -  ("victoria" "sRGB:83/68/145" 1303) -  ("vesuvius" "sRGB:177/74/11" 1302) -  ("verdungreen" "sRGB:73/84/0" 1301) -  ("verdigris" "sRGB:93/94/55" 1300) -  ("venus" "sRGB:146/133/144" 1299) -  ("veniceblue" "sRGB:5/89/137" 1298) -  ("venetianred" "sRGB:114/1/15" 1297) -  ("varden" "sRGB:255/246/223" 1296) -  ("vanillaice" "sRGB:243/217/223" 1295) -  ("vanilla" "sRGB:209/190/168" 1294) -  ("vancleef" "sRGB:73/23/12" 1293) -  ("valhalla" "sRGB:43/25/79" 1292) -  ("valentino" "sRGB:53/14/66" 1291) -  ("valencia" "sRGB:216/68/55" 1290) -  ("twine" "sRGB:194/149/93" 1289) -  ("twilightblue" "sRGB:238/253/255" 1288) -  ("twilight" "sRGB:228/207/222" 1287) -  ("tutu" "sRGB:255/241/249" 1286) -  ("tussock" "sRGB:197/153/75" 1285) -  ("tusk" "sRGB:238/243/195" 1284) -  ("tuscany" "sRGB:189/94/46" 1283) -  ("turtlegreen" "sRGB:42/56/11" 1282) -  ("turmeric" "sRGB:202/187/72" 1281) -  ("turkishrose" "sRGB:181/114/129" 1280) -  ("turbo" "sRGB:250/230/0" 1279) -  ("tundora" "sRGB:74/66/68" 1278) -  ("tuna" "sRGB:53/53/66" 1277) -  ("tumbleweed" "sRGB:55/41/14" 1276) -  ("tuliptree" "sRGB:234/179/59" 1275) -  ("tuftbush" "sRGB:255/221/205" 1274) -  ("tuatara" "sRGB:54/53/52" 1273) -  ("truev" "sRGB:138/115/214" 1272) -  ("trout" "sRGB:74/78/90" 1271) -  ("tropicalblue" "sRGB:195/221/249" 1270) -  ("trinidad" "sRGB:230/78/3" 1269) -  ("trendypink" "sRGB:140/100/149" 1268) -  ("trendygreen" "sRGB:124/136/26" 1267) -  ("treehouse" "sRGB:59/40/32" 1266) -  ("treepoppy" "sRGB:252/156/29" 1265) -  ("travertine" "sRGB:255/253/232" 1264) -  ("tranquil" "sRGB:230/255/255" 1263) -  ("tradewind" "sRGB:95/179/172" 1262) -  ("towergrey" "sRGB:169/189/191" 1261) -  ("touchwood" "sRGB:55/48/33" 1260) -  ("totempole" "sRGB:153/27/7" 1259) -  ("tosca" "sRGB:141/63/63" 1258) -  ("toryblue" "sRGB:20/80/170" 1257) -  ("toreabay" "sRGB:15/45/158" 1256) -  ("topaz" "sRGB:124/119/138" 1255) -  ("tonyspink" "sRGB:231/159/140" 1254) -  ("tomthumb" "sRGB:63/88/59" 1253) -  ("tolopea" "sRGB:27/2/69" 1252) -  ("toledo" "sRGB:58/0/32" 1251) -  ("tobago" "sRGB:62/43/35" 1250) -  ("tobaccobrown" "sRGB:113/93/71" 1249) -  ("toast" "sRGB:154/110/97" 1248) -  ("titanwhite" "sRGB:240/238/255" 1247) -  ("timbergreen" "sRGB:22/50/44" 1246) -  ("tide" "sRGB:191/184/176" 1245) -  ("tidal" "sRGB:241/255/173" 1244) -  ("tiber" "sRGB:6/53/55" 1243) -  ("tiara" "sRGB:195/209/209" 1242) -  ("tiamaria" "sRGB:193/68/14" 1241) -  ("thunderbird" "sRGB:192/43/24" 1240) -  ("thunder" "sRGB:51/41/47" 1239) -  ("thistle" "sRGB:204/202/168" 1238) -  ("thatchgreen" "sRGB:64/61/25" 1237) -  ("thatch" "sRGB:182/157/152" 1236) -  ("texasrose" "sRGB:255/181/85" 1235) -  ("texas" "sRGB:248/249/156" 1234) -  ("tequila" "sRGB:255/230/199" 1233) -  ("temptress" "sRGB:59/0/11" 1232) -  ("tealblue" "sRGB:4/66/89" 1231) -  ("teakwoodfinish" "sRGB:107/42/20" 1230) -  ("teak" "sRGB:177/148/97" 1229) -  ("tea" "sRGB:193/186/176" 1228) -  ("tepapagreen" "sRGB:30/67/60" 1227) -  ("taxbreak" "sRGB:81/128/143" 1226) -  ("tawnyport" "sRGB:105/37/69" 1225) -  ("taupegrey" "sRGB:179/175/149" 1224) -  ("tasman" "sRGB:207/220/207" 1223) -  ("tarawera" "sRGB:7/58/80" 1222) -  ("tara" "sRGB:225/246/232" 1221) -  ("tapestry" "sRGB:176/94/129" 1220) -  ("tapa" "sRGB:123/120/116" 1219) -  ("tango" "sRGB:237/122/28" 1218) -  ("tangerine" "sRGB:233/110/0" 1217) -  ("tangaroa" "sRGB:3/22/60" 1216) -  ("tana" "sRGB:217/220/193" 1215) -  ("tamarind" "sRGB:52/21/21" 1214) -  ("tamarillo" "sRGB:153/22/19" 1213) -  ("tallow" "sRGB:168/165/137" 1212) -  ("tallpoppy" "sRGB:179/45/41" 1211) -  ("tahunasands" "sRGB:238/240/200" 1210) -  ("tahitigold" "sRGB:233/124/7" 1209) -  ("tacha" "sRGB:214/197/98" 1208) -  ("tacao" "sRGB:237/179/129" 1207) -  ("tabasco" "sRGB:160/39/18" 1206) -  ("sycamore" "sRGB:144/141/57" 1205) -  ("swisscoffee" "sRGB:221/214/213" 1204) -  ("swirl" "sRGB:211/205/197" 1203) -  ("sweetpink" "sRGB:253/159/162" 1202) -  ("sweetcorn" "sRGB:251/234/140" 1201) -  ("swansdown" "sRGB:220/240/234" 1200) -  ("swamp" "sRGB:0/27/28" 1199) -  ("suvagrey" "sRGB:136/131/135" 1198) -  ("sushi" "sRGB:135/171/57" 1197) -  ("surfiegreen" "sRGB:12/122/121" 1196) -  ("surfcrest" "sRGB:207/229/210" 1195) -  ("surf" "sRGB:187/215/193" 1194) -  ("supernova" "sRGB:255/201/1" 1193) -  ("sunshade" "sRGB:255/158/44" 1192) -  ("sunset" "sRGB:220/67/51" 1191) -  ("sunglo" "sRGB:225/104/101" 1190) -  ("sunflower" "sRGB:228/212/34" 1189) -  ("sundown" "sRGB:255/177/179" 1188) -  ("sundance" "sRGB:201/179/91" 1187) -  ("sun" "sRGB:251/172/19" 1186) -  ("summergreen" "sRGB:150/187/171" 1185) -  ("sulu" "sRGB:193/240/124" 1184) -  ("sugarcane" "sRGB:249/255/246" 1183) -  ("submarine" "sRGB:186/199/201" 1182) -  ("studio" "sRGB:113/74/178" 1181) -  ("stromboli" "sRGB:50/93/82" 1180) -  ("strikemaster" "sRGB:149/99/135" 1179) -  ("straw" "sRGB:212/191/141" 1178) -  ("stratos" "sRGB:0/7/65" 1177) -  ("stormgrey" "sRGB:113/116/134" 1176) -  ("stormdust" "sRGB:100/100/99" 1175) -  ("stonewall" "sRGB:146/133/115" 1174) -  ("stinger" "sRGB:139/107/11" 1173) -  ("stiletto" "sRGB:156/51/54" 1172) -  ("steelgrey" "sRGB:38/35/53" 1171) -  ("starship" "sRGB:236/242/69" 1170) -  ("starkwhite" "sRGB:229/215/189" 1169) -  ("stardust" "sRGB:159/159/156" 1168) -  ("stack" "sRGB:138/143/138" 1167) -  ("sttropaz" "sRGB:45/86/155" 1166) -  ("squirrel" "sRGB:143/129/118" 1165) -  ("spunpearl" "sRGB:170/171/183" 1164) -  ("sprout" "sRGB:193/215/176" 1163) -  ("springwood" "sRGB:248/246/241" 1162) -  ("springsun" "sRGB:246/255/220" 1161) -  ("springrain" "sRGB:172/203/177" 1160) -  ("springgreen" "sRGB:87/131/99" 1159) -  ("spray" "sRGB:121/222/236" 1158) -  ("splash" "sRGB:255/239/193" 1157) -  ("spindle" "sRGB:182/209/234" 1156) -  ("spicypink" "sRGB:129/110/113" 1155) -  ("spicymix" "sRGB:136/83/66" 1154) -  ("spice" "sRGB:106/68/46" 1153) -  ("spectra" "sRGB:47/90/87" 1152) -  ("spanishwhite" "sRGB:244/235/211" 1151) -  ("spanishgreen" "sRGB:129/152/133" 1150) -  ("spaceshuttle" "sRGB:67/49/32" 1149) -  ("soyabean" "sRGB:106/96/81" 1148) -  ("sourdough" "sRGB:209/190/168" 1147) -  ("sorrellbrown" "sRGB:206/185/143" 1146) -  ("sorbus" "sRGB:253/124/7" 1145) -  ("solitude" "sRGB:234/246/255" 1144) -  ("solitaire" "sRGB:254/248/226" 1143) -  ("solidpink" "sRGB:137/56/67" 1142) -  ("softpeach" "sRGB:245/237/239" 1141) -  ("softamber" "sRGB:209/198/180" 1140) -  ("soapstone" "sRGB:255/251/249" 1139) -  ("snuff" "sRGB:226/216/237" 1138) -  ("snowymint" "sRGB:214/255/219" 1137) -  ("snowflurry" "sRGB:228/255/209" 1136) -  ("snowdrift" "sRGB:247/250/247" 1135) -  ("smoky" "sRGB:96/91/115" 1134) -  ("smokeyash" "sRGB:65/60/55" 1133) -  ("smoketree" "sRGB:218/99/4" 1132) -  ("smaltblue" "sRGB:81/128/143" 1131) -  ("slugger" "sRGB:65/32/16" 1130) -  ("skeptic" "sRGB:202/230/218" 1129) -  ("sisal" "sRGB:211/203/186" 1128) -  ("sirocco" "sRGB:113/128/128" 1127) -  ("siren" "sRGB:122/1/58" 1126) -  ("sinbad" "sRGB:159/215/211" 1125) -  ("silvertree" "sRGB:102/181/143" 1124) -  ("silversand" "sRGB:191/193/194" 1123) -  ("silverchalice" "sRGB:172/172/172" 1122) -  ("silk" "sRGB:189/177/168" 1121) -  ("sidecar" "sRGB:243/231/187" 1120) -  ("siam" "sRGB:100/106/84" 1119) -  ("shuttlegrey" "sRGB:95/102/114" 1118) -  ("shocking" "sRGB:226/146/192" 1117) -  ("shiraz" "sRGB:178/9/49" 1116) -  ("shipgrey" "sRGB:62/58/68" 1115) -  ("shipcove" "sRGB:120/139/186" 1114) -  ("shinglefawn" "sRGB:107/78/49" 1113) -  ("shilo" "sRGB:232/185/179" 1112) -  ("sherwoodgreen" "sRGB:2/64/44" 1111) -  ("sherpablue" "sRGB:0/73/80" 1110) -  ("shark" "sRGB:37/39/44" 1109) -  ("shalimar" "sRGB:251/255/186" 1108) -  ("shakespeare" "sRGB:78/171/209" 1107) -  ("shadylady" "sRGB:170/165/169" 1106) -  ("shadowgreen" "sRGB:154/194/184" 1105) -  ("serenade" "sRGB:255/244/232" 1104) -  ("sepia" "sRGB:43/2/2" 1103) -  ("selago" "sRGB:240/238/253" 1102) -  ("seaweed" "sRGB:27/47/17" 1101) -  ("seashell" "sRGB:241/241/241" 1100) -  ("seance" "sRGB:115/30/143" 1099) -  ("seagull" "sRGB:128/204/234" 1098) -  ("seapink" "sRGB:237/152/158" 1097) -  ("seanymph" "sRGB:120/163/156" 1096) -  ("seamist" "sRGB:197/219/202" 1095) -  ("seagreen" "sRGB:9/88/89" 1094) -  ("seafog" "sRGB:252/255/249" 1093) -  ("seabuckthorn" "sRGB:251/161/41" 1092) -  ("scrub" "sRGB:46/50/34" 1091) -  ("scotchmist" "sRGB:255/251/220" 1090) -  ("scorpion" "sRGB:105/95/98" 1089) -  ("scooter" "sRGB:46/191/212" 1088) -  ("schooner" "sRGB:139/132/126" 1087) -  ("schist" "sRGB:169/180/151" 1086) -  ("scarpaflow" "sRGB:88/85/98" 1085) -  ("scarlett" "sRGB:149/0/21" 1084) -  ("scarletgum" "sRGB:67/21/96" 1083) -  ("scandal" "sRGB:207/250/244" 1082) -  ("scampi" "sRGB:103/95/166" 1081) -  ("sazerac" "sRGB:255/244/224" 1080) -  ("sauvignon" "sRGB:255/245/243" 1079) -  ("saratoga" "sRGB:85/91/16" 1078) -  ("sapphire" "sRGB:47/81/158" 1077) -  ("sapling" "sRGB:222/212/164" 1076) -  ("santasgrey" "sRGB:159/160/177" 1075) -  ("santafe" "sRGB:177/109/82" 1074) -  ("sanguinebrown" "sRGB:141/61/56" 1073) -  ("sangria" "sRGB:146/0/10" 1072) -  ("sandybeach" "sRGB:255/234/200" 1071) -  ("sandwisp" "sRGB:245/231/162" 1070) -  ("sandstone" "sRGB:121/109/98" 1069) -  ("sandrift" "sRGB:171/145/122" 1068) -  ("sandal" "sRGB:170/141/111" 1067) -  ("sanddune" "sRGB:130/111/101" 1066) -  ("sanmarino" "sRGB:69/108/172" 1065) -  ("sanjuan" "sRGB:48/75/106" 1064) -  ("sanfelix" "sRGB:11/98/7" 1063) -  ("sambuca" "sRGB:58/32/16" 1062) -  ("saltpan" "sRGB:241/247/242" 1061) -  ("saltbox" "sRGB:104/94/110" 1060) -  ("salomie" "sRGB:254/219/141" 1059) -  ("salem" "sRGB:9/127/75" 1058) -  ("sail" "sRGB:184/224/249" 1057) -  ("sahara" "sRGB:183/162/20" 1056) -  ("sage" "sRGB:158/165/135" 1055) -  ("saffron" "sRGB:249/191/88" 1054) -  ("saddlebrown" "sRGB:88/52/1" 1053) -  ("saddle" "sRGB:76/48/36" 1052) -  ("rustynail" "sRGB:134/86/10" 1051) -  ("rusticred" "sRGB:72/4/4" 1050) -  ("russett" "sRGB:117/90/87" 1049) -  ("rumswizzle" "sRGB:249/248/228" 1048) -  ("rum" "sRGB:121/105/137" 1047) -  ("royalheath" "sRGB:171/52/114" 1046) -  ("rouge" "sRGB:162/59/108" 1045) -  ("roti" "sRGB:198/168/75" 1044) -  ("rosewood" "sRGB:101/0/11" 1043) -  ("rosewhite" "sRGB:255/246/245" 1042) -  ("roseofsharon" "sRGB:191/85/0" 1041) -  ("rosebudcherry" "sRGB:128/11/71" 1040) -  ("rosebud" "sRGB:251/178/163" 1039) -  ("rose" "sRGB:231/188/180" 1038) -  ("rope" "sRGB:142/77/30" 1037) -  ("roofterracotta" "sRGB:166/47/32" 1036) -  ("ronchi" "sRGB:236/197/78" 1035) -  ("romantic" "sRGB:255/210/183" 1034) -  ("romance" "sRGB:255/254/253" 1033) -  ("romancoffee" "sRGB:121/93/76" 1032) -  ("roman" "sRGB:222/99/96" 1031) -  ("rollingstone" "sRGB:116/125/131" 1030) -  ("rodeodust" "sRGB:201/178/155" 1029) -  ("rockspray" "sRGB:186/69/12" 1028) -  ("rocksalt" "sRGB:255/255/255" 1027) -  ("rockblue" "sRGB:158/177/205" 1026) -  ("rock" "sRGB:77/56/51" 1025) -  ("robinseggblue" "sRGB:189/200/179" 1024) -  ("robroy" "sRGB:234/198/116" 1023) -  ("riverbed" "sRGB:67/76/89" 1022) -  ("riptide" "sRGB:139/230/216" 1021) -  ("riogrande" "sRGB:187/208/9" 1020) -  ("richgold" "sRGB:168/83/7" 1019) -  ("riceflower" "sRGB:238/255/226" 1018) -  ("ricecake" "sRGB:255/254/240" 1017) -  ("ribbon" "sRGB:102/0/69" 1016) -  ("rhino" "sRGB:46/63/98" 1015) -  ("revolver" "sRGB:44/22/50" 1014) -  ("resolutionblue" "sRGB:0/35/135" 1013) -  ("renosand" "sRGB:168/101/21" 1012) -  ("remy" "sRGB:254/235/243" 1011) -  ("regentstblue" "sRGB:170/214/230" 1010) -  ("regentgrey" "sRGB:134/148/159" 1009) -  ("regalblue" "sRGB:1/63/106" 1008) -  ("reefgold" "sRGB:159/130/28" 1007) -  ("reef" "sRGB:201/255/162" 1006) -  ("redwood" "sRGB:93/30/15" 1005) -  ("redstage" "sRGB:208/95/4" 1004) -  ("redrobin" "sRGB:128/52/31" 1003) -  ("redoxide" "sRGB:110/9/2" 1002) -  ("reddevil" "sRGB:134/1/17" 1001) -  ("reddamask" "sRGB:218/106/65" 1000) -  ("redberry" "sRGB:142/0/0" 999) -  ("redbeech" "sRGB:123/56/1" 998) -  ("rebel" "sRGB:60/18/6" 997) -  ("raven" "sRGB:114/123/137" 996) -  ("rangoongreen" "sRGB:28/30/19" 995) -  ("rangitoto" "sRGB:46/50/34" 994) -  ("rajah" "sRGB:247/182/104" 993) -  ("rainee" "sRGB:185/200/172" 992) -  ("raincloud" "sRGB:123/124/148" 991) -  ("rainforest" "sRGB:119/129/32" 990) -  ("raffia" "sRGB:234/218/184" 989) -  ("racinggreen" "sRGB:12/25/17" 988) -  ("quincy" "sRGB:98/63/45" 987) -  ("quillgrey" "sRGB:214/214/209" 986) -  ("quicksand" "sRGB:189/151/142" 985) -  ("quarterspanishwhite" "sRGB:247/242/225" 984) -  ("quarterpearllusta" "sRGB:255/253/244" 983) -  ("putty" "sRGB:231/205/140" 982) -  ("punga" "sRGB:77/61/20" 981) -  ("punch" "sRGB:220/67/51" 980) -  ("pumpkin" "sRGB:177/97/11" 979) -  ("pumice" "sRGB:194/202/196" 978) -  ("puertorico" "sRGB:63/193/170" 977) -  ("pueblo" "sRGB:125/44/20" 976) -  ("prussianblue" "sRGB:0/49/83" 975) -  ("provincialpink" "sRGB:254/245/241" 974) -  ("promenade" "sRGB:252/255/231" 973) -  ("primrose" "sRGB:237/234/153" 972) -  ("prim" "sRGB:240/226/236" 971) -  ("prelude" "sRGB:208/192/229" 970) -  ("prairiesand" "sRGB:154/56/32" 969) -  ("powderblue" "sRGB:188/201/194" 968) -  ("pottersclay" "sRGB:140/87/56" 967) -  ("potpourri" "sRGB:245/231/226" 966) -  ("portica" "sRGB:249/230/99" 965) -  ("portage" "sRGB:139/159/238" 964) -  ("portafino" "sRGB:255/255/180" 963) -  ("portgore" "sRGB:37/31/79" 962) -  ("porsche" "sRGB:234/174/105" 961) -  ("porcelain" "sRGB:239/242/243" 960) -  ("pompadour" "sRGB:102/0/69" 959) -  ("poloblue" "sRGB:141/168/204" 958) -  ("polar" "sRGB:229/249/246" 957) -  ("pohutukawa" "sRGB:143/2/28" 956) -  ("plum" "sRGB:65/0/86" 955) -  ("planter" "sRGB:97/93/48" 954) -  ("plantation" "sRGB:39/80/75" 953) -  ("pizza" "sRGB:201/148/21" 952) -  ("pizazz" "sRGB:255/144/0" 951) -  ("pixiegreen" "sRGB:192/216/182" 950) -  ("pistachio" "sRGB:157/194/9" 949) -  ("pirategold" "sRGB:186/127/3" 948) -  ("pippin" "sRGB:255/225/223" 947) -  ("pipi" "sRGB:254/244/204" 946) -  ("piper" "sRGB:201/99/35" 945) -  ("pinkswan" "sRGB:190/181/183" 944) -  ("pinklady" "sRGB:255/241/216" 943) -  ("pinklace" "sRGB:255/221/244" 942) -  ("pinkflare" "sRGB:225/192/200" 941) -  ("pinetree" "sRGB:23/31/4" 940) -  ("pineglade" "sRGB:199/205/144" 939) -  ("pinecone" "sRGB:109/94/84" 938) -  ("pigeonpost" "sRGB:175/189/217" 937) -  ("pictonblue" "sRGB:69/177/232" 936) -  ("pickledbluewood" "sRGB:49/68/89" 935) -  ("pickledbean" "sRGB:110/72/38" 934) -  ("pickledaspen" "sRGB:63/76/58" 933) -  ("picasso" "sRGB:255/243/157" 932) -  ("pharlap" "sRGB:163/128/123" 931) -  ("pewter" "sRGB:150/168/161" 930) -  ("petiteorchid" "sRGB:219/150/144" 929) -  ("pesto" "sRGB:124/118/49" 928) -  ("perutan" "sRGB:127/58/2" 927) -  ("persimmon" "sRGB:255/107/83" 926) -  ("persianred" "sRGB:82/12/23" 925) -  ("persianplum" "sRGB:112/28/28" 924) -  ("periglacialblue" "sRGB:225/230/214" 923) -  ("perfume" "sRGB:208/190/248" 922) -  ("perano" "sRGB:169/190/242" 921) -  ("peppermint" "sRGB:227/245/225" 920) -  ("pelorous" "sRGB:62/171/191" 919) -  ("peat" "sRGB:113/107/86" 918) -  ("pearllusta" "sRGB:252/244/220" 917) -  ("pearlbush" "sRGB:232/224/213" 916) -  ("peanut" "sRGB:120/47/22" 915) -  ("peachschnapps" "sRGB:255/220/214" 914) -  ("peach" "sRGB:255/240/219" 913) -  ("peasoup" "sRGB:207/229/210" 912) -  ("pavlova" "sRGB:215/196/152" 911) -  ("paua" "sRGB:38/3/104" 910) -  ("pattensblue" "sRGB:222/245/255" 909) -  ("patina" "sRGB:99/154/143" 908) -  ("parsley" "sRGB:19/79/25" 907) -  ("pariswhite" "sRGB:202/220/212" 906) -  ("parism" "sRGB:38/5/106" 905) -  ("parisdaisy" "sRGB:255/244/110" 904) -  ("parchment" "sRGB:241/233/210" 903) -  ("paradiso" "sRGB:49/125/130" 902) -  ("paprika" "sRGB:141/2/38" 901) -  ("panda" "sRGB:66/57/33" 900) -  ("pancho" "sRGB:237/205/171" 899) -  ("panache" "sRGB:234/246/238" 898) -  ("pampas" "sRGB:244/242/238" 897) -  ("palmleaf" "sRGB:25/51/14" 896) -  ("palmgreen" "sRGB:9/35/15" 895) -  ("paleslate" "sRGB:195/191/193" 894) -  ("palesky" "sRGB:110/119/131" 893) -  ("palerose" "sRGB:255/225/242" 892) -  ("paleprim" "sRGB:253/254/184" 891) -  ("paleoyster" "sRGB:152/141/119" 890) -  ("paleleaf" "sRGB:192/211/185" 889) -  ("padua" "sRGB:173/230/196" 888) -  ("paco" "sRGB:65/31/16" 887) -  ("pacifika" "sRGB:119/129/32" 886) -  ("pablo" "sRGB:119/111/97" 885) -  ("paarl" "sRGB:166/85/41" 884) -  ("oysterpink" "sRGB:233/206/205" 883) -  ("oysterbay" "sRGB:218/250/255" 882) -  ("oxley" "sRGB:119/158/134" 881) -  ("oxfordblue" "sRGB:56/69/85" 880) -  ("outerspace" "sRGB:5/16/64" 879) -  ("ottoman" "sRGB:233/248/237" 878) -  ("oslogrey" "sRGB:135/141/145" 877) -  ("orinoco" "sRGB:243/251/212" 876) -  ("orientalpink" "sRGB:198/145/145" 875) -  ("orient" "sRGB:1/94/133" 874) -  ("oregon" "sRGB:155/71/3" 873) -  ("orchidwhite" "sRGB:255/253/243" 872) -  ("orangewhite" "sRGB:254/252/237" 871) -  ("orangeroughy" "sRGB:196/87/25" 870) -  ("oracle" "sRGB:55/116/117" 869) -  ("opium" "sRGB:142/111/112" 868) -  ("opal" "sRGB:169/198/194" 867) -  ("onion" "sRGB:47/39/14" 866) -  ("onahau" "sRGB:205/244/255" 865) -  ("olivetone" "sRGB:113/110/16" 864) -  ("olivehaze" "sRGB:139/132/112" 863) -  ("olivegreen" "sRGB:36/46/22" 862) -  ("oldcopper" "sRGB:114/74/47" 861) -  ("oldbrick" "sRGB:144/30/30" 860) -  ("oiledcedar" "sRGB:124/28/5" 859) -  ("oil" "sRGB:40/30/21" 858) -  ("offyellow" "sRGB:254/249/227" 857) -  ("offgreen" "sRGB:230/248/243" 856) -  ("oceangreen" "sRGB:65/170/120" 855) -  ("observatory" "sRGB:2/134/111" 854) -  ("oasis" "sRGB:254/239/206" 853) -  ("nutmegwoodfinish" "sRGB:104/54/0" 852) -  ("nutmeg" "sRGB:129/66/44" 851) -  ("nugget" "sRGB:197/153/34" 850) -  ("norway" "sRGB:168/189/159" 849) -  ("nordic" "sRGB:1/39/49" 848) -  ("nomad" "sRGB:186/177/162" 847) -  ("nobel" "sRGB:183/177/177" 846) -  ("nileblue" "sRGB:25/55/81" 845) -  ("nightclub" "sRGB:102/0/69" 844) -  ("nightshadz" "sRGB:170/55/90" 843) -  ("nightrider" "sRGB:31/18/15" 842) -  ("niagara" "sRGB:6/161/137" 841) -  ("newyorkpink" "sRGB:215/131/127" 840) -  ("neworleans" "sRGB:243/214/157" 839) -  ("newamber" "sRGB:123/56/1" 838) -  ("nevada" "sRGB:100/110/117" 837) -  ("neutralgreen" "sRGB:172/165/134" 836) -  ("nero" "sRGB:20/6/0" 835) -  ("neptune" "sRGB:124/183/187" 834) -  ("nepal" "sRGB:142/171/193" 833) -  ("negroni" "sRGB:255/226/197" 832) -  ("nebula" "sRGB:203/219/214" 831) -  ("natural" "sRGB:134/86/10" 830) -  ("narvik" "sRGB:237/249/241" 829) -  ("napa" "sRGB:172/164/148" 828) -  ("nandor" "sRGB:75/93/82" 827) -  ("mystic" "sRGB:226/235/237" 826) -  ("mysin" "sRGB:255/179/31" 825) -  ("mypink" "sRGB:214/145/136" 824) -  ("mustard" "sRGB:116/100/13" 823) -  ("mulledwine" "sRGB:78/69/98" 822) -  ("mulefawn" "sRGB:140/71/47" 821) -  ("mulberry" "sRGB:92/5/54" 820) -  ("muesli" "sRGB:170/139/91" 819) -  ("muddywaters" "sRGB:183/142/92" 818) -  ("mountainmist" "sRGB:149/147/150" 817) -  ("mosque" "sRGB:3/106/110" 816) -  ("mosaic" "sRGB:18/52/71" 815) -  ("mortar" "sRGB:80/67/81" 814) -  ("moroccobrown" "sRGB:68/29/0" 813) -  ("morningglory" "sRGB:158/222/224" 812) -  ("moonyellow" "sRGB:252/217/23" 811) -  ("moonraker" "sRGB:214/206/246" 810) -  ("moonmist" "sRGB:220/221/204" 809) -  ("moonglow" "sRGB:252/254/218" 808) -  ("moodyblue" "sRGB:127/118/211" 807) -  ("monza" "sRGB:199/3/30" 806) -  ("montecarlo" "sRGB:131/208/198" 805) -  ("montana" "sRGB:41/30/48" 804) -  ("monsoon" "sRGB:138/131/137" 803) -  ("mongoose" "sRGB:181/162/127" 802) -  ("mondo" "sRGB:74/60/48" 801) -  ("monarch" "sRGB:139/7/35" 800) -  ("monalisa" "sRGB:255/161/148" 799) -  ("mojo" "sRGB:192/71/55" 798) -  ("mocha" "sRGB:120/45/25" 797) -  ("moccaccino" "sRGB:110/29/20" 796) -  ("mobster" "sRGB:127/117/137" 795) -  ("mistgrey" "sRGB:196/196/188" 794) -  ("mischka" "sRGB:209/210/221" 793) -  ("mirage" "sRGB:22/25/40" 792) -  ("minttulip" "sRGB:196/244/235" 791) -  ("mintjulep" "sRGB:241/238/193" 790) -  ("minsk" "sRGB:63/48/127" 789) -  ("ming" "sRGB:54/116/125" 788) -  ("mineralgreen" "sRGB:63/93/83" 787) -  ("mineshaft" "sRGB:50/50/50" 786) -  ("mindaro" "sRGB:227/249/136" 785) -  ("mimosa" "sRGB:248/253/211" 784) -  ("millbrook" "sRGB:89/68/51" 783) -  ("milkwhite" "sRGB:246/240/230" 782) -  ("milkpunch" "sRGB:255/246/212" 781) -  ("milanored" "sRGB:184/17/4" 780) -  ("milan" "sRGB:250/255/164" 779) -  ("mikado" "sRGB:45/37/16" 778) -  ("midnightmoss" "sRGB:4/16/4" 777) -  ("midnightexpress" "sRGB:0/7/65" 776) -  ("midnight" "sRGB:1/22/53" 775) -  ("midgrey" "sRGB:95/95/110" 774) -  ("mexicanred" "sRGB:167/37/37" 773) -  ("meteorite" "sRGB:60/31/118" 772) -  ("meteor" "sRGB:208/125/18" 771) -  ("metalliccopper" "sRGB:113/41/29" 770) -  ("metallicbronze" "sRGB:73/55/27" 769) -  ("merlot" "sRGB:131/25/35" 768) -  ("merlin" "sRGB:65/60/55" 767) -  ("merino" "sRGB:246/240/230" 766) -  ("mercury" "sRGB:229/229/229" 765) -  ("meranti" "sRGB:93/30/15" 764) -  ("melrose" "sRGB:199/193/255" 763) -  ("melanzane" "sRGB:48/5/41" 762) -  ("melanie" "sRGB:228/194/213" 761) -  ("mckenzie" "sRGB:175/135/81" 760) -  ("maverick" "sRGB:216/194/213" 759) -  ("matterhorn" "sRGB:78/59/65" 758) -  ("matrix" "sRGB:176/93/84" 757) -  ("matisse" "sRGB:27/101/157" 756) -  ("mash" "sRGB:64/41/29" 755) -  ("masala" "sRGB:64/59/56" 754) -  ("marzipan" "sRGB:248/219/157" 753) -  ("martinique" "sRGB:54/48/80" 752) -  ("martini" "sRGB:175/160/158" 751) -  ("marshland" "sRGB:11/15/8" 750) -  ("maroon" "sRGB:66/3/3" 749) -  ("marlin" "sRGB:42/20/14" 748) -  ("mariner" "sRGB:40/106/205" 747) -  ("marigold" "sRGB:185/141/40" 746) -  ("mardigras" "sRGB:53/0/54" 745) -  ("manz" "sRGB:238/239/120" 744) -  ("mantle" "sRGB:139/156/144" 743) -  ("mantis" "sRGB:116/195/101" 742) -  ("manhattan" "sRGB:245/201/153" 741) -  ("mandyspink" "sRGB:242/195/178" 740) -  ("mandy" "sRGB:226/84/101" 739) -  ("mandalay" "sRGB:173/120/27" 738) -  ("mamba" "sRGB:142/129/144" 737) -  ("malta" "sRGB:189/178/161" 736) -  ("mallard" "sRGB:35/52/24" 735) -  ("malibu" "sRGB:125/200/247" 734) -  ("malachitegreen" "sRGB:136/141/101" 733) -  ("mako" "sRGB:68/73/84" 732) -  ("makara" "sRGB:137/125/109" 731) -  ("maize" "sRGB:245/213/160" 730) -  ("maire" "sRGB:19/10/6" 729) -  ("maitai" "sRGB:176/102/8" 728) -  ("mahogany" "sRGB:78/6/6" 727) -  ("magnolia" "sRGB:248/244/255" 726) -  ("madras" "sRGB:63/48/2" 725) -  ("madison" "sRGB:9/37/93" 724) -  ("madang" "sRGB:183/240/190" 723) -  ("mabel" "sRGB:217/247/255" 722) -  ("lynch" "sRGB:105/126/154" 721) -  ("luxorgold" "sRGB:167/136/44" 720) -  ("lusty" "sRGB:153/27/7" 719) -  ("lunargreen" "sRGB:60/73/58" 718) -  ("luckypoint" "sRGB:26/26/104" 717) -  ("lucky" "sRGB:175/159/28" 716) -  ("loulou" "sRGB:70/11/65" 715) -  ("lotus" "sRGB:134/60/60" 714) -  ("lonestar" "sRGB:109/1/1" 713) -  ("londonhue" "sRGB:190/166/195" 712) -  ("lola" "sRGB:223/207/219" 711) -  ("logan" "sRGB:170/169/205" 710) -  ("logcabin" "sRGB:36/42/29" 709) -  ("locust" "sRGB:168/175/142" 708) -  ("lochmara" "sRGB:0/126/199" 707) -  ("lochinvar" "sRGB:44/140/132" 706) -  ("loblolly" "sRGB:189/201/206" 705) -  ("loafer" "sRGB:238/244/222" 704) -  ("lividbrown" "sRGB:77/40/46" 703) -  ("lisbonbrown" "sRGB:66/57/33" 702) -  ("lipstick" "sRGB:171/5/99" 701) -  ("linkwater" "sRGB:217/228/245" 700) -  ("linen" "sRGB:230/228/212" 699) -  ("limerick" "sRGB:157/194/9" 698) -  ("limedspruce" "sRGB:57/72/81" 697) -  ("limedoak" "sRGB:172/138/86" 696) -  ("limedgum" "sRGB:66/57/33" 695) -  ("limedash" "sRGB:116/125/99" 694) -  ("limeade" "sRGB:111/157/2" 693) -  ("lime" "sRGB:191/201/33" 692) -  ("lima" "sRGB:118/189/23" 691) -  ("lilywhite" "sRGB:231/248/255" 690) -  ("lily" "sRGB:200/170/191" 689) -  ("lilacbush" "sRGB:152/116/211" 688) -  ("lightningyellow" "sRGB:252/192/30" 687) -  ("licorice" "sRGB:9/34/86" 686) -  ("lemongrass" "sRGB:155/158/143" 685) -  ("lemonginger" "sRGB:172/158/34" 684) -  ("lemon" "sRGB:244/216/28" 683) -  ("leather" "sRGB:150/112/89" 682) -  ("lavender" "sRGB:168/153/230" 681) -  ("laurel" "sRGB:116/147/120" 680) -  ("laser" "sRGB:200/181/104" 679) -  ("laspalmas" "sRGB:198/230/16" 678) -  ("larioja" "sRGB:179/193/16" 677) -  ("lapalma" "sRGB:54/135/22" 676) -  ("kumera" "sRGB:136/98/33" 675) -  ("kournikova" "sRGB:255/231/114" 674) -  ("koromiko" "sRGB:255/189/95" 673) -  ("korma" "sRGB:143/75/14" 672) -  ("kokoda" "sRGB:110/109/87" 671) -  ("kobi" "sRGB:231/159/196" 670) -  ("kingfisherdaisy" "sRGB:62/4/128" 669) -  ("kimberly" "sRGB:115/108/159" 668) -  ("killarney" "sRGB:58/106/71" 667) -  ("kilamanjaro" "sRGB:36/12/2" 666) -  ("kidnapper" "sRGB:225/234/212" 665) -  ("keppel" "sRGB:58/176/158" 664) -  ("kenyancopper" "sRGB:124/28/5" 663) -  ("kelp" "sRGB:69/73/54" 662) -  ("kashmirblue" "sRGB:80/112/150" 661) -  ("karry" "sRGB:255/234/212" 660) -  ("karaka" "sRGB:30/22/9" 659) -  ("kangaroo" "sRGB:198/200/189" 658) -  ("kaitokegreen" "sRGB:0/70/32" 657) -  ("kabul" "sRGB:94/72/62" 656) -  ("justright" "sRGB:236/205/185" 655) -  ("juniper" "sRGB:109/146/146" 654) -  ("junglemist" "sRGB:180/207/211" 653) -  ("junglegreen" "sRGB:40/30/21" 652) -  ("jumbo" "sRGB:124/123/130" 651) -  ("judgegrey" "sRGB:84/67/51" 650) -  ("jordyblue" "sRGB:138/185/241" 649) -  ("jonquil" "sRGB:238/255/154" 648) -  ("jon" "sRGB:59/31/31" 647) -  ("joanna" "sRGB:245/243/229" 646) -  ("jewel" "sRGB:18/107/64" 645) -  ("jetstream" "sRGB:181/210/206" 644) -  ("jellybean" "sRGB:41/123/154" 643) -  ("jazz" "sRGB:120/1/9" 642) -  ("java" "sRGB:31/194/194" 641) -  ("jarrah" "sRGB:52/21/21" 640) -  ("japonica" "sRGB:216/124/99" 639) -  ("japanesemaple" "sRGB:120/1/9" 638) -  ("japaneselaurel" "sRGB:10/105/6" 637) -  ("janna" "sRGB:244/235/211" 636) -  ("jambalaya" "sRGB:91/48/19" 635) -  ("jaguar" "sRGB:8/1/16" 634) -  ("jagger" "sRGB:53/14/87" 633) -  ("jaggedice" "sRGB:194/232/229" 632) -  ("jaffa" "sRGB:239/134/63" 631) -  ("jade" "sRGB:66/121/119" 630) -  ("jacksonspurple" "sRGB:32/32/141" 629) -  ("jackobean" "sRGB:46/25/5" 628) -  ("jacarta" "sRGB:58/42/106" 627) -  ("jacaranda" "sRGB:46/3/41" 626) -  ("islandspice" "sRGB:255/252/238" 625) -  ("ironstone" "sRGB:134/72/60" 624) -  ("ironsidegrey" "sRGB:103/102/98" 623) -  ("ironbark" "sRGB:65/31/16" 622) -  ("iron" "sRGB:212/215/217" 621) -  ("iroko" "sRGB:67/49/32" 620) -  ("irishcoffee" "sRGB:95/61/38" 619) -  ("indochine" "sRGB:194/107/3" 618) -  ("indiantan" "sRGB:77/30/1" 617) -  ("illusion" "sRGB:246/164/201" 616) -  ("iceberg" "sRGB:218/244/240" 615) -  ("icecold" "sRGB:177/244/231" 614) -  ("husk" "sRGB:183/164/88" 613) -  ("hurricane" "sRGB:135/124/123" 612) -  ("huntergreen" "sRGB:22/29/16" 611) -  ("hummingbird" "sRGB:207/249/243" 610) -  ("hottoddy" "sRGB:179/128/7" 609) -  ("hotpurple" "sRGB:72/6/86" 608) -  ("hotcurry" "sRGB:136/98/33" 607) -  ("hotchile" "sRGB:139/7/35" 606) -  ("horsesneck" "sRGB:96/73/19" 605) -  ("horizon" "sRGB:90/135/160" 604) -  ("hopbush" "sRGB:208/109/161" 603) -  ("honeysuckle" "sRGB:237/252/132" 602) -  ("honeyflower" "sRGB:79/28/112" 601) -  ("holly" "sRGB:1/29/19" 600) -  ("hoki" "sRGB:101/134/159" 599) -  ("hokeypokey" "sRGB:200/165/40" 598) -  ("hitpink" "sRGB:255/171/129" 597) -  ("hitgrey" "sRGB:161/173/181" 596) -  ("hippiepink" "sRGB:174/69/96" 595) -  ("hippiegreen" "sRGB:83/130/75" 594) -  ("hippieblue" "sRGB:88/154/175" 593) -  ("hintofyellow" "sRGB:250/253/228" 592) -  ("hintofred" "sRGB:249/249/249" 591) -  ("hintofgrey" "sRGB:252/255/249" 590) -  ("hintofgreen" "sRGB:230/255/233" 589) -  ("himalaya" "sRGB:106/93/27" 588) -  ("hillary" "sRGB:172/165/134" 587) -  ("highland" "sRGB:111/142/99" 586) -  ("highball" "sRGB:144/141/57" 585) -  ("hibiscus" "sRGB:182/49/108" 584) -  ("hemp" "sRGB:144/120/116" 583) -  ("hemlock" "sRGB:94/93/59" 582) -  ("heavymetal" "sRGB:43/50/40" 581) -  ("heatheredgrey" "sRGB:182/176/149" 580) -  ("heather" "sRGB:183/195/208" 579) -  ("heath" "sRGB:84/16/18" 578) -  ("hawkesblue" "sRGB:212/226/252" 577) -  ("hawaiiantan" "sRGB:157/86/22" 576) -  ("havelockblue" "sRGB:85/144/217" 575) -  ("havana" "sRGB:52/21/21" 574) -  ("harvestgold" "sRGB:224/185/116" 573) -  ("harp" "sRGB:230/242/234" 572) -  ("hampton" "sRGB:229/216/175" 571) -  ("halfspanishwhite" "sRGB:254/244/219" 570) -  ("halfpearllusta" "sRGB:255/252/234" 569) -  ("halfdutchwhite" "sRGB:254/247/222" 568) -  ("halfcolonialwhite" "sRGB:253/246/211" 567) -  ("halfbaked" "sRGB:133/196/204" 566) -  ("halfandhalf" "sRGB:255/254/225" 565) -  ("haiti" "sRGB:27/16/53" 564) -  ("hairyheath" "sRGB:107/42/20" 563) -  ("hacienda" "sRGB:152/129/27" 562) -  ("gurkha" "sRGB:154/149/119" 561) -  ("gunsmoke" "sRGB:130/134/133" 560) -  ("gunmetal" "sRGB:2/13/21" 559) -  ("gunpowder" "sRGB:65/66/87" 558) -  ("gumbo" "sRGB:124/161/166" 557) -  ("gumleaf" "sRGB:182/211/191" 556) -  ("gullgrey" "sRGB:157/172/183" 555) -  ("gulfstream" "sRGB:128/179/174" 554) -  ("gulfblue" "sRGB:5/22/87" 553) -  ("guardsmanred" "sRGB:186/1/1" 552) -  ("greysuit" "sRGB:193/190/205" 551) -  ("greyolive" "sRGB:169/164/145" 550) -  ("greynurse" "sRGB:231/236/230" 549) -  ("greynickel" "sRGB:195/195/189" 548) -  ("greygreen" "sRGB:69/73/54" 547) -  ("greychateau" "sRGB:162/170/179" 546) -  ("grenadier" "sRGB:213/70/0" 545) -  ("greenstone" "sRGB:0/62/64" 544) -  ("greenwhite" "sRGB:232/235/224" 543) -  ("greenwaterloo" "sRGB:16/20/5" 542) -  ("greenvogue" "sRGB:3/43/82" 541) -  ("greenspring" "sRGB:184/193/177" 540) -  ("greensmoke" "sRGB:164/175/110" 539) -  ("greenpea" "sRGB:29/97/66" 538) -  ("greenmist" "sRGB:203/211/176" 537) -  ("greenleaf" "sRGB:67/106/13" 536) -  ("greenkelp" "sRGB:37/49/28" 535) -  ("greenhouse" "sRGB:36/80/15" 534) -  ("gravel" "sRGB:74/68/75" 533) -  ("grasshopper" "sRGB:124/118/49" 532) -  ("graphite" "sRGB:37/22/7" 531) -  ("grape" "sRGB:56/26/81" 530) -  ("grannysmith" "sRGB:132/160/160" 529) -  ("grannyapple" "sRGB:213/246/227" 528) -  ("granitegreen" "sRGB:141/137/116" 527) -  ("grandis" "sRGB:255/211/140" 526) -  ("grainbrown" "sRGB:228/213/183" 525) -  ("governorbay" "sRGB:47/60/179" 524) -  ("gothic" "sRGB:109/146/161" 523) -  ("gossip" "sRGB:210/248/176" 522) -  ("gossamer" "sRGB:6/155/129" 521) -  ("gorse" "sRGB:255/241/79" 520) -  ("gordonsgreen" "sRGB:11/17/7" 519) -  ("gondola" "sRGB:38/20/20" 518) -  ("goldentainoi" "sRGB:255/204/92" 517) -  ("goldensand" "sRGB:240/219/125" 516) -  ("goldenglow" "sRGB:253/226/149" 515) -  ("goldenfizz" "sRGB:245/251/61" 514) -  ("goldendream" "sRGB:240/213/45" 513) -  ("goldenbell" "sRGB:226/137/19" 512) -  ("goldtips" "sRGB:222/186/19" 511) -  ("golddrop" "sRGB:241/130/0" 510) -  ("goblin" "sRGB:61/125/82" 509) -  ("goben" "sRGB:114/109/78" 508) -  ("gladegreen" "sRGB:97/132/95" 507) -  ("glacier" "sRGB:128/179/196" 506) -  ("givry" "sRGB:248/228/191" 505) -  ("ginfizz" "sRGB:255/249/226" 504) -  ("gin" "sRGB:232/242/235" 503) -  ("gimblet" "sRGB:184/181/106" 502) -  ("gigas" "sRGB:82/60/148" 501) -  ("ghost" "sRGB:199/201/213" 500) -  ("geyser" "sRGB:212/223/226" 499) -  ("geraldine" "sRGB:251/137/137" 498) -  ("genoa" "sRGB:21/115/107" 497) -  ("geebung" "sRGB:209/143/27" 496) -  ("galliano" "sRGB:220/178/12" 495) -  ("gallery" "sRGB:239/239/239" 494) -  ("gablegreen" "sRGB:22/53/49" 493) -  ("fuscousgrey" "sRGB:84/83/77" 492) -  ("fungreen" "sRGB:1/109/57" 491) -  ("funblue" "sRGB:25/89/168" 490) -  ("fuelyellow" "sRGB:236/169/39" 489) -  ("fuego" "sRGB:190/222/13" 488) -  ("fuchsia" "sRGB:122/88/193" 487) -  ("fruitsalad" "sRGB:79/157/93" 486) -  ("frostee" "sRGB:228/246/231" 485) -  ("frostedmint" "sRGB:219/255/248" 484) -  ("frost" "sRGB:237/245/221" 483) -  ("froly" "sRGB:245/117/132" 482) -  ("fringyflower" "sRGB:177/226/193" 481) -  ("friargrey" "sRGB:128/126/121" 480) -  ("frenchpass" "sRGB:189/237/253" 479) -  ("frenchlilac" "sRGB:236/199/238" 478) -  ("frenchgrey" "sRGB:189/189/198" 477) -  ("frangipani" "sRGB:255/222/179" 476) -  ("fountainblue" "sRGB:86/180/190" 475) -  ("forgetmenot" "sRGB:255/241/238" 474) -  ("forestgreen" "sRGB:24/45/9" 473) -  ("foggygrey" "sRGB:203/202/182" 472) -  ("fog" "sRGB:215/208/255" 471) -  ("foam" "sRGB:216/252/250" 470) -  ("flirt" "sRGB:162/0/109" 469) -  ("flint" "sRGB:111/106/97" 468) -  ("flax" "sRGB:123/130/101" 467) -  ("flamingo" "sRGB:242/85/42" 466) -  ("flamenco" "sRGB:255/125/7" 465) -  ("flamered" "sRGB:199/3/30" 464) -  ("flamepea" "sRGB:218/91/56" 463) -  ("firefly" "sRGB:14/42/48" 462) -  ("firebush" "sRGB:232/153/40" 461) -  ("fire" "sRGB:170/66/3" 460) -  ("fiord" "sRGB:64/81/105" 459) -  ("finn" "sRGB:105/45/84" 458) -  ("finlandia" "sRGB:85/109/86" 457) -  ("finch" "sRGB:98/102/73" 456) -  ("fijigreen" "sRGB:101/114/32" 455) -  ("fieryorange" "sRGB:179/82/19" 454) -  ("feta" "sRGB:240/252/234" 453) -  ("festival" "sRGB:251/233/108" 452) -  ("ferra" "sRGB:112/79/80" 451) -  ("fernfrond" "sRGB:101/114/32" 450) -  ("fern" "sRGB:10/72/13" 449) -  ("feijoa" "sRGB:159/221/140" 448) -  ("fedora" "sRGB:121/106/120" 447) -  ("fantasy" "sRGB:250/243/240" 446) -  ("falcon" "sRGB:127/98/109" 445) -  ("fairpink" "sRGB:255/239/236" 444) -  ("everglade" "sRGB:28/64/46" 443) -  ("eveningsea" "sRGB:2/78/70" 442) -  ("eunry" "sRGB:207/163/157" 441) -  ("eucalyptus" "sRGB:39/138/91" 440) -  ("eternity" "sRGB:33/26/14" 439) -  ("espresso" "sRGB:97/39/24" 438) -  ("equator" "sRGB:225/188/100" 437) -  ("envy" "sRGB:139/166/144" 436) -  ("englishwalnut" "sRGB:62/43/35" 435) -  ("englishholly" "sRGB:2/45/21" 434) -  ("energyyellow" "sRGB:248/221/92" 433) -  ("endeavour" "sRGB:0/86/167" 432) -  ("empress" "sRGB:129/115/119" 431) -  ("emperor" "sRGB:81/70/73" 430) -  ("eminence" "sRGB:108/48/130" 429) -  ("embers" "sRGB:160/39/18" 428) -  ("elm" "sRGB:28/124/125" 427) -  ("elfgreen" "sRGB:8/131/112" 426) -  ("elephant" "sRGB:18/52/71" 425) -  ("elsalva" "sRGB:143/62/51" 424) -  ("elpaso" "sRGB:30/23/8" 423) -  ("eggwhite" "sRGB:255/239/193" 422) -  ("eggsour" "sRGB:255/244/221" 421) -  ("edward" "sRGB:162/174/171" 420) -  ("edgewater" "sRGB:200/227/215" 419) -  ("eden" "sRGB:16/88/82" 418) -  ("ecstasy" "sRGB:250/120/20" 417) -  ("ecruwhite" "sRGB:245/243/229" 416) -  ("eclipse" "sRGB:49/28/23" 415) -  ("echoblue" "sRGB:175/189/217" 414) -  ("ebonyclay" "sRGB:38/40/59" 413) -  ("ebony" "sRGB:12/11/29" 412) -  ("ebb" "sRGB:233/227/227" 411) -  ("easternblue" "sRGB:30/154/176" 410) -  ("eastside" "sRGB:172/145/206" 409) -  ("eastbay" "sRGB:65/76/125" 408) -  ("earlydawn" "sRGB:255/249/230" 407) -  ("earlsgreen" "sRGB:201/185/59" 406) -  ("eagle" "sRGB:182/186/164" 405) -  ("dutchwhite" "sRGB:255/248/209" 404) -  ("dustygrey" "sRGB:168/152/155" 403) -  ("duststorm" "sRGB:229/204/201" 402) -  ("dune" "sRGB:56/53/51" 401) -  ("drover" "sRGB:253/247/173" 400) -  ("driftwood" "sRGB:175/135/81" 399) -  ("downy" "sRGB:111/208/197" 398) -  ("downriver" "sRGB:9/34/86" 397) -  ("dovegrey" "sRGB:109/108/108" 396) -  ("doublespanishwhite" "sRGB:230/215/185" 395) -  ("doublepearllusta" "sRGB:252/244/208" 394) -  ("doublecolonialwhite" "sRGB:238/227/173" 393) -  ("dorado" "sRGB:107/87/85" 392) -  ("donkeybrown" "sRGB:166/146/121" 391) -  ("donjuan" "sRGB:93/76/81" 390) -  ("domino" "sRGB:142/119/94" 389) -  ("dolphin" "sRGB:100/96/119" 388) -  ("dolly" "sRGB:249/255/139" 387) -  ("dixie" "sRGB:226/148/24" 386) -  ("disco" "sRGB:135/21/80" 385) -  ("dingley" "sRGB:93/119/71" 384) -  ("diesel" "sRGB:19/0/0" 383) -  ("diserria" "sRGB:219/153/94" 382) -  ("dew" "sRGB:234/255/254" 381) -  ("desertstorm" "sRGB:248/248/247" 380) -  ("desert" "sRGB:174/96/32" 379) -  ("derby" "sRGB:255/238/216" 378) -  ("deluge" "sRGB:117/99/168" 377) -  ("delta" "sRGB:164/164/157" 376) -  ("dell" "sRGB:57/100/19" 375) -  ("delrio" "sRGB:176/154/149" 374) -  ("deepteal" "sRGB:0/53/50" 373) -  ("deepsea" "sRGB:1/130/107" 372) -  ("deepoak" "sRGB:65/32/16" 371) -  ("deepkoamaru" "sRGB:27/18/123" 370) -  ("deepfir" "sRGB:0/41/0" 369) -  ("deepcove" "sRGB:5/16/64" 368) -  ("deepbronze" "sRGB:74/48/4" 367) -  ("deepblush" "sRGB:228/118/152" 366) -  ("deco" "sRGB:210/218/151" 365) -  ("deyork" "sRGB:122/196/136" 364) -  ("dawnpink" "sRGB:243/233/229" 363) -  ("dawn" "sRGB:166/162/154" 362) -  ("darktan" "sRGB:102/16/16" 361) -  ("darkslate" "sRGB:57/72/81" 360) -  ("darkrum" "sRGB:65/32/16" 359) -  ("darkrimu" "sRGB:95/61/38" 358) -  ("darkoak" "sRGB:97/39/24" 357) -  ("darkebony" "sRGB:60/32/5" 356) -  ("danube" "sRGB:96/147/209" 355) -  ("dallas" "sRGB:110/75/38" 354) -  ("daisybush" "sRGB:79/35/152" 353) -  ("dairycream" "sRGB:249/228/188" 352) -  ("daintree" "sRGB:1/39/49" 351) -  ("cyprus" "sRGB:0/62/64" 350) -  ("cuttysark" "sRGB:80/118/114" 349) -  ("curiousblue" "sRGB:37/150/209" 348) -  ("cupid" "sRGB:251/190/218" 347) -  ("cumulus" "sRGB:253/255/213" 346) -  ("cumin" "sRGB:146/67/33" 345) -  ("cubantan" "sRGB:42/20/14" 344) -  ("crusta" "sRGB:253/123/51" 343) -  ("crusoe" "sRGB:0/72/22" 342) -  ("cruise" "sRGB:181/236/223" 341) -  ("crowshead" "sRGB:28/18/8" 340) -  ("crownofthorns" "sRGB:119/31/31" 339) -  ("crocodile" "sRGB:115/109/88" 338) -  ("crete" "sRGB:115/120/41" 337) -  ("creole" "sRGB:30/15/4" 336) -  ("cremedebanane" "sRGB:255/252/153" 335) -  ("creamcan" "sRGB:245/200/92" 334) -  ("creambrulee" "sRGB:255/229/160" 333) -  ("craterbrown" "sRGB:70/36/37" 332) -  ("cranberry" "sRGB:182/49/108" 331) -  ("crail" "sRGB:185/81/64" 330) -  ("crabapple" "sRGB:160/39/18" 329) -  ("cowboy" "sRGB:77/40/45" 328) -  ("covegrey" "sRGB:5/22/87" 327) -  ("countygreen" "sRGB:1/55/26" 326) -  ("cottonseed" "sRGB:194/189/182" 325) -  ("costadelsol" "sRGB:97/93/48" 324) -  ("cosmos" "sRGB:255/216/217" 323) -  ("cosmic" "sRGB:118/57/93" 322) -  ("corvette" "sRGB:250/211/162" 321) -  ("cornflower" "sRGB:255/176/172" 320) -  ("cornharvest" "sRGB:139/107/11" 319) -  ("cornfield" "sRGB:248/250/205" 318) -  ("corn" "sRGB:231/191/5" 317) -  ("cork" "sRGB:64/41/29" 316) -  ("coriander" "sRGB:196/208/176" 315) -  ("corduroy" "sRGB:96/110/104" 314) -  ("coraltree" "sRGB:168/107/107" 313) -  ("coralcandy" "sRGB:255/220/214" 312) -  ("coral" "sRGB:199/188/162" 311) -  ("copperrust" "sRGB:148/71/71" 310) -  ("coppercanyon" "sRGB:126/58/21" 309) -  ("contessa" "sRGB:198/114/107" 308) -  ("conifer" "sRGB:172/221/77" 307) -  ("congobrown" "sRGB:89/55/55" 306) -  ("confetti" "sRGB:233/215/90" 305) -  ("concrete" "sRGB:242/242/242" 304) -  ("concord" "sRGB:124/123/122" 303) -  ("conch" "sRGB:201/217/210" 302) -  ("como" "sRGB:81/124/102" 301) -  ("comet" "sRGB:92/93/117" 300) -  ("colonialwhite" "sRGB:255/237/188" 299) -  ("coldturkey" "sRGB:206/186/186" 298) -  ("coldpurple" "sRGB:171/160/217" 297) -  ("cola" "sRGB:63/37/0" 296) -  ("cognac" "sRGB:159/56/29" 295) -  ("coffeebean" "sRGB:42/20/14" 294) -  ("coffee" "sRGB:112/101/85" 293) -  ("codgrey" "sRGB:11/11/11" 292) -  ("coconutcream" "sRGB:248/247/220" 291) -  ("cocoabrown" "sRGB:48/31/30" 290) -  ("cocoabean" "sRGB:72/28/28" 289) -  ("cobalt" "sRGB:6/42/120" 288) -  ("clover" "sRGB:56/73/16" 287) -  ("cloudy" "sRGB:172/165/159" 286) -  ("cloudburst" "sRGB:32/46/84" 285) -  ("cloud" "sRGB:199/196/191" 284) -  ("clinker" "sRGB:55/29/9" 283) -  ("clementine" "sRGB:233/110/0" 282) -  ("clearday" "sRGB:233/255/253" 281) -  ("claycreek" "sRGB:138/131/96" 280) -  ("classicrose" "sRGB:251/204/231" 279) -  ("claret" "sRGB:127/23/52" 278) -  ("clamshell" "sRGB:212/182/175" 277) -  ("clairvoyant" "sRGB:72/6/86" 276) -  ("citrus" "sRGB:161/197/10" 275) -  ("citron" "sRGB:158/169/31" 274) -  ("citrinewhite" "sRGB:250/247/214" 273) -  ("cioccolato" "sRGB:85/40/12" 272) -  ("cinnamon" "sRGB:123/63/0" 271) -  ("cinderella" "sRGB:253/225/220" 270) -  ("cinder" "sRGB:14/14/24" 269) -  ("cigar" "sRGB:119/63/26" 268) -  ("chromewhite" "sRGB:232/241/212" 267) -  ("christine" "sRGB:231/115/10" 266) -  ("christi" "sRGB:103/167/18" 265) -  ("christalle" "sRGB:51/3/107" 264) -  ("chocolate" "sRGB:55/2/2" 263) -  ("chinook" "sRGB:168/227/189" 262) -  ("chino" "sRGB:206/199/167" 261) -  ("chinaivory" "sRGB:252/255/231" 260) -  ("chileanheath" "sRGB:255/253/230" 259) -  ("chileanfire" "sRGB:247/119/3" 258) -  ("chiffon" "sRGB:241/255/200" 257) -  ("chicago" "sRGB:93/92/88" 256) -  ("chetwodeblue" "sRGB:133/129/217" 255) -  ("cherub" "sRGB:248/217/233" 254) -  ("cherrywood" "sRGB:101/26/20" 253) -  ("cherrypie" "sRGB:42/3/89" 252) -  ("cherokee" "sRGB:252/218/152" 251) -  ("chenin" "sRGB:223/205/111" 250) -  ("chelseagem" "sRGB:158/83/2" 249) -  ("chelseacucumber" "sRGB:131/170/93" 248) -  ("chathamsblue" "sRGB:23/85/121" 247) -  ("chatelle" "sRGB:189/179/199" 246) -  ("chateaugreen" "sRGB:64/168/96" 245) -  ("charm" "sRGB:212/116/148" 244) -  ("charlotte" "sRGB:186/238/249" 243) -  ("chardonnay" "sRGB:255/205/140" 242) -  ("chardon" "sRGB:255/243/241" 241) -  ("charade" "sRGB:41/41/55" 240) -  ("chantilly" "sRGB:248/195/223" 239) -  ("champagne" "sRGB:250/236/204" 238) -  ("chamois" "sRGB:237/220/177" 237) -  ("chambray" "sRGB:53/78/140" 236) -  ("chalky" "sRGB:238/215/148" 235) -  ("chaletgreen" "sRGB:81/110/61" 234) -  ("chablis" "sRGB:255/244/243" 233) -  ("ceramic" "sRGB:252/255/249" 232) -  ("cement" "sRGB:141/118/98" 231) -  ("celtic" "sRGB:22/50/34" 230) -  ("cello" "sRGB:30/56/91" 229) -  ("celeste" "sRGB:209/210/202" 228) -  ("celery" "sRGB:184/194/93" 227) -  ("cedarwoodfinish" "sRGB:113/26/0" 226) -  ("cedar" "sRGB:62/28/20" 225) -  ("cesoir" "sRGB:151/113/181" 224) -  ("cavernpink" "sRGB:227/190/190" 223) -  ("catskillwhite" "sRGB:238/246/247" 222) -  ("catalinablue" "sRGB:6/42/120" 221) -  ("castro" "sRGB:82/0/31" 220) -  ("casper" "sRGB:173/190/209" 219) -  ("cashmere" "sRGB:230/190/165" 218) -  ("cascade" "sRGB:139/169/165" 217) -  ("casal" "sRGB:47/97/104" 216) -  ("casablanca" "sRGB:248/184/83" 215) -  ("carouselpink" "sRGB:249/224/237" 214) -  ("carnabytan" "sRGB:92/46/1" 213) -  ("carla" "sRGB:243/255/216" 212) -  ("carissma" "sRGB:234/136/168" 211) -  ("careyspink" "sRGB:210/158/170" 210) -  ("cardinal" "sRGB:140/5/94" 209) -  ("cardingreen" "sRGB:1/54/28" 208) -  ("cararra" "sRGB:238/238/232" 207) -  ("caramel" "sRGB:255/221/175" 206) -  ("capri" "sRGB:6/42/120" 205) -  ("caper" "sRGB:220/237/180" 204) -  ("capepalliser" "sRGB:162/102/69" 203) -  ("capehoney" "sRGB:254/229/172" 202) -  ("capecod" "sRGB:60/68/67" 201) -  ("canvas" "sRGB:168/165/137" 200) -  ("cannonpink" "sRGB:137/67/103" 199) -  ("cannonblack" "sRGB:37/23/6" 198) -  ("candlelight" "sRGB:252/217/23" 197) -  ("canary" "sRGB:243/251/98" 196) -  ("cancan" "sRGB:213/145/164" 195) -  ("camouflage" "sRGB:60/57/16" 194) -  ("cameo" "sRGB:217/185/155" 193) -  ("camelot" "sRGB:137/52/86" 192) -  ("camarone" "sRGB:0/88/26" 191) -  ("calypso" "sRGB:49/114/141" 190) -  ("california" "sRGB:254/157/4" 189) -  ("calico" "sRGB:224/192/149" 188) -  ("caferoyale" "sRGB:111/68/12" 187) -  ("cadillac" "sRGB:176/76/106" 186) -  ("cactus" "sRGB:88/113/86" 185) -  ("cabbagepont" "sRGB:63/76/58" 184) -  ("cabaret" "sRGB:217/73/114" 183) -  ("cabsav" "sRGB:77/10/24" 182) -  ("butterywhite" "sRGB:255/252/234" 181) -  ("buttermilk" "sRGB:255/241/181" 180) -  ("butterflybush" "sRGB:98/78/154" 179) -  ("butteredrum" "sRGB:161/117/13" 178) -  ("buttercup" "sRGB:243/173/22" 177) -  ("bush" "sRGB:13/46/28" 176) -  ("burntcrimson" "sRGB:101/0/11" 175) -  ("burningsand" "sRGB:217/147/118" 174) -  ("burnham" "sRGB:0/46/32" 173) -  ("burgundy" "sRGB:119/15/5" 172) -  ("bunting" "sRGB:21/31/76" 171) -  ("bunker" "sRGB:13/17/23" 170) -  ("bullshot" "sRGB:134/77/30" 169) -  ("bulgarianrose" "sRGB:72/6/7" 168) -  ("buddhagold" "sRGB:193/160/4" 167) -  ("bud" "sRGB:168/174/156" 166) -  ("buccaneer" "sRGB:98/47/48" 165) -  ("bubbles" "sRGB:231/254/255" 164) -  ("brownpod" "sRGB:64/24/1" 163) -  ("brownderby" "sRGB:73/38/21" 162) -  ("brownbramble" "sRGB:89/40/4" 161) -  ("broom" "sRGB:255/236/19" 160) -  ("bronzetone" "sRGB:77/64/15" 159) -  ("bronzeolive" "sRGB:78/66/12" 158) -  ("bronze" "sRGB:63/33/9" 157) -  ("bronco" "sRGB:171/161/150" 156) -  ("brightsun" "sRGB:254/211/60" 155) -  ("brightred" "sRGB:177/0/0" 154) -  ("brightgrey" "sRGB:60/65/81" 153) -  ("bridesmaid" "sRGB:254/240/236" 152) -  ("bridalheath" "sRGB:255/250/244" 151) -  ("breakerbay" "sRGB:93/161/159" 150) -  ("brazil" "sRGB:136/98/33" 149) -  ("brandyrose" "sRGB:187/137/131" 148) -  ("brandypunch" "sRGB:205/132/41" 147) -  ("brandy" "sRGB:222/193/150" 146) -  ("bracken" "sRGB:74/42/4" 145) -  ("bourbon" "sRGB:186/111/30" 144) -  ("bouquet" "sRGB:174/128/158" 143) -  ("boulder" "sRGB:122/122/122" 142) -  ("bottlegreen" "sRGB:9/54/36" 141) -  ("botticelli" "sRGB:199/221/229" 140) -  ("bostonblue" "sRGB:59/145/180" 139) -  ("bossanova" "sRGB:78/42/90" 138) -  ("bordeaux" "sRGB:92/1/32" 137) -  ("bone" "sRGB:228/209/192" 136) -  ("bondiblue" "sRGB:2/71/142" 135) -  ("bonjour" "sRGB:229/224/225" 134) -  ("bombay" "sRGB:175/177/184" 133) -  ("bokaragrey" "sRGB:28/18/8" 132) -  ("blush" "sRGB:180/70/104" 131) -  ("blumine" "sRGB:24/88/122" 130) -  ("bluezodiac" "sRGB:19/38/77" 129) -  ("bluewhale" "sRGB:4/46/76" 128) -  ("bluestone" "sRGB:1/97/98" 127) -  ("bluesmoke" "sRGB:116/136/129" 126) -  ("blueromance" "sRGB:210/246/222" 125) -  ("bluemarguerite" "sRGB:118/102/198" 124) -  ("bluelagoon" "sRGB:1/121/135" 123) -  ("bluehaze" "sRGB:191/190/216" 122) -  ("bluegem" "sRGB:44/14/140" 121) -  ("bluedianne" "sRGB:32/72/82" 120) -  ("bluediamond" "sRGB:56/4/116" 119) -  ("bluechill" "sRGB:12/137/144" 118) -  ("bluecharcoal" "sRGB:1/13/26" 117) -  ("bluechalk" "sRGB:241/233/255" 116) -  ("bluebell" "sRGB:34/8/120" 115) -  ("bluebayoux" "sRGB:73/102/121" 114) -  ("bluebark" "sRGB:4/19/34" 113) -  ("blossom" "sRGB:220/180/188" 112) -  ("bleachedcedar" "sRGB:44/33/51" 111) -  ("bleachwhite" "sRGB:254/243/216" 110) -  ("blanc" "sRGB:245/233/211" 109) -  ("blackwood" "sRGB:38/17/5" 108) -  ("blackcurrant" "sRGB:50/41/58" 107) -  ("blackberry" "sRGB:77/1/53" 106) -  ("blackwhite" "sRGB:255/254/246" 105) -  ("blacksqueeze" "sRGB:242/250/250" 104) -  ("blackrussian" "sRGB:10/0/28" 103) -  ("blackrose" "sRGB:103/3/45" 102) -  ("blackrock" "sRGB:13/3/50" 101) -  ("blackpepper" "sRGB:14/14/24" 100) -  ("blackpearl" "sRGB:4/19/34" 99) -  ("blackmarlin" "sRGB:62/44/28" 98) -  ("blackmagic" "sRGB:37/23/6" 97) -  ("blackhaze" "sRGB:246/247/247" 96) -  ("blackforest" "sRGB:11/19/4" 95) -  ("blackbean" "sRGB:8/25/16" 94) -  ("bizarre" "sRGB:238/222/218" 93) -  ("bitterlemon" "sRGB:202/224/13" 92) -  ("bitter" "sRGB:134/137/116" 91) -  ("bisonhide" "sRGB:193/183/164" 90) -  ("bismark" "sRGB:73/113/131" 89) -  ("biscay" "sRGB:27/49/98" 88) -  ("birdflower" "sRGB:212/205/22" 87) -  ("birch" "sRGB:55/48/33" 86) -  ("bilobaflower" "sRGB:178/161/234" 85) -  ("bilbao" "sRGB:50/124/20" 84) -  ("bigstone" "sRGB:22/42/64" 83) -  ("bianca" "sRGB:252/251/243" 82) -  ("berylgreen" "sRGB:222/229/192" 81) -  ("bermudagrey" "sRGB:107/139/162" 80) -  ("bermuda" "sRGB:125/216/198" 79) -  ("beeswax" "sRGB:254/242/199" 78) -  ("beautybush" "sRGB:238/193/190" 77) -  ("bean" "sRGB:61/12/2" 76) -  ("bazaar" "sRGB:152/119/123" 75) -  ("bayofmany" "sRGB:39/58/129" 74) -  ("bayleaf" "sRGB:125/169/141" 73) -  ("battleshipgrey" "sRGB:130/143/114" 72) -  ("bastille" "sRGB:41/33/48" 71) -  ("barossa" "sRGB:68/1/45" 70) -  ("barleywhite" "sRGB:255/244/206" 69) -  ("barleycorn" "sRGB:166/139/91" 68) -  ("barberry" "sRGB:222/215/23" 67) -  ("banjul" "sRGB:19/10/6" 66) -  ("bandicoot" "sRGB:133/132/112" 65) -  ("bamboo" "sRGB:218/99/4" 64) -  ("balticsea" "sRGB:42/38/48" 63) -  ("balihai" "sRGB:133/159/175" 62) -  ("bajawhite" "sRGB:255/248/209" 61) -  ("bahia" "sRGB:165/203/12" 60) -  ("bahamablue" "sRGB:2/99/149" 59) -  ("azure" "sRGB:49/91/161" 58) -  ("aztec" "sRGB:13/28/25" 57) -  ("azalea" "sRGB:247/200/218" 56) -  ("axolotl" "sRGB:78/102/73" 55) -  ("avocado" "sRGB:136/141/101" 54) -  ("australianmint" "sRGB:245/255/190" 53) -  ("aubergine" "sRGB:59/9/16" 52) -  ("auchico" "sRGB:151/96/93" 51) -  ("atomic" "sRGB:49/68/89" 50) -  ("atoll" "sRGB:10/111/117" 49) -  ("atlantis" "sRGB:151/205/45" 48) -  ("athsspecial" "sRGB:236/235/206" 47) -  ("athensgrey" "sRGB:238/240/243" 46) -  ("astronautblue" "sRGB:1/62/98" 45) -  ("astronaut" "sRGB:40/58/119" 44) -  ("astral" "sRGB:50/125/160" 43) -  ("astra" "sRGB:250/234/185" 42) -  ("asphalt" "sRGB:19/10/6" 41) -  ("ashbrown" "sRGB:46/25/5" 40) -  ("ash" "sRGB:198/195/181" 39) -  ("arrowtown" "sRGB:148/135/113" 38) -  ("armadillo" "sRGB:67/62/55" 37) -  ("arapawa" "sRGB:17/12/108" 36) -  ("aquamarine" "sRGB:1/75/67" 35) -  ("aquasqueeze" "sRGB:232/245/242" 34) -  ("aquaspring" "sRGB:234/249/245" 33) -  ("aquahaze" "sRGB:237/245/245" 32) -  ("aqua" "sRGB:161/218/215" 31) -  ("apricotwhite" "sRGB:255/254/236" 30) -  ("apricot" "sRGB:235/147/115" 29) -  ("applegreen" "sRGB:226/243/236" 28) -  ("appleblossom" "sRGB:175/77/67" 27) -  ("apple" "sRGB:79/168/61" 26) -  ("apache" "sRGB:223/190/111" 25) -  ("anzac" "sRGB:224/182/70" 24) -  ("antiquebrass" "sRGB:112/74/7" 23) -  ("anakiwa" "sRGB:157/229/255" 22) -  ("amulet" "sRGB:123/159/128" 21) -  ("amour" "sRGB:249/234/243" 20) -  ("amethystsmoke" "sRGB:163/151/180" 19) -  ("americano" "sRGB:135/117/110" 18) -  ("amazon" "sRGB:59/122/87" 17) -  ("aluminium" "sRGB:169/172/182" 16) -  ("alto" "sRGB:219/219/219" 15) -  ("alpine" "sRGB:175/143/44" 14) -  ("almondfrost" "sRGB:144/123/113" 13) -  ("allports" "sRGB:0/118/163" 12) -  ("alerttan" "sRGB:155/71/3" 11) -  ("albescentwhite" "sRGB:245/233/211" 10) -  ("alabaster" "sRGB:255/255/255" 9) -  ("akaroa" "sRGB:212/196/168" 8) -  ("afghantan" "sRGB:134/86/10" 7) -  ("affair" "sRGB:113/70/147" 6) -  ("aeroblue" "sRGB:201/255/229" 5) -  ("acorn" "sRGB:106/93/27" 4) -  ("acapulco" "sRGB:124/176/161" 3) -  ("acadia" "sRGB:27/20/4" 2) -  ("abbey" "sRGB:76/79/86" 1) +  ("zydeco" "sRGB:32/72/63" 1379) +  ("zumthor" "sRGB:205/213/213" 1378) +  ("zuccini" "sRGB:23/70/46" 1377) +  ("zorba" "sRGB:162/149/137" 1376) +  ("zombie" "sRGB:221/194/131" 1375) +  ("zircon" "sRGB:222/227/227" 1374) +  ("ziggurat" "sRGB:129/166/170" 1373) +  ("zeus" "sRGB:59/60/56" 1372) +  ("zest" "sRGB:198/114/59" 1371) +  ("zanah" "sRGB:178/198/177" 1370) +  ("zambezi" "sRGB:107/90/90" 1369) +  ("yuma" "sRGB:199/184/130" 1368) +  ("yukongold" "sRGB:130/106/33" 1367) +  ("yourpink" "sRGB:255/197/187" 1366) +  ("yellowsea" "sRGB:244/159/53" 1365) +  ("yellowmetal" "sRGB:115/99/62" 1364) +  ("xanadu" "sRGB:117/135/110" 1363) +  ("woodybrown" "sRGB:85/69/69" 1362) +  ("woodybay" "sRGB:51/52/58" 1361) +  ("woodsmoke" "sRGB:43/50/48" 1360) +  ("woodrush" "sRGB:69/64/43" 1359) +  ("woodland" "sRGB:98/103/70" 1358) +  ("woodburn" "sRGB:70/54/41" 1357) +  ("woodbark" "sRGB:48/38/33" 1356) +  ("witchhaze" "sRGB:251/240/115" 1355) +  ("wistful" "sRGB:162/158/205" 1354) +  ("wisteria" "sRGB:164/135/139" 1353) +  ("wisppink" "sRGB:249/232/226" 1352) +  ("winterhazel" "sRGB:208/195/131" 1351) +  ("wineberry" "sRGB:82/44/53" 1350) +  ("windsor" "sRGB:70/44/119" 1349) +  ("willowgrove" "sRGB:105/117/92" 1348) +  ("willowbrook" "sRGB:223/230/207" 1347) +  ("william" "sRGB:83/115/111" 1346) +  ("wildwillow" "sRGB:190/202/96" 1345) +  ("wildsand" "sRGB:231/228/222" 1344) +  ("wildrice" "sRGB:227/212/116" 1343) +  ("whiterock" "sRGB:212/207/180" 1342) +  ("whitepointer" "sRGB:218/214/204" 1341) +  ("whitenectar" "sRGB:248/246/216" 1340) +  ("whitelinen" "sRGB:238/231/220" 1339) +  ("whitelilac" "sRGB:231/229/232" 1338) +  ("whiteice" "sRGB:215/238/228" 1337) +  ("whisper" "sRGB:239/230/230" 1336) +  ("whiskeysour" "sRGB:212/145/93" 1335) +  ("whiskey" "sRGB:210/144/98" 1334) +  ("wheatfield" "sRGB:223/215/189" 1333) +  ("wewak" "sRGB:241/145/154" 1332) +  ("westernred" "sRGB:107/37/44" 1331) +  ("westar" "sRGB:212/207/197" 1330) +  ("westside" "sRGB:229/130/58" 1329) +  ("westcoast" "sRGB:92/81/47" 1328) +  ("wellread" "sRGB:142/53/55" 1327) +  ("wedgewood" "sRGB:76/107/136" 1326) +  ("wepeep" "sRGB:253/215/216" 1325) +  ("waxflower" "sRGB:238/179/158" 1324) +  ("watusi" "sRGB:242/205/187" 1323) +  ("wattle" "sRGB:214/202/61" 1322) +  ("waterloo" "sRGB:114/114/130" 1321) +  ("watercourse" "sRGB:0/110/78" 1320) +  ("waterleaf" "sRGB:182/236/222" 1319) +  ("wasabi" "sRGB:132/145/55" 1318) +  ("wanwhite" "sRGB:228/226/220" 1317) +  ("walnut" "sRGB:121/77/46" 1316) +  ("waiouru" "sRGB:76/78/49" 1315) +  ("waikawagrey" "sRGB:91/110/145" 1314) +  ("wafer" "sRGB:212/187/177" 1313) +  ("vulcan" "sRGB:54/56/60" 1312) +  ("voodoo" "sRGB:68/50/64" 1311) +  ("volcano" "sRGB:78/39/40" 1310) +  ("vistawhite" "sRGB:227/223/217" 1309) +  ("vistablue" "sRGB:151/213/179" 1308) +  ("visvis" "sRGB:249/228/150" 1307) +  ("viridiangreen" "sRGB:75/95/86" 1306) +  ("violet" "sRGB:47/38/60" 1305) +  ("violentviolet" "sRGB:46/34/73" 1304) +  ("viola" "sRGB:197/143/157" 1303) +  ("vinrouge" "sRGB:149/82/100" 1302) +  ("viking" "sRGB:77/177/200" 1301) +  ("vidaloca" "sRGB:95/146/40" 1300) +  ("victoria" "sRGB:86/73/133" 1299) +  ("vesuvius" "sRGB:168/85/51" 1298) +  ("verdungreen" "sRGB:72/83/26" 1297) +  ("verdigris" "sRGB:98/96/62" 1296) +  ("venus" "sRGB:139/125/130" 1295) +  ("veniceblue" "sRGB:44/87/120" 1294) +  ("venetianred" "sRGB:91/31/34" 1293) +  ("varden" "sRGB:253/239/211" 1292) +  ("vanillaice" "sRGB:235/210/209" 1291) +  ("vanilla" "sRGB:204/182/155" 1290) +  ("vancleef" "sRGB:82/57/54" 1289) +  ("valhalla" "sRGB:42/43/65" 1288) +  ("valentino" "sRGB:56/44/56" 1287) +  ("valencia" "sRGB:212/87/78" 1286) +  ("twine" "sRGB:193/145/86" 1285) +  ("twilightblue" "sRGB:244/246/236" 1284) +  ("twilight" "sRGB:218/192/205" 1283) +  ("tutu" "sRGB:248/228/227" 1282) +  ("tussock" "sRGB:191/145/75" 1281) +  ("tusk" "sRGB:227/229/177" 1280) +  ("tuscany" "sRGB:173/98/66" 1279) +  ("turtlegreen" "sRGB:54/62/29" 1278) +  ("turmeric" "sRGB:174/144/65" 1277) +  ("turkishrose" "sRGB:165/110/117" 1276) +  ("turbo" "sRGB:245/204/35" 1275) +  ("tundora" "sRGB:88/84/82" 1274) +  ("tuna" "sRGB:70/73/78" 1273) +  ("tumbleweed" "sRGB:75/65/42" 1272) +  ("tuliptree" "sRGB:227/172/61" 1271) +  ("tuftbush" "sRGB:249/211/190" 1270) +  ("tuatara" "sRGB:69/70/66" 1269) +  ("truev" "sRGB:142/114/199" 1268) +  ("trout" "sRGB:76/83/86" 1267) +  ("tropicalblue" "sRGB:174/201/235" 1266) +  ("trinidad" "sRGB:197/79/51" 1265) +  ("trendypink" "sRGB:128/93/128" 1264) +  ("trendygreen" "sRGB:126/132/36" 1263) +  ("treehouse" "sRGB:60/52/46" 1262) +  ("treepoppy" "sRGB:226/129/59" 1261) +  ("travertine" "sRGB:226/221/199" 1260) +  ("tranquil" "sRGB:221/237/233" 1259) +  ("tradewind" "sRGB:109/175/167" 1258) +  ("towergrey" "sRGB:156/172/165" 1257) +  ("touchwood" "sRGB:58/55/46" 1256) +  ("totempole" "sRGB:136/53/49" 1255) +  ("tosca" "sRGB:116/64/66" 1254) +  ("toryblue" "sRGB:55/78/136" 1253) +  ("toreabay" "sRGB:53/61/117" 1252) +  ("topaz" "sRGB:129/124/135" 1251) +  ("tonyspink" "sRGB:231/158/136" 1250) +  ("tomthumb" "sRGB:79/99/72" 1249) +  ("tolopea" "sRGB:45/37/65" 1248) +  ("toledo" "sRGB:62/38/49" 1247) +  ("tobago" "sRGB:68/54/45" 1246) +  ("tobaccobrown" "sRGB:109/88/67" 1245) +  ("toast" "sRGB:159/113/95" 1244) +  ("titanwhite" "sRGB:221/214/225" 1243) +  ("timbergreen" "sRGB:50/67/54" 1242) +  ("tide" "sRGB:190/180/171" 1241) +  ("tidal" "sRGB:240/245/144" 1240) +  ("tiber" "sRGB:24/67/67" 1239) +  ("tiara" "sRGB:185/195/190" 1238) +  ("tiamaria" "sRGB:151/66/45" 1237) +  ("thunderbird" "sRGB:146/56/48" 1236) +  ("thunder" "sRGB:77/77/75" 1235) +  ("thistle" "sRGB:199/189/149" 1234) +  ("thatchgreen" "sRGB:84/78/49" 1233) +  ("thatch" "sRGB:177/148/143" 1232) +  ("texasrose" "sRGB:252/176/87" 1231) +  ("texas" "sRGB:236/230/126" 1230) +  ("tequila" "sRGB:244/208/164" 1229) +  ("temptress" "sRGB:60/33/38" 1228) +  ("tealblue" "sRGB:37/72/85" 1227) +  ("teak" "sRGB:171/137/83" 1226) +  ("tea" "sRGB:191/181/162" 1225) +  ("tepapagreen" "sRGB:43/75/64" 1224) +  ("taxbreak" "sRGB:73/101/105" 1223) +  ("tawnyport" "sRGB:100/58/72" 1222) +  ("taupegrey" "sRGB:137/132/120" 1221) +  ("tasman" "sRGB:186/192/179" 1220) +  ("tarawera" "sRGB:37/60/72" 1219) +  ("tara" "sRGB:222/241/221" 1218) +  ("tapestry" "sRGB:179/112/132" 1217) +  ("tapa" "sRGB:124/124/114" 1216) +  ("tango" "sRGB:212/111/49" 1215) +  ("tangerine" "sRGB:205/93/52" 1214) +  ("tangaroa" "sRGB:30/47/60" 1213) +  ("tana" "sRGB:184/181/161" 1212) +  ("tamarind" "sRGB:62/47/46" 1211) +  ("tamarillo" "sRGB:117/43/47" 1210) +  ("tallow" "sRGB:163/153/119" 1209) +  ("tallpoppy" "sRGB:133/53/52" 1208) +  ("tahunasands" "sRGB:216/204/155" 1207) +  ("tahitigold" "sRGB:220/114/42" 1206) +  ("tacha" "sRGB:210/185/96" 1205) +  ("tacao" "sRGB:246/174/120" 1204) +  ("tabasco" "sRGB:142/58/54" 1203) +  ("sycamore" "sRGB:146/140/60" 1202) +  ("swisscoffee" "sRGB:219/208/202" 1201) +  ("swirl" "sRGB:215/206/197" 1200) +  ("sweetpink" "sRGB:238/145/141" 1199) +  ("sweetcorn" "sRGB:249/225/118" 1198) +  ("swansdown" "sRGB:218/230/221" 1197) +  ("swamp" "sRGB:37/47/47" 1196) +  ("suvagrey" "sRGB:139/134/133" 1195) +  ("sushi" "sRGB:124/159/47" 1194) +  ("surfiegreen" "sRGB:0/123/119" 1193) +  ("surfcrest" "sRGB:195/214/189" 1192) +  ("surf" "sRGB:184/212/187" 1191) +  ("supernova" "sRGB:255/180/55" 1190) +  ("sunshade" "sRGB:250/157/73" 1189) +  ("sunset" "sRGB:192/81/74" 1188) +  ("sunglo" "sRGB:199/97/85" 1187) +  ("sunflower" "sRGB:218/192/26" 1186) +  ("sundown" "sRGB:248/175/169" 1185) +  ("sundance" "sRGB:196/170/77" 1184) +  ("sun" "sRGB:239/142/56" 1183) +  ("summergreen" "sRGB:143/182/156" 1182) +  ("sulu" "sRGB:198/234/128" 1181) +  ("sugarcane" "sRGB:238/239/223" 1180) +  ("submarine" "sRGB:140/156/156" 1179) +  ("studio" "sRGB:114/74/161" 1178) +  ("stromboli" "sRGB:64/99/86" 1177) +  ("strikemaster" "sRGB:148/106/129" 1176) +  ("straw" "sRGB:218/190/130" 1175) +  ("stratos" "sRGB:33/38/58" 1174) +  ("stormgrey" "sRGB:116/120/128" 1173) +  ("stormdust" "sRGB:101/100/95" 1172) +  ("stonewall" "sRGB:128/118/97" 1171) +  ("stinger" "sRGB:141/112/42" 1170) +  ("stiletto" "sRGB:131/61/62" 1169) +  ("steelgrey" "sRGB:67/70/75" 1168) +  ("starship" "sRGB:227/221/57" 1167) +  ("starkwhite" "sRGB:210/198/182" 1166) +  ("stardust" "sRGB:160/161/151" 1165) +  ("stack" "sRGB:133/136/133" 1164) +  ("sttropaz" "sRGB:50/84/130" 1163) +  ("squirrel" "sRGB:143/125/107" 1162) +  ("spunpearl" "sRGB:162/161/172" 1161) +  ("sprout" "sRGB:184/202/157" 1160) +  ("springwood" "sRGB:233/225/217" 1159) +  ("springsun" "sRGB:241/241/198" 1158) +  ("springrain" "sRGB:163/189/156" 1157) +  ("springgreen" "sRGB:92/138/100" 1156) +  ("spray" "sRGB:126/205/221" 1155) +  ("splash" "sRGB:241/215/158" 1154) +  ("spindle" "sRGB:179/196/216" 1153) +  ("spicypink" "sRGB:137/117/120" 1152) +  ("spicymix" "sRGB:139/95/77" 1151) +  ("spice" "sRGB:108/79/63" 1150) +  ("spectra" "sRGB:55/93/79" 1149) +  ("spanishwhite" "sRGB:222/209/183" 1148) +  ("spanishgreen" "sRGB:123/137/118" 1147) +  ("spaceshuttle" "sRGB:75/67/59" 1146) +  ("soyabean" "sRGB:111/99/75" 1145) +  ("sourdough" "sRGB:201/181/154" 1144) +  ("sorrellbrown" "sRGB:157/127/97" 1143) +  ("sorbus" "sRGB:221/107/56" 1142) +  ("solitude" "sRGB:233/236/241" 1141) +  ("solitaire" "sRGB:234/218/194" 1140) +  ("solidpink" "sRGB:133/73/76" 1139) +  ("softpeach" "sRGB:238/223/222" 1138) +  ("softamber" "sRGB:207/190/165" 1137) +  ("soapstone" "sRGB:236/229/218" 1136) +  ("snuff" "sRGB:228/215/229" 1135) +  ("snowymint" "sRGB:214/240/205" 1134) +  ("snowflurry" "sRGB:234/247/201" 1133) +  ("snowdrift" "sRGB:227/227/220" 1132) +  ("smoky" "sRGB:96/93/107" 1131) +  ("smokeyash" "sRGB:93/89/82" 1130) +  ("smoketree" "sRGB:187/95/52" 1129) +  ("smaltblue" "sRGB:73/98/103" 1128) +  ("slugger" "sRGB:66/52/43" 1127) +  ("skeptic" "sRGB:157/180/170" 1126) +  ("sisal" "sRGB:197/186/160" 1125) +  ("sirocco" "sRGB:104/118/110" 1124) +  ("siren" "sRGB:105/41/59" 1123) +  ("sinbad" "sRGB:166/213/208" 1122) +  ("silvertree" "sRGB:103/190/144" 1121) +  ("silversand" "sRGB:190/189/182" 1120) +  ("silverchalice" "sRGB:172/174/169" 1119) +  ("silk" "sRGB:187/173/161" 1118) +  ("sidecar" "sRGB:233/217/169" 1117) +  ("siam" "sRGB:104/107/80" 1116) +  ("shuttlegrey" "sRGB:97/102/107" 1115) +  ("shocking" "sRGB:232/153/190" 1114) +  ("shiraz" "sRGB:132/40/51" 1113) +  ("shipgrey" "sRGB:78/78/76" 1112) +  ("shipcove" "sRGB:121/136/171" 1111) +  ("shinglefawn" "sRGB:116/89/55" 1110) +  ("shilo" "sRGB:230/178/166" 1109) +  ("sherwoodgreen" "sRGB:27/70/54" 1108) +  ("sherpablue" "sRGB:0/73/78" 1107) +  ("shark" "sRGB:52/54/58" 1106) +  ("shalimar" "sRGB:248/246/168" 1105) +  ("shakespeare" "sRGB:96/154/184" 1104) +  ("shadylady" "sRGB:159/155/157" 1103) +  ("shadowgreen" "sRGB:154/192/182" 1102) +  ("serenade" "sRGB:252/233/215" 1101) +  ("sepia" "sRGB:58/47/45" 1100) +  ("selago" "sRGB:230/223/231" 1099) +  ("seaweed" "sRGB:55/65/42" 1098) +  ("seashell" "sRGB:227/225/224" 1097) +  ("seance" "sRGB:105/50/110" 1096) +  ("seagull" "sRGB:119/183/208" 1095) +  ("seapink" "sRGB:219/129/126" 1094) +  ("seanymph" "sRGB:138/174/164" 1093) +  ("seamist" "sRGB:194/213/196" 1092) +  ("seagreen" "sRGB:31/99/97" 1091) +  ("seafog" "sRGB:223/221/214" 1090) +  ("seabuckthorn" "sRGB:239/149/72" 1089) +  ("scrub" "sRGB:61/64/49" 1088) +  ("scotchmist" "sRGB:238/231/200" 1087) +  ("scorpion" "sRGB:106/100/102" 1086) +  ("scooter" "sRGB:48/142/160" 1085) +  ("schooner" "sRGB:141/132/120" 1084) +  ("schist" "sRGB:135/135/111" 1083) +  ("scarpaflow" "sRGB:107/106/108" 1082) +  ("scarlett" "sRGB:126/37/48" 1081) +  ("scarletgum" "sRGB:74/45/87" 1080) +  ("scandal" "sRGB:173/217/209" 1079) +  ("scampi" "sRGB:111/99/160" 1078) +  ("sazerac" "sRGB:245/222/196" 1077) +  ("sauvignon" "sRGB:244/234/228" 1076) +  ("saratoga" "sRGB:85/91/44" 1075) +  ("sapphire" "sRGB:63/82/129" 1074) +  ("sapling" "sRGB:225/213/166" 1073) +  ("santefe" "sRGB:169/106/80" 1072) +  ("santasgrey" "sRGB:153/152/167" 1071) +  ("sanguinebrown" "sRGB:108/55/54" 1070) +  ("sangria" "sRGB:130/42/50" 1069) +  ("sandybeach" "sRGB:254/219/183" 1068) +  ("sandwisp" "sRGB:222/203/129" 1067) +  ("sandstone" "sRGB:120/109/95" 1066) +  ("sandrift" "sRGB:175/147/125" 1065) +  ("sandal" "sRGB:163/135/106" 1064) +  ("sanddune" "sRGB:134/118/101" 1063) +  ("sanmarino" "sRGB:78/108/157" 1062) +  ("sanjuan" "sRGB:68/87/97" 1061) +  ("sanfelix" "sRGB:44/110/49" 1060) +  ("sambuca" "sRGB:59/46/37" 1059) +  ("saltpan" "sRGB:238/243/229" 1058) +  ("saltbox" "sRGB:105/98/104" 1057) +  ("salomie" "sRGB:255/214/123" 1056) +  ("salem" "sRGB:23/123/77" 1055) +  ("sail" "sRGB:165/206/236" 1054) +  ("sahara" "sRGB:183/152/38" 1053) +  ("sage" "sRGB:152/159/122" 1052) +  ("saffron" "sRGB:220/159/69" 1051) +  ("saddlebrown" "sRGB:80/56/30" 1050) +  ("saddle" "sRGB:93/78/70" 1049) +  ("rustynail" "sRGB:141/95/44" 1048) +  ("rusticred" "sRGB:58/24/26" 1047) +  ("russett" "sRGB:125/101/92" 1046) +  ("rumswizzle" "sRGB:241/237/212" 1045) +  ("rum" "sRGB:113/102/117" 1044) +  ("royalheath" "sRGB:181/75/115" 1043) +  ("rouge" "sRGB:169/64/100" 1042) +  ("roti" "sRGB:182/150/66" 1041) +  ("rosewood" "sRGB:143/62/63" 1040) +  ("rosewhite" "sRGB:251/238/232" 1039) +  ("roseofsharon" "sRGB:172/81/45" 1038) +  ("rosebudcherry" "sRGB:138/45/82" 1037) +  ("rosebud" "sRGB:254/171/154" 1036) +  ("rose" "sRGB:211/161/148" 1035) +  ("rope" "sRGB:142/89/60" 1034) +  ("roofterracotta" "sRGB:161/71/67" 1033) +  ("ronchi" "sRGB:234/184/82" 1032) +  ("romantic" "sRGB:255/198/158" 1031) +  ("romance" "sRGB:244/240/230" 1030) +  ("romancoffee" "sRGB:125/103/87" 1029) +  ("roman" "sRGB:216/98/91" 1028) +  ("rollingstone" "sRGB:109/120/118" 1027) +  ("rodeodust" "sRGB:199/163/132" 1026) +  ("rockspray" "sRGB:157/68/45" 1025) +  ("rocksalt" "sRGB:230/214/184" 1024) +  ("rockblue" "sRGB:147/162/186" 1023) +  ("rock" "sRGB:90/77/65" 1022) +  ("robinseggblue" "sRGB:158/170/158" 1021) +  ("robroy" "sRGB:221/173/86" 1020) +  ("riverbed" "sRGB:85/96/97" 1019) +  ("riptide" "sRGB:137/217/200" 1018) +  ("riogrande" "sRGB:183/198/26" 1017) +  ("richgold" "sRGB:161/82/38" 1016) +  ("riceflower" "sRGB:239/245/209" 1015) +  ("ricecake" "sRGB:239/236/222" 1014) +  ("ribbon" "sRGB:113/51/60" 1013) +  ("rhino" "sRGB:61/70/83" 1012) +  ("revolver" "sRGB:55/54/63" 1011) +  ("resolutionblue" "sRGB:50/63/117" 1010) +  ("renosand" "sRGB:178/110/51" 1009) +  ("remy" "sRGB:246/222/218" 1008) +  ("regentstblue" "sRGB:160/205/217" 1007) +  ("regentgrey" "sRGB:121/132/136" 1006) +  ("regalblue" "sRGB:32/63/88" 1005) +  ("reefgold" "sRGB:169/141/54" 1004) +  ("reef" "sRGB:209/239/159" 1003) +  ("redwood" "sRGB:91/52/46" 1002) +  ("redstage" "sRGB:173/82/46" 1001) +  ("redrobin" "sRGB:125/65/56" 1000) +  ("redoxide" "sRGB:93/31/30" 999) +  ("reddevil" "sRGB:102/42/44" 998) +  ("reddamask" "sRGB:203/111/74" 997) +  ("redberry" "sRGB:112/31/40" 996) +  ("redbeech" "sRGB:161/98/59" 995) +  ("rebel" "sRGB:69/52/48" 994) +  ("raven" "sRGB:111/116/123" 993) +  ("rangoongreen" "sRGB:43/46/37" 992) +  ("rangitoto" "sRGB:58/65/51" 991) +  ("rajah" "sRGB:252/174/96" 990) +  ("rainee" "sRGB:179/193/177" 989) +  ("raincloud" "sRGB:163/152/129" 988) +  ("rainforest" "sRGB:102/112/40" 987) +  ("raffia" "sRGB:220/198/160" 986) +  ("racinggreen" "sRGB:35/47/44" 985) +  ("quincy" "sRGB:106/84/69" 984) +  ("quillgrey" "sRGB:203/201/192" 983) +  ("quicksand" "sRGB:195/152/139" 982) +  ("quarterspanishwhite" "sRGB:235/226/210" 981) +  ("quarterpearllusta" "sRGB:242/237/221" 980) +  ("putty" "sRGB:205/174/112" 979) +  ("punga" "sRGB:83/73/49" 978) +  ("punch" "sRGB:168/50/57" 977) +  ("pumpkin" "sRGB:171/107/53" 976) +  ("pumice" "sRGB:186/192/180" 975) +  ("puertorico" "sRGB:89/186/163" 974) +  ("pueblo" "sRGB:110/51/38" 973) +  ("prussianblue" "sRGB:25/47/65" 972) +  ("provincialpink" "sRGB:246/227/218" 971) +  ("promenade" "sRGB:248/246/223" 970) +  ("primrose" "sRGB:228/222/142" 969) +  ("prim" "sRGB:226/205/213" 968) +  ("prelude" "sRGB:202/180/212" 967) +  ("prairiesand" "sRGB:136/60/50" 966) +  ("powderblue" "sRGB:146/159/162" 965) +  ("pottersclay" "sRGB:132/92/64" 964) +  ("potpourri" "sRGB:239/220/212" 963) +  ("portica" "sRGB:240/213/85" 962) +  ("portage" "sRGB:139/152/216" 961) +  ("portafino" "sRGB:244/240/155" 960) +  ("portgore" "sRGB:59/67/108" 959) +  ("porsche" "sRGB:223/157/91" 958) +  ("porcelain" "sRGB:221/220/219" 957) +  ("pompadour" "sRGB:106/31/68" 956) +  ("poloblue" "sRGB:138/167/204" 955) +  ("polar" "sRGB:229/242/231" 954) +  ("pohutukawa" "sRGB:101/28/38" 953) +  ("plum" "sRGB:56/26/56" 952) +  ("planter" "sRGB:98/93/42" 951) +  ("plantation" "sRGB:62/89/76" 950) +  ("pizza" "sRGB:191/141/60" 949) +  ("pizazz" "sRGB:229/127/61" 948) +  ("pixiegreen" "sRGB:187/205/165" 947) +  ("pistachio" "sRGB:103/105/39" 946) +  ("pirategold" "sRGB:186/120/42" 945) +  ("pippin" "sRGB:252/219/210" 944) +  ("pipi" "sRGB:245/230/196" 943) +  ("piper" "sRGB:157/84/50" 942) +  ("pinkswan" "sRGB:191/179/178" 941) +  ("pinklady" "sRGB:243/215/182" 940) +  ("pinklace" "sRGB:246/204/215" 939) +  ("pinkflare" "sRGB:216/180/182" 938) +  ("pinetree" "sRGB:42/47/35" 937) +  ("pineglade" "sRGB:189/192/126" 936) +  ("pinecone" "sRGB:117/101/86" 935) +  ("pigeonpost" "sRGB:119/132/142" 934) +  ("pictonblue" "sRGB:91/160/208" 933) +  ("pickledbluewood" "sRGB:79/90/95" 932) +  ("pickledbean" "sRGB:115/85/62" 931) +  ("pickledaspen" "sRGB:91/100/82" 930) +  ("picasso" "sRGB:248/234/151" 929) +  ("pharlap" "sRGB:130/102/99" 928) +  ("pewter" "sRGB:145/160/146" 927) +  ("petiteorchid" "sRGB:218/151/144" 926) +  ("pesto" "sRGB:122/114/41" 925) +  ("perutan" "sRGB:115/61/31" 924) +  ("persimmon" "sRGB:239/115/94" 923) +  ("persianred" "sRGB:79/33/42" 922) +  ("persianplum" "sRGB:104/51/50" 921) +  ("periglacialblue" "sRGB:172/182/178" 920) +  ("perfume" "sRGB:194/169/219" 919) +  ("perano" "sRGB:172/185/232" 918) +  ("peppermint" "sRGB:215/231/208" 917) +  ("pelorous" "sRGB:37/153/178" 916) +  ("peat" "sRGB:118/109/82" 915) +  ("pearllusta" "sRGB:234/224/200" 914) +  ("pearlbush" "sRGB:222/209/198" 913) +  ("peanut" "sRGB:122/68/52" 912) +  ("peachschnapps" "sRGB:198/128/89" 911) +  ("peach" "sRGB:251/229/194" 910) +  ("peasoup" "sRGB:185/184/128" 909) +  ("pavlova" "sRGB:186/171/135" 908) +  ("paua" "sRGB:42/37/81" 907) +  ("pattensblue" "sRGB:211/229/239" 906) +  ("patina" "sRGB:99/146/131" 905) +  ("parsley" "sRGB:48/93/53" 904) +  ("pariswhite" "sRGB:191/205/192" 903) +  ("parism" "sRGB:49/39/96" 902) +  ("parisdaisy" "sRGB:251/235/80" 901) +  ("parchment" "sRGB:208/200/176" 900) +  ("paradiso" "sRGB:72/128/132" 899) +  ("paprika" "sRGB:124/45/55" 898) +  ("panda" "sRGB:84/79/58" 897) +  ("pancho" "sRGB:223/185/146" 896) +  ("panache" "sRGB:235/247/228" 895) +  ("pampas" "sRGB:234/228/220" 894) +  ("palmleaf" "sRGB:54/72/47" 893) +  ("palmgreen" "sRGB:32/57/44" 892) +  ("paleslate" "sRGB:195/190/187" 891) +  ("palesky" "sRGB:99/109/112" 890) +  ("palerose" "sRGB:239/214/218" 889) +  ("paleprim" "sRGB:249/245/159" 888) +  ("paleoyster" "sRGB:156/141/114" 887) +  ("paleleaf" "sRGB:189/202/168" 886) +  ("padua" "sRGB:126/179/148" 885) +  ("paco" "sRGB:79/64/55" 884) +  ("pacifika" "sRGB:102/112/40" 883) +  ("pablo" "sRGB:122/113/92" 882) +  ("paarl" "sRGB:134/75/54" 881) +  ("oysterpink" "sRGB:212/181/176" 880) +  ("oysterbay" "sRGB:209/234/234" 879) +  ("oxley" "sRGB:109/154/120" 878) +  ("oxfordblue" "sRGB:40/53/58" 877) +  ("outerspace" "sRGB:31/38/59" 876) +  ("ottoman" "sRGB:211/219/203" 875) +  ("oslogrey" "sRGB:129/137/136" 874) +  ("orinoco" "sRGB:210/211/179" 873) +  ("orientalpink" "sRGB:194/142/136" 872) +  ("orient" "sRGB:37/91/119" 871) +  ("oregon" "sRGB:177/108/57" 870) +  ("orchidwhite" "sRGB:241/235/217" 869) +  ("orangewhite" "sRGB:234/227/205" 868) +  ("orangeroughy" "sRGB:168/83/53" 867) +  ("oracle" "sRGB:57/85/85" 866) +  ("opium" "sRGB:152/126/126" 865) +  ("opal" "sRGB:168/195/188" 864) +  ("onion" "sRGB:72/65/43" 863) +  ("onahau" "sRGB:194/230/236" 862) +  ("olivetone" "sRGB:116/112/40" 861) +  ("olivehaze" "sRGB:136/128/100" 860) +  ("olivegreen" "sRGB:53/63/42" 859) +  ("oldcopper" "sRGB:115/80/59" 858) +  ("oldbrick" "sRGB:138/51/53" 857) +  ("oiledcedar" "sRGB:102/54/45" 856) +  ("oil" "sRGB:49/51/48" 855) +  ("offyellow" "sRGB:250/243/220" 854) +  ("offgreen" "sRGB:223/240/226" 853) +  ("oceangreen" "sRGB:76/169/115" 852) +  ("observatory" "sRGB:0/143/112" 851) +  ("oasis" "sRGB:252/237/197" 850) +  ("nutmeg" "sRGB:126/74/59" 849) +  ("nugget" "sRGB:188/146/41" 848) +  ("norway" "sRGB:164/184/143" 847) +  ("nordic" "sRGB:29/57/60" 846) +  ("nomad" "sRGB:161/153/134" 845) +  ("nobel" "sRGB:169/157/157" 844) +  ("nileblue" "sRGB:37/63/78" 843) +  ("nightclub" "sRGB:106/31/68" 842) +  ("nightshadz" "sRGB:162/61/84" 841) +  ("nightrider" "sRGB:51/46/46" 840) +  ("niagara" "sRGB:41/169/139" 839) +  ("newyorkpink" "sRGB:221/131/116" 838) +  ("neworleans" "sRGB:228/195/133" 837) +  ("newamber" "sRGB:109/59/36" 836) +  ("nevada" "sRGB:102/111/111" 835) +  ("neutralgreen" "sRGB:170/165/131" 834) +  ("nero" "sRGB:37/37/37" 833) +  ("neptune" "sRGB:119/168/171" 832) +  ("nepal" "sRGB:147/170/185" 831) +  ("negroni" "sRGB:238/199/162" 830) +  ("nebula" "sRGB:184/198/190" 829) +  ("natural" "sRGB:136/89/49" 828) +  ("narvik" "sRGB:233/230/220" 827) +  ("napa" "sRGB:163/154/135" 826) +  ("nandor" "sRGB:78/93/78" 825) +  ("mystic" "sRGB:216/221/218" 824) +  ("mysin" "sRGB:253/174/69" 823) +  ("mypink" "sRGB:214/139/128" 822) +  ("mustard" "sRGB:124/103/32" 821) +  ("mulledwine" "sRGB:82/77/91" 820) +  ("mulefawn" "sRGB:136/79/64" 819) +  ("mulberry" "sRGB:94/42/64" 818) +  ("muesli" "sRGB:158/126/83" 817) +  ("muddywaters" "sRGB:169/132/79" 816) +  ("mountainmist" "sRGB:160/159/156" 815) +  ("mosque" "sRGB:0/95/91" 814) +  ("mosaic" "sRGB:41/55/65" 813) +  ("mortar" "sRGB:86/80/81" 812) +  ("moroccobrown" "sRGB:68/45/33" 811) +  ("morningglory" "sRGB:158/209/211" 810) +  ("moonyellow" "sRGB:240/196/32" 809) +  ("moonraker" "sRGB:192/178/215" 808) +  ("moonmist" "sRGB:206/205/184" 807) +  ("moonglow" "sRGB:245/243/206" 806) +  ("moodyblue" "sRGB:131/120/199" 805) +  ("monza" "sRGB:134/40/46" 804) +  ("montecarlo" "sRGB:122/197/180" 803) +  ("montana" "sRGB:57/59/60" 802) +  ("monsoon" "sRGB:122/118/121" 801) +  ("mongoose" "sRGB:165/139/111" 800) +  ("mondo" "sRGB:85/77/66" 799) +  ("monarch" "sRGB:107/37/44" 798) +  ("monalisa" "sRGB:255/152/137" 797) +  ("mojo" "sRGB:151/70/60" 796) +  ("mocha" "sRGB:111/55/45" 795) +  ("moccaccino" "sRGB:88/47/43" 794) +  ("mobster" "sRGB:96/90/103" 793) +  ("mistgrey" "sRGB:186/185/169" 792) +  ("mischka" "sRGB:165/169/178" 791) +  ("mirage" "sRGB:55/63/67" 790) +  ("minttulip" "sRGB:198/234/221" 789) +  ("mintjulep" "sRGB:224/216/167" 788) +  ("minsk" "sRGB:62/50/103" 787) +  ("ming" "sRGB:64/117/119" 786) +  ("mineralgreen" "sRGB:80/99/85" 785) +  ("mineshaft" "sRGB:55/62/65" 784) +  ("mindaro" "sRGB:218/234/111" 783) +  ("mimosa" "sRGB:245/245/204" 782) +  ("millbrook" "sRGB:89/86/72" 781) +  ("milkwhite" "sRGB:220/217/205" 780) +  ("milkpunch" "sRGB:243/229/192" 779) +  ("milanored" "sRGB:158/51/50" 778) +  ("milan" "sRGB:246/244/147" 777) +  ("mikado" "sRGB:63/54/35" 776) +  ("midnightmoss" "sRGB:36/46/40" 775) +  ("midnightexpress" "sRGB:33/38/58" 774) +  ("midnight" "sRGB:33/48/62" 773) +  ("midgrey" "sRGB:102/106/109" 772) +  ("mexicanred" "sRGB:155/61/61" 771) +  ("meteorite" "sRGB:74/59/106" 770) +  ("meteor" "sRGB:187/116/49" 769) +  ("metalliccopper" "sRGB:110/61/52" 768) +  ("metallicbronze" "sRGB:85/74/60" 767) +  ("merlot" "sRGB:115/52/58" 766) +  ("merlin" "sRGB:79/78/72" 765) +  ("merino" "sRGB:225/219/208" 764) +  ("mercury" "sRGB:213/210/209" 763) +  ("meranti" "sRGB:107/52/42" 762) +  ("melrose" "sRGB:195/185/221" 761) +  ("melanzane" "sRGB:52/41/49" 760) +  ("melanie" "sRGB:224/183/194" 759) +  ("mckenzie" "sRGB:140/99/56" 758) +  ("maverick" "sRGB:200/177/192" 757) +  ("matterhorn" "sRGB:82/75/75" 756) +  ("matrix" "sRGB:142/77/69" 755) +  ("matisse" "sRGB:54/92/125" 754) +  ("mash" "sRGB:90/76/66" 753) +  ("masala" "sRGB:87/83/75" 752) +  ("marzipan" "sRGB:235/200/129" 751) +  ("martinique" "sRGB:60/55/72" 750) +  ("martini" "sRGB:183/168/163" 749) +  ("marshland" "sRGB:43/46/38" 748) +  ("maroon" "sRGB:64/35/39" 747) +  ("marlin" "sRGB:54/45/38" 746) +  ("mariner" "sRGB:66/99/159" 745) +  ("marigold" "sRGB:184/138/61" 744) +  ("mardigras" "sRGB:53/34/53" 743) +  ("manz" "sRGB:228/219/85" 742) +  ("mantle" "sRGB:150/167/147" 741) +  ("mantis" "sRGB:127/193/92" 740) +  ("manhattan" "sRGB:226/175/128" 739) +  ("mandyspink" "sRGB:245/183/153" 738) +  ("mandy" "sRGB:205/82/91" 737) +  ("mandalay" "sRGB:181/123/46" 736) +  ("mamba" "sRGB:118/109/124" 735) +  ("malta" "sRGB:165/151/132" 734) +  ("mallard" "sRGB:58/69/49" 733) +  ("malibu" "sRGB:102/183/225" 732) +  ("malachitegreen" "sRGB:151/151/111" 731) +  ("mako" "sRGB:80/85/85" 730) +  ("makara" "sRGB:105/95/80" 729) +  ("maize" "sRGB:227/185/130" 728) +  ("maire" "sRGB:42/41/34" 727) +  ("maitai" "sRGB:165/101/49" 726) +  ("mahogany" "sRGB:73/38/37" 725) +  ("magnolia" "sRGB:238/232/235" 724) +  ("madras" "sRGB:71/62/35" 723) +  ("madison" "sRGB:45/60/84" 722) +  ("madang" "sRGB:183/227/168" 721) +  ("mabel" "sRGB:203/232/232" 720) +  ("lynch" "sRGB:105/125/137" 719) +  ("luxorgold" "sRGB:171/141/63" 718) +  ("lusty" "sRGB:120/46/44" 717) +  ("lunargreen" "sRGB:78/85/65" 716) +  ("luckypoint" "sRGB:41/45/79" 715) +  ("lucky" "sRGB:171/154/28" 714) +  ("loulou" "sRGB:76/51/71" 713) +  ("lotus" "sRGB:139/80/75" 712) +  ("lonestar" "sRGB:82/36/38" 711) +  ("londonhue" "sRGB:174/148/171" 710) +  ("lola" "sRGB:185/172/187" 709) +  ("logan" "sRGB:157/156/180" 708) +  ("logcabin" "sRGB:57/62/46" 707) +  ("locust" "sRGB:162/165/128" 706) +  ("lochmara" "sRGB:49/110/160" 705) +  ("lochinvar" "sRGB:72/144/132" 704) +  ("loblolly" "sRGB:179/187/183" 703) +  ("loafer" "sRGB:219/217/194" 702) +  ("lividbrown" "sRGB:49/42/41" 701) +  ("lisbonbrown" "sRGB:84/79/58" 700) +  ("lipstick" "sRGB:150/44/84" 699) +  ("linkwater" "sRGB:199/205/216" 698) +  ("linen" "sRGB:186/183/162" 697) +  ("limerick" "sRGB:137/172/39" 696) +  ("limedspruce" "sRGB:78/96/94" 695) +  ("limedoak" "sRGB:140/114/84" 694) +  ("limedgum" "sRGB:107/91/61" 693) +  ("limedash" "sRGB:103/109/99" 692) +  ("limeade" "sRGB:95/151/39" 691) +  ("lime" "sRGB:183/197/44" 690) +  ("lima" "sRGB:122/172/33" 689) +  ("lilywhite" "sRGB:233/238/235" 688) +  ("lily" "sRGB:193/159/179" 687) +  ("lilacbush" "sRGB:148/112/196" 686) +  ("lightningyellow" "sRGB:247/162/51" 685) +  ("licorice" "sRGB:46/55/73" 684) +  ("lemongrass" "sRGB:153/154/134" 683) +  ("lemonginger" "sRGB:150/132/40" 682) +  ("lemon" "sRGB:217/178/32" 681) +  ("leather" "sRGB:144/106/84" 680) +  ("lavender" "sRGB:159/144/208" 679) +  ("laurel" "sRGB:110/141/113" 678) +  ("laser" "sRGB:198/169/94" 677) +  ("laspalmas" "sRGB:198/218/54" 676) +  ("larioja" "sRGB:186/192/14" 675) +  ("lapalma" "sRGB:66/137/41" 674) +  ("kumera" "sRGB:117/91/39" 673) +  ("kournikova" "sRGB:249/208/84" 672) +  ("koromiko" "sRGB:254/181/82" 671) +  ("korma" "sRGB:128/78/44" 670) +  ("kokoda" "sRGB:123/120/90" 669) +  ("kobi" "sRGB:224/147/171" 668) +  ("kingfisherdaisy" "sRGB:88/53/128" 667) +  ("kimberly" "sRGB:105/93/135" 666) +  ("killarney" "sRGB:73/118/79" 665) +  ("kilamanjaro" "sRGB:58/53/50" 664) +  ("kidnapper" "sRGB:191/192/171" 663) +  ("keppel" "sRGB:95/182/156" 662) +  ("kenyancopper" "sRGB:108/50/46" 661) +  ("kelp" "sRGB:77/80/60" 660) +  ("kashmirblue" "sRGB:87/109/142" 659) +  ("karry" "sRGB:254/220/193" 658) +  ("karaka" "sRGB:45/45/36" 657) +  ("kangaroo" "sRGB:197/195/176" 656) +  ("kaitokegreen" "sRGB:36/83/54" 655) +  ("kabul" "sRGB:108/94/83" 654) +  ("justright" "sRGB:220/191/172" 653) +  ("juniper" "sRGB:116/145/142" 652) +  ("junglemist" "sRGB:176/196/196" 651) +  ("junglegreen" "sRGB:41/41/36" 650) +  ("jumbo" "sRGB:135/135/133" 649) +  ("judgegrey" "sRGB:93/83/70" 648) +  ("jordyblue" "sRGB:122/170/224" 647) +  ("jonquil" "sRGB:238/242/147" 646) +  ("jon" "sRGB:70/61/62" 645) +  ("joanna" "sRGB:214/209/192" 644) +  ("jewel" "sRGB:19/104/67" 643) +  ("jetstream" "sRGB:187/208/201" 642) +  ("jellybean" "sRGB:68/121/142" 641) +  ("jazz" "sRGB:95/44/47" 640) +  ("java" "sRGB:37/151/151" 639) +  ("jarrah" "sRGB:59/43/44" 638) +  ("japonica" "sRGB:206/114/89" 637) +  ("japanesemaple" "sRGB:103/47/48" 636) +  ("japaneselaurel" "sRGB:47/117/50" 635) +  ("janna" "sRGB:222/209/183" 634) +  ("jambalaya" "sRGB:103/72/52" 633) +  ("jaguar" "sRGB:41/41/47" 632) +  ("jagger" "sRGB:63/46/76" 631) +  ("jaggedice" "sRGB:202/231/226" 630) +  ("jaffa" "sRGB:226/121/69" 629) +  ("jade" "sRGB:64/114/109" 628) +  ("jacksonspurple" "sRGB:61/63/125" 627) +  ("jackobean" "sRGB:65/54/40" 626) +  ("jacarta" "sRGB:61/50/93" 625) +  ("jacaranda" "sRGB:54/45/56" 624) +  ("islandspice" "sRGB:248/237/219" 623) +  ("ironstone" "sRGB:134/80/64" 622) +  ("ironsidegrey" "sRGB:112/110/102" 621) +  ("ironbark" "sRGB:109/77/44" 620) +  ("iron" "sRGB:203/205/205" 619) +  ("iroko" "sRGB:91/82/68" 618) +  ("irishcoffee" "sRGB:98/66/43" 617) +  ("indochine" "sRGB:156/91/52" 616) +  ("indiantan" "sRGB:79/48/31" 615) +  ("illusion" "sRGB:239/149/174" 614) +  ("iceberg" "sRGB:202/225/217" 613) +  ("icecold" "sRGB:175/227/214" 612) +  ("husk" "sRGB:178/153/75" 611) +  ("hurricane" "sRGB:139/126/119" 610) +  ("huntergreen" "sRGB:47/49/37" 609) +  ("hummingbird" "sRGB:206/239/228" 608) +  ("hottoddy" "sRGB:167/117/44" 607) +  ("hotpurple" "sRGB:78/46/83" 606) +  ("hotcurry" "sRGB:129/91/40" 605) +  ("hotchile" "sRGB:107/37/44" 604) +  ("horsesneck" "sRGB:109/86/44" 603) +  ("horizon" "sRGB:100/136/148" 602) +  ("hopbush" "sRGB:205/109/147" 601) +  ("honeysuckle" "sRGB:232/237/105" 600) +  ("honeyflower" "sRGB:92/60/109" 599) +  ("holly" "sRGB:37/52/43" 598) +  ("hoki" "sRGB:100/125/134" 597) +  ("hokeypokey" "sRGB:187/142/52" 596) +  ("hitpink" "sRGB:253/164/112" 595) +  ("hitgrey" "sRGB:161/169/168" 594) +  ("hippiepink" "sRGB:171/73/92" 593) +  ("hippiegreen" "sRGB:96/138/90" 592) +  ("hippieblue" "sRGB:73/136/154" 591) +  ("hintofyellow" "sRGB:246/245/215" 590) +  ("hintofred" "sRGB:245/239/235" 589) +  ("hintofgrey" "sRGB:223/221/214" 588) +  ("hintofgreen" "sRGB:223/241/214" 587) +  ("himalaya" "sRGB:115/99/48" 586) +  ("hillary" "sRGB:167/160/126" 585) +  ("highland" "sRGB:122/148/97" 584) +  ("highball" "sRGB:146/140/60" 583) +  ("hibiscus" "sRGB:179/54/84" 582) +  ("hemp" "sRGB:152/125/115" 581) +  ("hemlock" "sRGB:105/104/75" 580) +  ("heavymetal" "sRGB:70/71/62" 579) +  ("heatheredgrey" "sRGB:148/140/126" 578) +  ("heather" "sRGB:174/187/193" 577) +  ("heath" "sRGB:79/42/44" 576) +  ("hawkesblue" "sRGB:210/218/237" 575) +  ("hawaiiantan" "sRGB:153/82/43" 574) +  ("havelockblue" "sRGB:87/132/193" 573) +  ("havana" "sRGB:59/43/44" 572) +  ("harvestgold" "sRGB:234/183/106" 571) +  ("harp" "sRGB:203/206/192" 570) +  ("hampton" "sRGB:232/212/162" 569) +  ("halfspanishwhite" "sRGB:230/219/199" 568) +  ("halfpearllusta" "sRGB:241/234/215" 567) +  ("halfdutchwhite" "sRGB:251/240/214" 566) +  ("halfcolonialwhite" "sRGB:242/229/191" 565) +  ("halfbaked" "sRGB:85/143/147" 564) +  ("halfandhalf" "sRGB:237/231/200" 563) +  ("haiti" "sRGB:44/42/53" 562) +  ("hairyheath" "sRGB:99/53/40" 561) +  ("hacienda" "sRGB:158/128/34" 560) +  ("gurkha" "sRGB:152/145/113" 559) +  ("gunsmoke" "sRGB:122/124/118" 558) +  ("gunmetal" "sRGB:44/53/57" 557) +  ("gunpowder" "sRGB:72/71/83" 556) +  ("gumbo" "sRGB:113/143/138" 555) +  ("gumleaf" "sRGB:172/201/178" 554) +  ("gullgrey" "sRGB:164/173/176" 553) +  ("gulfstream" "sRGB:116/178/168" 552) +  ("gulfblue" "sRGB:52/63/92" 551) +  ("guardsmanred" "sRGB:149/46/49" 550) +  ("greysuit" "sRGB:147/145/160" 549) +  ("greyolive" "sRGB:161/154/127" 548) +  ("greynurse" "sRGB:209/211/204" 547) +  ("greynickel" "sRGB:189/186/174" 546) +  ("greygreen" "sRGB:82/86/54" 545) +  ("greychateau" "sRGB:159/163/167" 544) +  ("grenadier" "sRGB:193/77/54" 543) +  ("greenstone" "sRGB:36/108/70" 542) +  ("greenwhite" "sRGB:222/221/203" 541) +  ("greenwaterloo" "sRGB:44/45/36" 540) +  ("greenvogue" "sRGB:35/65/78" 539) +  ("greenspring" "sRGB:169/175/153" 538) +  ("greensmoke" "sRGB:156/166/100" 537) +  ("greenpea" "sRGB:38/98/66" 536) +  ("greenmist" "sRGB:191/194/152" 535) +  ("greenleaf" "sRGB:82/107/45" 534) +  ("greenkelp" "sRGB:57/61/42" 533) +  ("greenhouse" "sRGB:62/99/52" 532) +  ("gravel" "sRGB:74/75/70" 531) +  ("grasshopper" "sRGB:122/114/41" 530) +  ("graphite" "sRGB:56/52/40" 529) +  ("grape" "sRGB:65/61/75" 528) +  ("grannysmith" "sRGB:123/148/140" 527) +  ("grannyapple" "sRGB:197/231/205" 526) +  ("granitegreen" "sRGB:139/130/101" 525) +  ("grandis" "sRGB:255/205/115" 524) +  ("grainbrown" "sRGB:202/184/162" 523) +  ("governorbay" "sRGB:81/85/155" 522) +  ("gothic" "sRGB:105/136/144" 521) +  ("gossip" "sRGB:159/211/133" 520) +  ("gossamer" "sRGB:57/159/134" 519) +  ("gorse" "sRGB:253/227/54" 518) +  ("gordonsgreen" "sRGB:41/51/43" 517) +  ("gondola" "sRGB:55/51/50" 516) +  ("goldentainoi" "sRGB:255/193/82" 515) +  ("goldensand" "sRGB:234/206/106" 514) +  ("goldenglow" "sRGB:249/215/126" 513) +  ("goldenfizz" "sRGB:235/222/49" 512) +  ("goldendream" "sRGB:241/204/43" 511) +  ("goldenbell" "sRGB:202/129/54" 510) +  ("goldtips" "sRGB:226/178/39" 509) +  ("golddrop" "sRGB:213/108/48" 508) +  ("goblin" "sRGB:52/83/61" 507) +  ("goben" "sRGB:120/110/76" 506) +  ("gladegreen" "sRGB:95/129/81" 505) +  ("glacier" "sRGB:120/177/191" 504) +  ("givry" "sRGB:235/212/174" 503) +  ("ginfizz" "sRGB:248/234/202" 502) +  ("gin" "sRGB:217/223/205" 501) +  ("gimblet" "sRGB:185/173/97" 500) +  ("gigas" "sRGB:86/71/134" 499) +  ("ghost" "sRGB:192/191/199" 498) +  ("geyser" "sRGB:203/208/207" 497) +  ("geraldine" "sRGB:231/123/117" 496) +  ("genoa" "sRGB:49/121/109" 495) +  ("geebung" "sRGB:197/131/46" 494) +  ("galliano" "sRGB:216/167/35" 493) +  ("gallery" "sRGB:220/215/209" 492) +  ("gablegreen" "sRGB:44/70/65" 491) +  ("fuscousgrey" "sRGB:60/59/60" 490) +  ("fungreen" "sRGB:21/99/61" 489) +  ("funblue" "sRGB:51/80/131" 488) +  ("fuelyellow" "sRGB:209/144/51" 487) +  ("fuego" "sRGB:194/214/46" 486) +  ("fuchsia" "sRGB:123/92/183" 485) +  ("fruitsalad" "sRGB:75/163/81" 484) +  ("frostee" "sRGB:219/229/210" 483) +  ("frostedmint" "sRGB:226/242/228" 482) +  ("frost" "sRGB:225/228/197" 481) +  ("froly" "sRGB:229/109/117" 480) +  ("fringyflower" "sRGB:180/225/187" 479) +  ("friargrey" "sRGB:134/131/122" 478) +  ("frenchpass" "sRGB:164/210/224" 477) +  ("frenchlilac" "sRGB:222/183/217" 476) +  ("frenchgrey" "sRGB:191/189/193" 475) +  ("frangipani" "sRGB:255/215/160" 474) +  ("fountainblue" "sRGB:101/173/178" 473) +  ("forgetmenot" "sRGB:253/239/219" 472) +  ("forestgreen" "sRGB:51/66/49" 471) +  ("foggygrey" "sRGB:167/166/157" 470) +  ("fog" "sRGB:213/199/232" 469) +  ("foam" "sRGB:208/234/232" 468) +  ("flirt" "sRGB:122/46/77" 467) +  ("flint" "sRGB:113/110/97" 466) +  ("flax" "sRGB:130/133/98" 465) +  ("flamingo" "sRGB:225/99/79" 464) +  ("flamenco" "sRGB:234/134/69" 463) +  ("flamered" "sRGB:134/40/46" 462) +  ("flamepea" "sRGB:190/92/72" 461) +  ("firefly" "sRGB:49/70/67" 460) +  ("firebush" "sRGB:224/152/66" 459) +  ("fire" "sRGB:143/63/42" 458) +  ("fiord" "sRGB:75/90/98" 457) +  ("finn" "sRGB:105/69/84" 456) +  ("finlandia" "sRGB:97/117/91" 455) +  ("finch" "sRGB:117/120/90" 454) +  ("fijigreen" "sRGB:99/111/34" 453) +  ("fieryorange" "sRGB:177/89/47" 452) +  ("feta" "sRGB:219/224/208" 451) +  ("festival" "sRGB:234/204/74" 450) +  ("ferra" "sRGB:135/106/104" 449) +  ("fernfrond" "sRGB:87/94/46" 448) +  ("fern" "sRGB:54/92/52" 447) +  ("feijoa" "sRGB:165/215/133" 446) +  ("fedora" "sRGB:98/86/101" 445) +  ("fantasy" "sRGB:242/230/221" 444) +  ("falcon" "sRGB:110/90/91" 443) +  ("fairpink" "sRGB:243/229/220" 442) +  ("everglade" "sRGB:38/67/52" 441) +  ("eveningsea" "sRGB:38/96/79" 440) +  ("eunry" "sRGB:205/165/156" 439) +  ("eucalyptus" "sRGB:50/151/96" 438) +  ("eternity" "sRGB:45/47/40" 437) +  ("espresso" "sRGB:78/49/45" 436) +  ("equator" "sRGB:218/177/96" 435) +  ("envy" "sRGB:139/165/143" 434) +  ("englishwalnut" "sRGB:71/59/47" 433) +  ("englishholly" "sRGB:39/66/52" 432) +  ("energyyellow" "sRGB:245/215/82" 431) +  ("endeavour" "sRGB:41/89/139" 430) +  ("empress" "sRGB:124/113/115" 429) +  ("emperor" "sRGB:80/73/74" 428) +  ("eminence" "sRGB:110/57/116" 427) +  ("embers" "sRGB:140/63/48" 426) +  ("elm" "sRGB:41/123/118" 425) +  ("elfgreen" "sRGB:27/138/107" 424) +  ("elephant" "sRGB:36/54/64" 423) +  ("elsalva" "sRGB:143/78/69" 422) +  ("elpaso" "sRGB:57/57/44" 421) +  ("eggwhite" "sRGB:224/200/141" 420) +  ("eggsour" "sRGB:249/228/197" 419) +  ("edward" "sRGB:151/164/154" 418) +  ("edgewater" "sRGB:193/216/197" 417) +  ("eden" "sRGB:38/98/85" 416) +  ("ecstasy" "sRGB:201/97/56" 415) +  ("ecruwhite" "sRGB:214/209/192" 414) +  ("eclipse" "sRGB:63/57/57" 413) +  ("echoblue" "sRGB:164/175/205" 412) +  ("ebonyclay" "sRGB:50/52/56" 411) +  ("ebony" "sRGB:49/51/55" 410) +  ("ebb" "sRGB:230/216/212" 409) +  ("easternblue" "sRGB:0/135/159" 408) +  ("eastside" "sRGB:170/140/188" 407) +  ("eastbay" "sRGB:71/82/110" 406) +  ("earlydawn" "sRGB:251/242/219" 405) +  ("earlsgreen" "sRGB:184/167/34" 404) +  ("eagle" "sRGB:176/172/148" 403) +  ("dutchwhite" "sRGB:240/223/187" 402) +  ("dustygrey" "sRGB:172/155/155" 401) +  ("duststorm" "sRGB:229/202/192" 400) +  ("dune" "sRGB:81/79/74" 399) +  ("drover" "sRGB:251/235/155" 398) +  ("driftwood" "sRGB:143/111/72" 397) +  ("downy" "sRGB:111/210/190" 396) +  ("downriver" "sRGB:42/52/74" 395) +  ("dovegrey" "sRGB:119/118/114" 394) +  ("doublespanishwhite" "sRGB:210/195/163" 393) +  ("doublepearllusta" "sRGB:233/220/190" 392) +  ("doublecolonialwhite" "sRGB:228/207/153" 391) +  ("dorado" "sRGB:110/95/86" 390) +  ("donkeybrown" "sRGB:129/110/92" 389) +  ("donjuan" "sRGB:90/79/81" 388) +  ("domino" "sRGB:108/91/76" 387) +  ("dolphin" "sRGB:106/104/115" 386) +  ("dolly" "sRGB:245/241/113" 385) +  ("dixie" "sRGB:205/132/49" 384) +  ("disco" "sRGB:137/45/79" 383) +  ("dingley" "sRGB:96/124/71" 382) +  ("diesel" "sRGB:50/44/43" 381) +  ("diserria" "sRGB:212/145/93" 380) +  ("dew" "sRGB:231/242/233" 379) +  ("desertstorm" "sRGB:237/231/224" 378) +  ("desert" "sRGB:161/95/59" 377) +  ("derby" "sRGB:249/228/198" 376) +  ("deluge" "sRGB:130/114/164" 375) +  ("delta" "sRGB:153/155/149" 374) +  ("dell" "sRGB:72/101/49" 373) +  ("delrio" "sRGB:181/153/142" 372) +  ("deepteal" "sRGB:25/68/60" 371) +  ("deepsea" "sRGB:22/126/101" 370) +  ("deepoak" "sRGB:61/50/44" 369) +  ("deepkoamaru" "sRGB:52/52/103" 368) +  ("deepfir" "sRGB:25/57/37" 367) +  ("deepcove" "sRGB:58/78/88" 366) +  ("deepbronze" "sRGB:81/65/45" 365) +  ("deepblush" "sRGB:227/111/138" 364) +  ("deco" "sRGB:204/207/130" 363) +  ("deyork" "sRGB:133/202/135" 362) +  ("dawnpink" "sRGB:230/214/205" 361) +  ("dawn" "sRGB:159/157/145" 360) +  ("darktan" "sRGB:97/45/45" 359) +  ("darkslate" "sRGB:70/83/82" 358) +  ("darkrum" "sRGB:69/54/43" 357) +  ("darkrimu" "sRGB:112/65/40" 356) +  ("darkoak" "sRGB:85/52/43" 355) +  ("darkebony" "sRGB:55/49/43" 354) +  ("danube" "sRGB:91/137/192" 353) +  ("dallas" "sRGB:102/74/45" 352) +  ("daisybush" "sRGB:91/62/144" 351) +  ("dairycream" "sRGB:237/210/164" 350) +  ("daintree" "sRGB:39/63/65" 349) +  ("cyprus" "sRGB:15/70/69" 348) +  ("cuttysark" "sRGB:92/129/115" 347) +  ("curiousblue" "sRGB:61/133/184" 346) +  ("cupid" "sRGB:245/178/197" 345) +  ("cumulus" "sRGB:245/244/193" 344) +  ("cumin" "sRGB:120/68/48" 343) +  ("cubantan" "sRGB:54/45/38" 342) +  ("crusta" "sRGB:243/134/83" 341) +  ("crusoe" "sRGB:22/91/49" 340) +  ("cruise" "sRGB:180/226/213" 339) +  ("crowshead" "sRGB:50/49/46" 338) +  ("crownofthorns" "sRGB:118/60/51" 337) +  ("crocodile" "sRGB:112/105/80" 336) +  ("crete" "sRGB:119/113/43" 335) +  ("creole" "sRGB:57/50/39" 334) +  ("cremedebanane" "sRGB:224/193/97" 333) +  ("creamcan" "sRGB:238/192/81" 332) +  ("creambrulee" "sRGB:255/227/155" 331) +  ("craterbrown" "sRGB:77/62/60" 330) +  ("cranberry" "sRGB:180/56/100" 329) +  ("crail" "sRGB:166/86/72" 328) +  ("crabapple" "sRGB:135/56/47" 327) +  ("cowboy" "sRGB:68/55/54" 326) +  ("covegrey" "sRGB:52/63/92" 325) +  ("countygreen" "sRGB:27/75/53" 324) +  ("cottonseed" "sRGB:191/186/175" 323) +  ("costadelsol" "sRGB:98/93/42" 322) +  ("cosmos" "sRGB:252/213/207" 321) +  ("cosmic" "sRGB:121/77/96" 320) +  ("corvette" "sRGB:233/186/129" 319) +  ("cornflower" "sRGB:255/171/160" 318) +  ("cornharvest" "sRGB:141/112/42" 317) +  ("cornfield" "sRGB:248/243/196" 316) +  ("corn" "sRGB:223/170/40" 315) +  ("cork" "sRGB:90/76/66" 314) +  ("coriander" "sRGB:187/181/141" 313) +  ("corduroy" "sRGB:64/77/73" 312) +  ("coraltree" "sRGB:171/110/103" 311) +  ("coralcandy" "sRGB:245/208/201" 310) +  ("coral" "sRGB:192/176/147" 309) +  ("copperrust" "sRGB:149/82/76" 308) +  ("coppercanyon" "sRGB:119/66/44" 307) +  ("contessa" "sRGB:193/111/104" 306) +  ("conifer" "sRGB:177/221/82" 305) +  ("congobrown" "sRGB:101/77/73" 304) +  ("confetti" "sRGB:221/203/70" 303) +  ("concrete" "sRGB:210/209/205" 302) +  ("concord" "sRGB:130/127/121" 301) +  ("conch" "sRGB:160/177/174" 300) +  ("como" "sRGB:76/120/92" 299) +  ("comet" "sRGB:99/99/115" 298) +  ("colonialwhite" "sRGB:233/215/171" 297) +  ("coldturkey" "sRGB:202/181/178" 296) +  ("coldpurple" "sRGB:157/138/191" 295) +  ("cola" "sRGB:60/47/35" 294) +  ("cognac" "sRGB:154/70/61" 293) +  ("coffeebean" "sRGB:54/45/38" 292) +  ("coffee" "sRGB:114/103/81" 291) +  ("codgrey" "sRGB:45/48/50" 290) +  ("coconutcream" "sRGB:225/218/187" 289) +  ("cocoabrown" "sRGB:53/40/30" 288) +  ("cocoabean" "sRGB:79/56/53" 287) +  ("cobalt" "sRGB:39/60/90" 286) +  ("clover" "sRGB:71/86/47" 285) +  ("cloudy" "sRGB:176/169/159" 284) +  ("cloudburst" "sRGB:53/62/79" 283) +  ("cloud" "sRGB:194/188/177" 282) +  ("clinker" "sRGB:70/54/35" 281) +  ("clementine" "sRGB:193/79/59" 280) +  ("clearday" "sRGB:223/239/234" 279) +  ("claycreek" "sRGB:137/126/89" 278) +  ("classicrose" "sRGB:244/200/219" 277) +  ("claret" "sRGB:110/34/51" 276) +  ("clamshell" "sRGB:210/179/169" 275) +  ("clairvoyant" "sRGB:104/59/125" 274) +  ("citrus" "sRGB:159/183/10" 273) +  ("citron" "sRGB:142/154/33" 272) +  ("cioccolato" "sRGB:93/59/46" 271) +  ("cinnamon" "sRGB:123/72/43" 270) +  ("cinderella" "sRGB:251/215/204" 269) +  ("cinder" "sRGB:36/42/46" 268) +  ("cigar" "sRGB:125/78/56" 267) +  ("chromewhite" "sRGB:202/199/183" 266) +  ("christine" "sRGB:191/101/46" 265) +  ("christi" "sRGB:113/169/29" 264) +  ("christalle" "sRGB:56/33/97" 263) +  ("chocolate" "sRGB:61/35/39" 262) +  ("chinook" "sRGB:157/211/168" 261) +  ("chino" "sRGB:184/173/138" 260) +  ("chinaivory" "sRGB:251/243/211" 259) +  ("chileanheath" "sRGB:249/247/222" 258) +  ("chileanfire" "sRGB:208/94/52" 257) +  ("chiffon" "sRGB:240/245/187" 256) +  ("chicago" "sRGB:91/93/86" 255) +  ("chetwodeblue" "sRGB:102/111/180" 254) +  ("cherub" "sRGB:245/215/220" 253) +  ("cherrywood" "sRGB:78/49/46" 252) +  ("cherrypie" "sRGB:55/45/82" 251) +  ("cherokee" "sRGB:245/205/130" 250) +  ("chenin" "sRGB:222/195/113" 249) +  ("chelseagem" "sRGB:149/83/47" 248) +  ("chelseacucumber" "sRGB:136/169/91" 247) +  ("chathamsblue" "sRGB:44/89/113" 246) +  ("chatelle" "sRGB:179/171/182" 245) +  ("chateaugreen" "sRGB:65/159/89" 244) +  ("charm" "sRGB:208/116/139" 243) +  ("charlotte" "sRGB:164/220/230" 242) +  ("chardonnay" "sRGB:255/200/120" 241) +  ("chardon" "sRGB:248/234/223" 240) +  ("charade" "sRGB:57/64/67" 239) +  ("chantilly" "sRGB:237/184/199" 238) +  ("champagne" "sRGB:238/217/182" 237) +  ("chamois" "sRGB:232/205/154" 236) +  ("chambray" "sRGB:71/88/119" 235) +  ("chalky" "sRGB:223/194/129" 234) +  ("chaletgreen" "sRGB:90/110/65" 233) +  ("chablis" "sRGB:253/233/224" 232) +  ("ceramic" "sRGB:223/221/214" 231) +  ("cement" "sRGB:133/113/88" 230) +  ("celtic" "sRGB:43/63/54" 229) +  ("cello" "sRGB:58/78/95" 228) +  ("celeste" "sRGB:210/210/192" 227) +  ("celery" "sRGB:180/192/76" 226) +  ("cedar" "sRGB:70/52/48" 225) +  ("cesoir" "sRGB:146/113/167" 224) +  ("cavernpink" "sRGB:224/184/177" 223) +  ("catskillwhite" "sRGB:224/228/220" 222) +  ("catalinablue" "sRGB:39/60/90" 221) +  ("castro" "sRGB:68/35/47" 220) +  ("casper" "sRGB:170/181/184" 219) +  ("cashmere" "sRGB:209/179/153" 218) +  ("cascade" "sRGB:140/168/160" 217) +  ("casal" "sRGB:63/84/90" 216) +  ("casablanca" "sRGB:240/178/83" 215) +  ("carouselpink" "sRGB:248/219/224" 214) +  ("carnabytan" "sRGB:91/58/36" 213) +  ("carla" "sRGB:245/249/203" 212) +  ("carissma" "sRGB:230/128/149" 211) +  ("careyspink" "sRGB:201/154/160" 210) +  ("cardinal" "sRGB:138/36/78" 209) +  ("cardingreen" "sRGB:27/52/39" 208) +  ("cararra" "sRGB:235/229/213" 207) +  ("caramel" "sRGB:255/213/154" 206) +  ("capri" "sRGB:48/67/106" 205) +  ("caper" "sRGB:175/193/130" 204) +  ("capepalliser" "sRGB:117/72/47" 203) +  ("capehoney" "sRGB:254/224/165" 202) +  ("capecod" "sRGB:78/85/82" 201) +  ("canvas" "sRGB:163/153/119" 200) +  ("cannonpink" "sRGB:142/81/100" 199) +  ("cannonblack" "sRGB:51/44/34" 198) +  ("candlelight" "sRGB:224/157/55" 197) +  ("canary" "sRGB:226/230/77" 196) +  ("cancan" "sRGB:208/138/155" 195) +  ("camouflage" "sRGB:79/77/50" 194) +  ("cameo" "sRGB:204/164/131" 193) +  ("camelot" "sRGB:128/58/75" 192) +  ("camarone" "sRGB:32/105/55" 191) +  ("calypso" "sRGB:61/113/136" 190) +  ("california" "sRGB:233/140/58" 189) +  ("calico" "sRGB:213/177/133" 188) +  ("caferoyale" "sRGB:106/73/40" 187) +  ("cadillac" "sRGB:152/73/97" 186) +  ("cactus" "sRGB:91/111/85" 185) +  ("cabbagepont" "sRGB:76/85/68" 184) +  ("cabaret" "sRGB:205/82/108" 183) +  ("cabsav" "sRGB:74/46/50" 182) +  ("butterywhite" "sRGB:241/235/218" 181) +  ("buttermilk" "sRGB:246/224/164" 180) +  ("butterflybush" "sRGB:104/87/140" 179) +  ("butteredrum" "sRGB:157/112/46" 178) +  ("buttercup" "sRGB:218/148/41" 177) +  ("bush" "sRGB:37/70/54" 176) +  ("burntcrimson" "sRGB:88/33/36" 175) +  ("burningsand" "sRGB:208/131/99" 174) +  ("burnham" "sRGB:35/69/55" 173) +  ("burgundy" "sRGB:101/37/37" 172) +  ("bunting" "sRGB:43/52/73" 171) +  ("bunker" "sRGB:41/44/47" 170) +  ("bullshot" "sRGB:117/68/43" 169) +  ("bulgarianrose" "sRGB:72/36/39" 168) +  ("buddhagold" "sRGB:188/155/27" 167) +  ("bud" "sRGB:165/168/143" 166) +  ("buccaneer" "sRGB:110/81/80" 165) +  ("bubbles" "sRGB:230/242/234" 164) +  ("brownpod" "sRGB:60/36/27" 163) +  ("brownderby" "sRGB:89/69/55" 162) +  ("brownbramble" "sRGB:83/51/30" 161) +  ("broom" "sRGB:238/204/36" 160) +  ("bronzetone" "sRGB:67/76/40" 159) +  ("bronzeolive" "sRGB:88/76/37" 158) +  ("bronze" "sRGB:73/59/47" 157) +  ("bronco" "sRGB:167/151/129" 156) +  ("brightsun" "sRGB:236/189/44" 155) +  ("brightred" "sRGB:146/42/49" 154) +  ("brightgrey" "sRGB:87/89/93" 153) +  ("bridesmaid" "sRGB:250/230/223" 152) +  ("bridalheath" "sRGB:248/235/221" 151) +  ("breakerbay" "sRGB:81/123/120" 150) +  ("brazil" "sRGB:129/91/40" 149) +  ("brandyrose" "sRGB:182/133/122" 148) +  ("brandypunch" "sRGB:192/124/64" 147) +  ("brandy" "sRGB:220/182/138" 146) +  ("bracken" "sRGB:91/61/39" 145) +  ("bourbon" "sRGB:175/108/62" 144) +  ("bouquet" "sRGB:167/129/153" 143) +  ("boulder" "sRGB:124/129/124" 142) +  ("bottlegreen" "sRGB:37/70/54" 141) +  ("botticelli" "sRGB:146/172/180" 140) +  ("bostonblue" "sRGB:67/142/172" 139) +  ("bossanova" "sRGB:76/61/78" 138) +  ("bordeaux" "sRGB:76/28/36" 137) +  ("bone" "sRGB:219/194/171" 136) +  ("bondiblue" "sRGB:38/65/107" 135) +  ("bonjour" "sRGB:223/215/210" 134) +  ("bombay" "sRGB:174/174/173" 133) +  ("bokaragrey" "sRGB:42/39/37" 132) +  ("blush" "sRGB:181/80/103" 131) +  ("blumine" "sRGB:48/92/113" 130) +  ("bluezodiac" "sRGB:60/67/84" 129) +  ("bluewhale" "sRGB:30/52/66" 128) +  ("bluestone" "sRGB:22/100/97" 127) +  ("bluesmoke" "sRGB:120/133/122" 126) +  ("blueromance" "sRGB:216/240/210" 125) +  ("bluemarguerite" "sRGB:106/91/177" 124) +  ("bluelagoon" "sRGB:0/98/111" 123) +  ("bluehaze" "sRGB:189/186/206" 122) +  ("bluegem" "sRGB:75/60/142" 121) +  ("bluedianne" "sRGB:53/81/79" 120) +  ("bluediamond" "sRGB:75/45/114" 119) +  ("bluechill" "sRGB:64/143/144" 118) +  ("bluecharcoal" "sRGB:38/43/47" 117) +  ("bluechalk" "sRGB:227/214/233" 116) +  ("bluebell" "sRGB:57/45/115" 115) +  ("bluebayoux" "sRGB:98/119/126" 114) +  ("bluebark" "sRGB:30/39/44" 113) +  ("blossom" "sRGB:223/177/182" 112) +  ("bleachedcedar" "sRGB:69/70/71" 111) +  ("bleachwhite" "sRGB:235/225/206" 110) +  ("blanc" "sRGB:217/208/193" 109) +  ("blackwood" "sRGB:63/55/46" 108) +  ("blackcurrant" "sRGB:46/24/59" 107) +  ("blackberry" "sRGB:67/24/47" 106) +  ("blackwhite" "sRGB:229/228/219" 105) +  ("blacksqueeze" "sRGB:229/230/223" 104) +  ("blackrussian" "sRGB:36/37/43" 103) +  ("blackrose" "sRGB:83/41/52" 102) +  ("blackrock" "sRGB:44/45/60" 101) +  ("blackpepper" "sRGB:60/55/49" 100) +  ("blackpearl" "sRGB:30/39/44" 99) +  ("blackmarlin" "sRGB:56/55/64" 98) +  ("blackmagic" "sRGB:51/44/34" 97) +  ("blackhaze" "sRGB:224/222/215" 96) +  ("blackforest" "sRGB:44/50/39" 95) +  ("blackbean" "sRGB:35/46/38" 94) +  ("bizarre" "sRGB:231/210/200" 93) +  ("bitterlemon" "sRGB:210/219/50" 92) +  ("bitter" "sRGB:136/137/108" 91) +  ("bisonhide" "sRGB:181/172/148" 90) +  ("bismark" "sRGB:72/108/122" 89) +  ("biscay" "sRGB:47/60/83" 88) +  ("birdflower" "sRGB:208/193/23" 87) +  ("birch" "sRGB:63/55/38" 86) +  ("bilobaflower" "sRGB:174/153/210" 85) +  ("bilbao" "sRGB:62/128/39" 84) +  ("bigstone" "sRGB:51/64/70" 83) +  ("bianca" "sRGB:244/239/224" 82) +  ("berylgreen" "sRGB:188/191/168" 81) +  ("bermudagrey" "sRGB:111/140/159" 80) +  ("bermuda" "sRGB:134/210/193" 79) +  ("beeswax" "sRGB:233/215/171" 78) +  ("beautybush" "sRGB:235/185/179" 77) +  ("bean" "sRGB:74/53/49" 76) +  ("bazaar" "sRGB:143/119/119" 75) +  ("bayofmany" "sRGB:53/62/100" 74) +  ("bayleaf" "sRGB:123/177/141" 73) +  ("battleshipgrey" "sRGB:81/87/79" 72) +  ("bastille" "sRGB:44/44/50" 71) +  ("barossa" "sRGB:69/46/57" 70) +  ("barleywhite" "sRGB:247/229/183" 69) +  ("barleycorn" "sRGB:182/147/92" 68) +  ("barberry" "sRGB:210/198/31" 67) +  ("banjul" "sRGB:52/50/45" 66) +  ("bandicoot" "sRGB:135/132/102" 65) +  ("bamboo" "sRGB:186/111/63" 64) +  ("balticsea" "sRGB:60/61/62" 63) +  ("balihai" "sRGB:132/156/169" 62) +  ("bajawhite" "sRGB:240/223/187" 61) +  ("bahia" "sRGB:169/192/28" 60) +  ("bahamablue" "sRGB:37/89/127" 59) +  ("azure" "sRGB:78/105/154" 58) +  ("aztec" "sRGB:41/52/50" 57) +  ("azalea" "sRGB:249/192/196" 56) +  ("axolotl" "sRGB:99/119/90" 55) +  ("avocado" "sRGB:149/152/107" 54) +  ("australianmint" "sRGB:239/248/170" 53) +  ("aubergine" "sRGB:55/37/40" 52) +  ("auchico" "sRGB:158/103/89" 51) +  ("atomic" "sRGB:61/75/82" 50) +  ("atoll" "sRGB:43/121/122" 49) +  ("atlantis" "sRGB:156/208/59" 48) +  ("athsspecial" "sRGB:213/203/178" 47) +  ("athensgrey" "sRGB:220/221/221" 46) +  ("astronautblue" "sRGB:33/69/89" 45) +  ("astronaut" "sRGB:68/81/114" 44) +  ("astral" "sRGB:55/111/137" 43) +  ("astra" "sRGB:237/213/166" 42) +  ("asphalt" "sRGB:42/41/34" 41) +  ("ashbrown" "sRGB:73/63/47" 40) +  ("ash" "sRGB:190/186/167" 39) +  ("arrowtown" "sRGB:130/122/103" 38) +  ("armadillo" "sRGB:72/74/70" 37) +  ("arapawa" "sRGB:39/74/93" 36) +  ("aquamarine" "sRGB:32/89/72" 35) +  ("aquasqueeze" "sRGB:219/228/220" 34) +  ("aquaspring" "sRGB:232/243/232" 33) +  ("aquahaze" "sRGB:217/221/213" 32) +  ("aqua" "sRGB:146/211/202" 31) +  ("apricotwhite" "sRGB:247/240/219" 30) +  ("apricot" "sRGB:228/143/103" 29) +  ("applegreen" "sRGB:222/234/220" 28) +  ("appleblossom" "sRGB:169/82/73" 27) +  ("apple" "sRGB:102/179/72" 26) +  ("apache" "sRGB:211/169/92" 25) +  ("anzac" "sRGB:198/142/63" 24) +  ("antiquebrass" "sRGB:108/70/31" 23) +  ("anakiwa" "sRGB:140/206/234" 22) +  ("amulet" "sRGB:125/157/114" 21) +  ("amour" "sRGB:245/230/234" 20) +  ("amethystsmoke" "sRGB:149/135/156" 19) +  ("americano" "sRGB:138/125/114" 18) +  ("amazon" "sRGB:56/123/84" 17) +  ("aluminium" "sRGB:132/135/137" 16) +  ("alto" "sRGB:205/198/197" 15) +  ("alpine" "sRGB:173/138/59" 14) +  ("almondfrost" "sRGB:154/134/120" 13) +  ("allports" "sRGB:31/106/125" 12) +  ("alerttan" "sRGB:149/78/44" 11) +  ("albescentwhite" "sRGB:225/218/203" 10) +  ("alabaster" "sRGB:242/240/230" 9) +  ("akaroa" "sRGB:190/178/154" 8) +  ("afghantan" "sRGB:144/94/38" 7) +  ("affair" "sRGB:116/80/133" 6) +  ("aeroblue" "sRGB:192/232/213" 5) +  ("acorn" "sRGB:115/99/48" 4) +  ("acapulco" "sRGB:117/170/148" 3) +  ("acadia" "sRGB:53/49/44" 2) +  ("abbey" "sRGB:73/81/84" 1)   )   (7    (3 #f order #f ordinal) diff --git a/defmacex.scm b/defmacex.scm index 71d7b6c..2b2cf88 100644 --- a/defmacex.scm +++ b/defmacex.scm @@ -41,7 +41,7 @@  ;@  (define (defmacro:expand* e)    (if (pair? e) -      (let* ((c (macroexpand-1 e))) +      (let* ((c (macroexpand e)))  	(if (not (eq? e c))  	    (defmacro:expand* c)  	    (case (car e) @@ -64,7 +64,7 @@  	(else (slib:error 'not 'matrix matrix))))  ;;@body -;;Returns the (ones-based) array form of @1. +;;Returns the array form of @1.  (define (matrix->array matrix)    (cond ((array? matrix)  	 (if (not (eqv? 2 (array-rank matrix))) @@ -157,7 +157,7 @@  ;;@body  ;;@1 must be a square matrix. -;;If @1 is singlar, then @0 returns #f; otherwise @0 returns the +;;If @1 is singular, then @0 returns #f; otherwise @0 returns the  ;;@code{matrix:product} inverse of @1.  (define (matrix:inverse matrix)    (let* ((mat (matrix->lists matrix)) @@ -14,7 +14,7 @@ Returns the list-of-lists form of @var{matrix}.  @defun matrix->array matrix -Returns the (ones-based) array form of @var{matrix}. +Returns the array form of @var{matrix}.  @end defun @@ -65,7 +65,7 @@ Returns matrix @var{m1} times scalar @var{z}.  @defun matrix:inverse matrix  @var{matrix} must be a square matrix. -If @var{matrix} is singlar, then @code{matrix:inverse} returns #f; otherwise @code{matrix:inverse} returns the +If @var{matrix} is singular, then @code{matrix:inverse} returns #f; otherwise @code{matrix:inverse} returns the  @code{matrix:product} inverse of @var{matrix}.  @end defun @@ -20,7 +20,7 @@  (require 'filename)  (require 'line-i/o)  (require 'system) -(require 'glob) +(require 'filename)  ;;@code{(require 'directory)}  ;;@ftindex directory @@ -35,11 +35,15 @@  ;;; (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) -  (case (software-type) -    ((unix)	 "/usr/share/elk/") -    ((vms)	"scheme$src:") -    ((ms-dos)	"C:\\scheme\\"))) +(define implementation-vicinity +  (let ((impl-path +	 (or (getenv "ELK_IMPLEMENTATION_PATH") +	     (case (software-type) +	       ((unix)	 "/usr/share/elk/") +	       ((vms)	 "scheme$src:") +	       ((ms-dos) "C:\\scheme\\") +	       (else ""))))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -107,8 +111,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -148,6 +151,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -191,11 +195,11 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO  ;;;	record				;has user defined data structures  	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -217,9 +221,9 @@  ;------------ -(define program-arguments -  (lambda () -    (cons "undefined-program-name" (command-line-args)))) +(define (program-arguments) +  (cons (symbol->string (scheme-implementation-type)) +	(command-line-args)))  ; EXACT? appears to always return #f which isn't very useful.  ; Approximating it with INTEGER? at least means that some @@ -352,10 +356,6 @@  (define defmacro:eval slib:eval)  (define defmacro:load load) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args @@ -432,4 +432,12 @@  ;;; At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source)	;WARNING: redefining LOAD +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  (slib:load (in-vicinity (library-vicinity) "require")) @@ -1,13 +1,12 @@ - -@node Copying This Manual, How to use this License for your documents, About this manual, About this manual -@subsection Copying This Manual - -@cindex FDL, GNU Free Documentation License +@c The GNU Free Documentation License.  @center Version 1.2, November 2002 +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. +  @display  Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA  02111-1307, USA +51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA  Everyone is permitted to copy and distribute verbatim copies  of this license document, but changing it is not allowed. @@ -407,11 +406,8 @@ number of this License, you may choose any version ever published (not  as a draft) by the Free Software Foundation.  @end enumerate -@c @page -@c @appendixsubsec ADDENDUM: How to use this License for your documents - -@node How to use this License for your documents,  , Copying This Manual, About this manual -@subsection How to use this License for your documents +@page +@heading ADDENDUM: How to use this License for your documents  To use this License in a document you have written, include a copy of  the License in the document and put the following copyright and @@ -430,7 +426,7 @@ license notices just after the title page:  @end smallexample  If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the ``with...Texts.'' line with this: +replace the ``with@dots{}Texts.'' line with this:  @smallexample  @group @@ -452,4 +448,3 @@ to permit their use in free software.  @c Local Variables:  @c ispell-local-pdict: "ispell-dict"  @c End: - diff --git a/gambit.init b/gambit.init index e431160..dce1a07 100644 --- a/gambit.init +++ b/gambit.init @@ -34,19 +34,22 @@  ;;; the directory where any auxillary files to your Scheme  ;;; 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) -     (let ((arg0 (list-ref (argv) 0))) -       (let loop ((i (- (string-length arg0) 1))) -	 (cond ((negative? i) "") -	       ((char=? #\: (string-ref arg0 i)) -		(set! arg0 (substring arg0 0 (+ i 1))) -		(lambda () arg0)) -	       (else (loop (- i 1))))))))) +  (let ((impl-path +	 (or (getenv "GAMBIT_IMPLEMENTATION_PATH") +	     (case (software-type) +	       ((unix) "/usr/local/share/gambc/") +	       ((vms) "scheme$src:") +	       ((ms-dos) "C:\\scheme\\") +	       ((windows) "c:/scheme/") +	       ((macos) +		(let ((arg0 (list-ref (argv) 0))) +		  (let loop ((i (- (string-length arg0) 1))) +		    (cond ((negative? i) "") +			  ((char=? #\: (string-ref arg0 i)) +			   (substring arg0 0 (+ i 1))) +			  (else (loop (- i 1))))))) +	       (else ""))))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -123,8 +126,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -165,6 +167,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -208,7 +211,7 @@  			;; Other common features -	srfi				;srfi-0, COND-EXPAND finds all srfi-* +	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -347,10 +350,6 @@  ;;; SLIB:EVAL is single argument eval using the top-level (user) environment.  (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -385,7 +384,6 @@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  (define print-call-stack identity)	;noop @@ -441,6 +439,14 @@  ;;; At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  (slib:eval '(define-macro (defmacro name parms . body)  	      (set! *defmacros* (cons `(cons ',name (lambda ,parms ,@body))  				      *defmacros*)) @@ -17,7 +17,7 @@  ;promotional, or sales literature without prior written consent in  ;each case. -;;@code{(require 'filename)} or @code{(require 'glob)} +;;@code{(require 'filename)}  ;;@ftindex filename  ;;@ftindex glob @@ -1,4 +1,4 @@ -@code{(require 'filename)} or @code{(require 'glob)} +@code{(require 'filename)}  @ftindex filename  @ftindex glob @@ -3,7 +3,7 @@  ;;;  ;;; This code is in the public domain. -(if (not (and (string<=? "1.6" (version)) (string<? (version) "1.7"))) +(if (not (and (string<=? "1.6" (version)) (string<? (version) "1.8.3")))      (define-module (ice-9 slib)))	; :no-backtrace  (define slib-module (current-module)) @@ -48,8 +48,12 @@  ;;		   (error "Could not find ice-9/q.scm in " %load-path)))  ;;	 (vic (substring path 0 (- (string-length path) 11))))  ;;     (lambda () vic))) +;;  ;;; Rob Browning says %site-dir exists since Guile-1.6 -(define implementation-vicinity %site-dir) +(define implementation-vicinity +  (cond ((and (defined? 'getenv) (getenv "GUILE_IMPLEMENTATION_PATH")) +	 => (lambda (path) (lambda () path))) +	(else %site-dir)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -115,8 +119,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -152,6 +155,13 @@  ;;; initially supported by this implementation.  (define slib:features    (append +      (apply append +	     (map (lambda (sym) (if (defined? sym) (list sym) '())) +		  '(getenv +		    program-arguments +		    current-time +		    char-ready?))) +        '(  	source				;can load scheme source files  					;(SLIB:LOAD-SOURCE "filename") @@ -159,6 +169,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -203,7 +214,7 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -231,19 +242,7 @@  	array  	array-for-each -	) - -	(if (defined? 'getenv) -	    '(getenv) -	    '()) - -	(if (defined? 'current-time) -	    '(current-time) -	    '()) - -	(if (defined? 'char-ready?) -	    '(char-ready?) -	    '()))) +	)))  ;;@ (FILE-POSITION <port> . <k>)  (define (file-position port . args) @@ -379,7 +378,6 @@        (let ((ie (interaction-environment)))  	(lambda (expression)  	  (eval expression ie))))) -;; slib:eval-load definition moved to "require.scm"  ;;; Define SLIB:EXIT to be the implementation procedure to exit or  ;;; return if exiting not supported. @@ -455,7 +453,7 @@  ;;; If your implementation provides R4RS macros:  (define macro:eval slib:eval) -(define macro:load slib:load) +(define macro:load slib:load-source)  (define slib:warn warn)  (define slib:error error) diff --git a/jscheme.init b/jscheme.init index 9e568b7..9a0f0e6 100644 --- a/jscheme.init +++ b/jscheme.init @@ -39,19 +39,20 @@  ;;; the version the scheme implementation loading this file.  (define (scheme-implementation-version) "7.2") +(define (getenv path) +  (define prop (System.getProperty path)) +  (and (not (eq? prop #null)) prop)) +  ;;@ (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside.  (define implementation-vicinity -  (let ((implvic (case (software-type) -		   ((ms-dos)	"C:\\TEMP\\") -		   (else "/tmp/")))) +  (let ((implvic (or (getenv "JSCHEME_IMPLEMENTATION_PATH") +		     (case (software-type) +		       ((ms-dos) "C:\\TEMP\\") +		       (else "/tmp/")))))      (lambda () implvic))) -(define (getenv path) -  (define prop (System.getProperty path)) -  (and (not (eq? prop #null)) prop)) -  (define (slib.zip-on-classpath?)    (let loop ((urls (vector->list (.getURLs (Import.getClassLoader)))))      (if (null? urls) #f @@ -126,8 +127,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -167,6 +167,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -211,7 +212,7 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -337,10 +338,6 @@  	    ((zero? z2) (+ 1 (* z1 z2)))  	    (else (expt z1 z2)))))) -;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -  (define (constant? exp)    (if (pair? exp) (eq? (car exp) 'quote) (not (symbol? exp)))) @@ -428,7 +425,6 @@  ;@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  ;@  (define slib:warn @@ -511,6 +507,14 @@  ;;@ At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  (slib:load (in-vicinity (library-vicinity) "require"))  (define (current-time) (/ (System.currentTimeMillis) 1000)) @@ -24,11 +24,14 @@  ;;@ (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) -  (case (software-type) -    ((unix) "/usr/local/src/kawa/") -    ;;((vms)	"scheme$src:") -    ((ms-dos) "C:\\kawa\\"))) +(define implementation-vicinity +  (let ((impl-path +	 (case (software-type) +	   ((unix) "/usr/local/src/kawa/") +	   ;;((vms) "scheme$src:") +	   ((ms-dos) "C:\\kawa\\") +	   (else "")))) +    (lambda () impl-path)))  ;;@ (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -98,8 +101,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -140,6 +142,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -181,7 +184,7 @@  			;; Other common features -	srfi				;srfi-0, COND-EXPAND finds all srfi-* +	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -302,7 +305,6 @@  ;@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  ;@  (define slib:warn    (lambda args diff --git a/macscheme.init b/macscheme.init index c922bfc..7846135 100644 --- a/macscheme.init +++ b/macscheme.init @@ -72,8 +72,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -113,6 +112,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -156,11 +156,11 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO  ;;;	record				;has user defined data structures  	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -268,13 +268,6 @@  ;;; Return argument  (define (identity x) x) -;;; SLIB:EVAL is single argument eval using the top-level (user) environment. -(define slib:eval eval) - -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -304,6 +297,8 @@        (string->symbol         (string-append "slib:G" (number->string *gensym-counter*)))))) +;;; SLIB:EVAL is single argument eval using the top-level (user) environment. +(define slib:eval eval)  (define base:eval slib:eval)  (define (defmacro:eval x) (base:eval (defmacro:expand* x)))  (define (defmacro:expand* x) @@ -311,7 +306,6 @@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args @@ -362,6 +356,14 @@  ;;; See feature 'COMPILED.  (define slib:load-compiled load) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  ;;; At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) @@ -401,8 +401,8 @@    (lambda (x)      (and (pair? x) (pair? (cdr x)) (eq? (cadr x) '...))))  ;@ -(define macro:eval slib:eval) -(define macro:load slib:load) +(define macro:eval defmacro:eval) +(define macro:load defmacro:load)  (define macro:expand defmacro:expand*)  ;@ define-syntax diff --git a/mitscheme.init b/mitscheme.init index 97d1efc..fdf1c95 100644 --- a/mitscheme.init +++ b/mitscheme.init @@ -46,8 +46,11 @@  ;;; (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) -  (->namestring (system-library-directory-pathname #f))) +(define implementation-vicinity +  (let ((impl-path +	 (or (getenv "MITSCHEME_IMPLEMENTATION_PATH") +	     (->namestring (system-library-directory-pathname #f))))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -104,8 +107,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -146,6 +148,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features @@ -191,7 +194,7 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -408,7 +411,6 @@      (begin        (environment-define (the-environment) 'macro:eval slib:eval)        (environment-define (the-environment) 'macro:load load))) -;; slib:eval-load definition moved to "require.scm"  ;; Older implementations need this definition.  (if (lexical-unreferenceable? (the-environment) 'record-modifier) diff --git a/mklibcat.scm b/mklibcat.scm index fe3368f..ae7e98e 100644 --- a/mklibcat.scm +++ b/mklibcat.scm @@ -210,8 +210,8 @@  	   (manifest		source		"manifest")  	   (top-refs		source		"top-refs")  	   (vet			source		"vet") -	   (srfi-0				srfi) -	   (srfi		defmacro	"srfi") +	   (srfi				srfi-0) +	   (srfi-0		defmacro	"srfi")  	   (srfi-1		source		"srfi-1")  	   (and-let*				srfi-2)  	   (srfi-2		defmacro	"srfi-2") @@ -242,9 +242,7 @@        (let ((load-if-exists  	     (lambda (path) -	       (cond ((not (file-exists? path)) -		      (set! path (string-append path (scheme-file-suffix))))) -	       (cond ((file-exists? path) +	       (cond ((file-exists? (string-append path (scheme-file-suffix)))  		      (slib:load-source path))))))  	;;(load-if-exists (in-vicinity (implementation-vicinity) "mksitcat"))  	(load-if-exists (in-vicinity (implementation-vicinity) "mkimpcat"))) diff --git a/mkpltcat.scm b/mkpltcat.scm new file mode 100644 index 0000000..80d4414 --- /dev/null +++ b/mkpltcat.scm @@ -0,0 +1,54 @@ +;;;; "mkimpcat.scm" Build mzscheme-specific catalog for SLIB. +;;; This code is in the public domain. +;;; Author: Aubrey Jaffer. + +(let ((catname "implcat")) +  (define ivcatname (in-vicinity (implementation-vicinity) catname)) +  (if (file-exists? ivcatname) (delete-file ivcatname)) +  (call-with-output-file ivcatname +    (lambda (op) +      (define (display* . args) +	(for-each (lambda (arg) (display arg op)) args) +	(newline op)) +      (define (add-alias from to) +	(display " " op) +	(write (cons from to) op) +	(newline op)) +      (define (add-srfi feature) +	(let ((str (symbol->string feature))) +	  (define len (string-length str)) +	  (cond ((not (and (> len 5) +			   (string-ci= "srfi-" (substring str 0 5)))) +		 (error 'add-srfi 'bad 'srfi 'name feature))))) + +      (display* ";\"" catname "\" Implementation-specific SLIB catalog for " +		(scheme-implementation-type) (scheme-implementation-version) +		".  -*-scheme-*-") +      (display* ";") +      (display* ";			DO NOT EDIT THIS FILE") +      (display* "; it is automagically generated by \"" +		(current-load-relative-directory) +		"mkimpcat.scm" +		"\"") +      (display*) + +      ;;; Output association lists to file "implcat" +      (display* "(") +      (do ((kdx 0 (+ 1 kdx))) +	  ((>= kdx 150)) +	(let ((kstr (number->string kdx))) +	  (cond ((file-exists? +		  (build-path (collection-path "srfi") +			      (string-append kstr ".ss"))) +		 (display " " op) +		 (write `(,(string->symbol (string-append "srfi-" kstr)) +			  compiled +			  (lib ,(string-append kstr ".ss") "srfi")) +			op) +		 (newline op))))) + +      (if (string>? (version) "370") +	  (add-alias 'array 'srfi-63)) +      (add-alias 'logical 'srfi-60) +      (display* ")") +      ))) diff --git a/DrScheme.init b/mzscheme.init index d921cec..db6b3b9 100644 --- a/DrScheme.init +++ b/mzscheme.init @@ -1,4 +1,4 @@ -;;;"DrScheme.init" Initialization for SLIB for DrScheme	-*-scheme-*- +;;;"mzscheme.init" Initialization for SLIB for mzscheme	-*-scheme-*-  ;;; This code is in the public domain.  ;;@ (software-type) should be set to the generic operating system type. @@ -28,7 +28,8 @@  ;;; implementation reside.  (define implementation-vicinity    (let ([path -	 (or (getenv "PLTHOME") +	 (or (getenv "MZSCHEME_IMPLEMENTATION_PATH") +	     (getenv "PLTHOME")  	     (with-handlers ([void (lambda (x) #f)])  	       (let ([p (collection-path "mzlib")])  		 (let*-values ([(base name dir?) (split-path p)] @@ -54,7 +55,7 @@            (ormap (lambda (dir)                     (and (directory-exists? dir) dir))                   '("/usr/local/lib/slib/" -		   "/usr/share/slib" +		   "/usr/share/slib/"                     ;; this is for RH/Fedora that uses umb-scheme for slib                     ;;"/usr/share/umb-scheme/slib"  		   )) @@ -128,6 +129,7 @@  	rev4-report			;conforms to  ;;;	rev3-report			;conforms to  ;;;	ieee-p1178			;conforms to +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -151,6 +153,7 @@  ;;;	transcript			;TRANSCRIPT-ON and TRANSCRIPT-OFF  	char-ready?  	macro				;has R4RS high level macros +	syntax-case			;has syntax-case macros  	defmacro			;has Common Lisp DEFMACRO  	eval				;SLIB:EVAL is single argument eval  ;;;	record				;has user defined data structures @@ -164,7 +167,7 @@  ;;;	queue				;queues  	pretty-print  ;;;	object->string -;;;	format +	format				;plt/collects/srfi/28.ss says in core  ;;;	trace				;has macros: TRACE and UNTRACE  ;;;	compiler			;has (COMPILER)  ;;;	ed				;(ED) is editor @@ -177,13 +180,14 @@  ;;;	terminfo			;sysV terminal description  	fluid-let  	srfi-59 +	srfi-96  	vicinity  	current-time			;returns time in seconds since 1/1/1970  	))  ;@ -(define program-arguments -  (lambda () -    (vector->list (current-command-line-arguments)))) +(define (program-arguments) +  (cons (symbol->string (scheme-implementation-type)) +	(vector->list (current-command-line-arguments))))  (require (lib "pretty.ss"))  (unless (memq (system-type) '(unix beos)) @@ -256,9 +260,6 @@  ;;@ SLIB:EVAL is single argument eval using the top-level (user) environment.  (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load)  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -299,7 +300,6 @@  ;@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  ;@  (define slib:warn    (lambda args @@ -389,11 +389,23 @@  ;;; by compiling "foo.scm" if this implementation can compile files.  ;;; See feature 'COMPILED.  (define (slib:load-compiled f) -  (load (string-append (ensure-path-string f) ".zo"))) +  (cond ((string? f) +	 (load (string-append (ensure-path-string f) ".zo"))) +	((and (pair? f) (eq? 'lib (car f))) +	 (eval `(require ,f))) +	(slib:error 'slib:load-compiled 'bad 'argument f)))  ;;@ At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +(define syncase:eval slib:eval) +(define syncase:load slib:load-source) +  (require (rename mzscheme mz:require require))  (slib:load (in-vicinity (library-vicinity) "require")) diff --git a/peanosfc.scm b/peanosfc.scm index 388be9f..82b136e 100644 --- a/peanosfc.scm +++ b/peanosfc.scm @@ -1,4 +1,4 @@ -; "peanospc.scm": Peano space filling mapping +; "peanosfc.scm": Peano space filling mapping  ; Copyright (C) 2005, 2006 Aubrey Jaffer  ;  ;Permission to copy this software, to modify it, to redistribute it, @@ -373,7 +373,7 @@    (cond ((equal? (force prec:token) sep)  	 (prec:warn 'expression-missing)  	 (prec:advance) -	 (cons '? (prec:parse-delimited sep delim))) +	 (cons '? (prec:parse-delimited sep bp delim)))  	((prec:delim? (force prec:token))  	 (if (not (equal? (force prec:token) delim))  	     (prec:warn 'mismatched-delimiter (force prec:token) diff --git a/pscheme.init b/pscheme.init index 11c0125..49c98a3 100644 --- a/pscheme.init +++ b/pscheme.init @@ -13,9 +13,9 @@  (define (scheme-implementation-version)    (let ((v (version)))      (string-append -      (number->string (car v)) "." -      (number->string (cadr v)) "." -      (number->string (caddr v))))) +     (number->string (car v)) "." +     (number->string (cadr v)) "." +     (number->string (caddr v)))))  (define (scheme-implementation-home-page) "http://www.mazama.net/scheme/pscheme.htm")  (define (implementation-vicinity) "\\Program Files\\Pocket Scheme\\") @@ -58,8 +58,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -99,6 +98,7 @@      rev4-optional-procedures      vicinity      srfi-59 +    srfi-96      multiarg/and-      multiarg-apply      with-file @@ -106,16 +106,16 @@      defmacro      rationalize      delay -; pscheme needs the R5RS arity-2 eval in order to define the following -;    eval +;;; pscheme needs the R5RS arity-2 eval in order to define the following +;;;    eval      dynamic-wind      full-continuation -    srfi -; pscheme needs print-call-stack in order to define the following -;	trace +    srfi-0 +;;; pscheme needs print-call-stack in order to define the following +;;;	trace      system      string-port -	)) +    ))  ;;@ (FILE-POSITION <port> . <k>)  (define (file-position . args) #f) @@ -165,10 +165,10 @@  ;@  (define (browse-url url)    (with-handlers -    ;; the pscheme SYSTEM procedure raises an exn when it can't find the image to run. -    ;; SYSTEM uses ShellExecuteEx where available, so we give it the document name to open -    (((lambda (x) #t) (lambda (x) #f))) -    (system url))) +   ;; the pscheme SYSTEM procedure raises an exn when it can't find the image to run. +   ;; SYSTEM uses ShellExecuteEx where available, so we give it the document name to open +   (((lambda (x) #t) (lambda (x) #f))) +   (system url)))  ;;@ CHAR-CODE-LIMIT is one greater than the largest integer which can @@ -197,13 +197,9 @@  ;;@ SLIB:EVAL is single argument eval using the top-level (user) environment.  (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -  ;;@ Define defmacro in terms of our define-macro  (define-macro (defmacro name args . body) - `(define-macro (,name ,@args) ,@body)) +  `(define-macro (,name ,@args) ,@body))  ; following defns removed in 0.6.3 while I rethink macro support  ;(define defmacro? macro?) @@ -213,14 +209,6 @@  ;@  (define gentemp gensym) -(define base:eval slib:eval) -;@ -(define defmacro:eval slib:eval) - -;; slib:eval-load definition moved to  "require.scm" -;@ -(define (defmacro:load <pathname>) -  (slib:eval-load <pathname> defmacro:eval))  ;@  (define slib:warn    (lambda args @@ -233,16 +221,16 @@  ;;@ As announced by feature string-port  (define (call-with-output-string t) - (let* ((p (open-output-string)) -        (r (t p)) -        (s (get-output-string p))) -  (close-output-port p) -  s)) +  (let* ((p (open-output-string)) +	 (r (t p)) +	 (s (get-output-string p))) +    (close-output-port p) +    s))  (define (call-with-input-string s t) - (let* ((p (open-input-string s)) -        (r (t p))) -  (close-input-port p) -  r)) +  (let* ((p (open-input-string s)) +	 (r (t p))) +    (close-input-port p) +    r))  ;;@ define these as appropriate for your system.  (define slib:tab (integer->char 9)) @@ -273,9 +261,9 @@  ;;@ (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-source f) - (if (not (file-exists? f)) -  (set! f (string-append f (scheme-file-suffix)))) - (load f)) +  (if (not (file-exists? f)) +      (set! f (string-append f (scheme-file-suffix)))) +  (load f))  ;;@ (SLIB:LOAD-COMPILED "foo") should load the file that was produced  ;;; by compiling "foo.scm" if this implementation can compile files. @@ -285,9 +273,14 @@  ;;@ At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;@ +(define defmacro:eval slib:eval) +;@ +(define defmacro:load slib:load-source) +  ;;; Pscheme and SLIB both define REQUIRE, so dispatch on argument type.  (define pscheme:require require)  (slib:load (in-vicinity (library-vicinity) "require"))  (define slib:require require)  (define (require x) - (if (string? x) (pscheme:require x) (slib:require x))) +  (if (string? x) (pscheme:require x) (slib:require x))) @@ -64,13 +64,15 @@      (do ((bln bitlen (+ -8 bln))  	 (rbs 0 (+ (arithmetic-shift rbs 8) (random:chunk state))))  	((<= bln 7) -	 (if (positive? bln) -	     (set! rbs (logxor (arithmetic-shift rbs bln) -			       (random:chunk state)))) -	 (if (< rbs modu) rbs (rnd))))) +	 (cond ((positive? bln) +		(set! rbs (logxor (arithmetic-shift rbs bln) +				  (random:chunk state))) +		(if (>= rbs modu) (rnd) rbs)) +	       ((>= rbs modu 1) (rnd)) +	       ((positive? modu) rbs) +	       (else (slib:error 'random 'not 'positive? modu))))))    (rnd)) -  ;;@defvar *random-state*  ;;Holds a data structure that encodes the internal state of the  ;;random-number generator that @code{random} uses by default.  The nature @@ -242,335 +242,339 @@        (define (open-table table-name writable)  	(define cat:row (cat:get-row base:catalog table-name)) -	(cond ((not cat:row) -	       (slib:error "can't open-table:" table-name)) -	      ((and writable (not mutable)) -	       (slib:error "can't open-table for writing:" table-name))) -	(let ((column-limit (row-ref cat:row catalog:column-limit-pos)) -	      (desc-table -	       (base:open-table -		lldb -		(row-ref (cat:get-row -			  base:catalog -			  (row-ref cat:row catalog:coltab-name-pos)) -			 catalog:bastab-id-pos) -		1 (itypes columns:init-cols))) -	      (base-table #f) -	      (base:get #f) -	      (primary-limit 1) -	      (column-name-alist '()) -	      (column-foreign-list '()) -	      (column-foreign-check-list '()) -	      (column-domain-list '()) -	      (column-type-list '()) -	      (export-alist '()) -	      (cirs '()) -	      (dirs '()) -	      (list->key #f) -	      (key->list #f)) - -	  (or desc-table -	      (slib:error "descriptor table doesn't exist for:" table-name)) -	  (do ((ci column-limit (+ -1 ci))) -	      ((zero? ci)) -	    (let* ((des:row (des:get-row desc-table ci)) -		   (column-name (row-ref des:row columns:name-pos)) -		   (column-domain (row-ref des:row columns:domain-name-pos))) -	      (set! cirs -		    (cons (row-eval des:row columns:integrity-rule-pos) cirs)) -	      (set! column-name-alist -		    (cons (cons column-name ci) column-name-alist)) -	      (cond -	       (column-domain -		(let ((dom:row (dom:get-row base:domains column-domain))) -		  (set! dirs -			(cons (row-eval dom:row domains:integrity-rule-pos) -			      dirs)) -		  (set! column-type-list -			(cons (row-ref dom:row domains:type-id-pos) -			      column-type-list)) -		  (set! column-domain-list -			(cons column-domain column-domain-list)) -		  (set! column-foreign-list -			(cons (let ((foreign-name -				     (row-ref dom:row domains:foreign-pos))) -				(and (not (eq? foreign-name table-name)) -				     foreign-name)) -			      column-foreign-list)) -		  (set! column-foreign-check-list -			(cons -			 (let ((foreign-name (car column-foreign-list))) -			   (and foreign-name -				(let* ((tab (open-table foreign-name #f)) -				       (p? (and tab (tab 'get 1)))) -				  (cond -				   ((not tab) -				    (slib:error "foreign key table missing for:" -						foreign-name)) -				   ((not (= (tab 'primary-limit) 1)) -				    (slib:error "foreign key table wrong type:" -						foreign-name)) -				   (else p?))))) -			 column-foreign-check-list)))) -	       (else -		(slib:error "missing domain for column:" ci column-name))) -	      (cond -	       ((row-ref des:row columns:primary?-pos) -		(set! primary-limit (max primary-limit ci)) -		(cond -		 ((base:supported-key-type? (car column-type-list))) -		 (else (slib:error "key type not supported by base tables:" -				   (car column-type-list))))) -	       ((base:supported-type? (car column-type-list))) -	       (else (slib:error "type not supported by base tables:" -				 (car column-type-list)))))) -	  (set! base-table -		(base:open-table lldb (row-ref cat:row catalog:bastab-id-pos) -				 primary-limit column-type-list)) -	  (set! base:get ((basic 'make-getter) primary-limit column-type-list)) -	  (set! list->key -		((basic 'make-list-keyifier) primary-limit column-type-list)) -	  (set! key->list -		((basic 'make-key->list) primary-limit column-type-list)) -	  (letrec ((export-method -		    (lambda (name proc) -		      (set! export-alist -			    (cons (cons name proc) export-alist)))) -		   (ckey:retrieve ;ckey gets whole row (assumes exists) -		    (if (= primary-limit column-limit) key->list -			(lambda (ckey) (append (key->list ckey) -					       (base:get base-table ckey))))) -		   (accumulate-over-table -		    (lambda (operation) -		      (lambda mkeys (base:map-primary-key -				     base-table operation -				     primary-limit column-type-list -				     (norm-mkeys mkeys))))) -		   (norm-mkeys -		    (lambda (mkeys) -		      (define mlim (length mkeys)) -		      (cond ((> mlim primary-limit) -			     (slib:error "too many keys:" mkeys)) -			    ((= mlim primary-limit) mkeys) -			    (else -			     (append mkeys -				     (do ((k (- primary-limit mlim) (+ -1 k)) -					  (result '() (cons #f result))) -					 ((<= k 0) result)))))))) -	    (export-method -	     'row:retrieve -	     (if (= primary-limit column-limit) -		 (lambda keys -		   (let ((ckey (list->key keys))) -		     (and (present? base-table ckey) keys))) -		 (lambda keys -		   (let ((vals (base:get base-table (list->key keys)))) -		     (and vals (append keys vals)))))) -	    (export-method 'row:retrieve* -			   (accumulate-over-table -			    (if (= primary-limit column-limit) key->list -				ckey:retrieve))) -	    (export-method -	     'for-each-row -	     (let ((r (if (= primary-limit column-limit) key->list -			  ckey:retrieve))) -	       (lambda (proc . mkeys) -		 (base:for-each-primary-key -		  base-table (lambda (ckey) (proc (r ckey))) -		  primary-limit column-type-list -		  (norm-mkeys mkeys))))) -	    (and base:ordered-for-each-key -		 (export-method -		  'for-each-row-in-order -		  (let ((r (if (= primary-limit column-limit) key->list -			       ckey:retrieve))) -		    (lambda (proc . mkeys) -		      (base:ordered-for-each-key -		       base-table (lambda (ckey) (proc (r ckey))) -		       primary-limit column-type-list -		       (norm-mkeys mkeys)))))) -	    (cond -	     ((and mutable writable) -	      (letrec -		  ((combine-primary-keys -		    (cond -		     ((and (= primary-limit column-limit) -			   (> primary-limit 0)) -		      list->key) -		     ((eq? list->key car) list->key) -		     (else -		      (case primary-limit -			((1) (let ((keyify-1 ((base 'make-keyifier-1) -					      (car column-type-list)))) -			       (lambda (row) (keyify-1 (car row))))) -			((2) (lambda (row) -			       (list->key (list (car row) (cadr row))))) -			((3) (lambda (row) -			       (list->key (list (car row) (cadr row) -						(caddr row))))) -			(else (lambda (row) -				(do ((rw row (cdr rw)) -				     (nrw '() (cons (car rw) nrw)) -				     (pl (+ -1 primary-limit) (+ -1 pl))) -				    ((negative? pl) -				     (list->key (reverse nrw)))))))))) -		   (uir (row-eval cat:row catalog:integrity-rule-pos)) -		   (check-rules -		    (lambda (row) -		      (if (= column-limit (length row)) #t -			  (slib:error "bad row length:" row)) -		      (for-each -		       (lambda (cir dir value column-name column-domain -				    foreign) -			 (cond -			  ((and dir (not (dir value))) -			   (slib:error "violated domain integrity rule:" -				       table-name column-name -				       column-domain value)) -			  ((and cir (not (cir value))) -			   (slib:error "violated column integrity rule:" -				       table-name column-name value)) -			  ((and foreign (not (foreign value))) -			   (slib:error "foreign key missing:" -				       table-name column-name value)))) -		       cirs dirs row column-name-alist column-domain-list -		       column-foreign-check-list) -		      (cond ((and uir (not (uir row))) -			     (slib:error "violated user integrity rule:" -					 row))))) -		   (putter -		    ((basic 'make-putter) primary-limit column-type-list)) -		   (row:insert -		    (lambda (row) -		      (check-rules row) -		      (let ((ckey (combine-primary-keys row))) -			(if (present? base-table ckey) -			    (slib:error 'row:insert "row present:" row)) -			(putter base-table ckey -				(list-tail row primary-limit))))) -		   (row:update -		    (lambda (row) -		      (check-rules row) -		      (putter base-table (combine-primary-keys row) -			      (list-tail row primary-limit))))) - -		(export-method 'row:insert row:insert) -		(export-method 'row:insert* -			       (lambda (rows) (for-each row:insert rows))) -		(export-method 'row:update row:update) -		(export-method 'row:update* -			       (lambda (rows) (for-each row:update rows)))) - -	      (letrec ((base:delete (basic 'delete)) -		       (base:delete* (basic 'delete*)) -		       (ckey:remove (lambda (ckey) -				      (let ((r (ckey:retrieve ckey))) -					(and r (base:delete base-table ckey)) -					r)))) -		(export-method 'row:remove -			       (lambda keys -				 (let ((ckey (list->key keys))) -				   (and (present? base-table ckey) -					(ckey:remove ckey))))) -		(export-method 'row:delete -			       (lambda keys -				 (base:delete base-table (list->key keys)))) -		(export-method 'row:remove* -			       (accumulate-over-table ckey:remove)) -		(export-method 'row:delete* -			       (lambda mkeys -				 (base:delete* base-table -					       primary-limit column-type-list -					       (norm-mkeys mkeys)))) -		(export-method 'close-table -			       (lambda () (set! base-table #f) -				       (set! desc-table #f) -				       (set! export-alist #f)))))) - -	    (export-method 'column-names (map car column-name-alist)) -	    (export-method 'column-foreigns column-foreign-list) -	    (export-method 'column-domains column-domain-list) -	    (export-method 'column-types column-type-list) -	    (export-method 'primary-limit primary-limit) - -	    (let ((translate-column -		   (lambda (column) -		     (let ((colp (assq column column-name-alist))) -		       (cond (colp (cdr colp)) -			     ((and (integer? column) -				   (<= 1 column column-limit)) -			      column) -			     (else (slib:error "column not in table:" -					       column table-name))))))) -	      (lambda args +	(cond +	 ((not cat:row) +	  (slib:warn "can't open-table:" table-name) +	  #f) +	 ((and writable (not mutable)) +	  (slib:warn "can't open-table for writing:" table-name) +	  #f) +	 (else +	  (let ((column-limit (row-ref cat:row catalog:column-limit-pos)) +		(desc-table +		 (base:open-table +		  lldb +		  (row-ref (cat:get-row +			    base:catalog +			    (row-ref cat:row catalog:coltab-name-pos)) +			   catalog:bastab-id-pos) +		  1 (itypes columns:init-cols))) +		(base-table #f) +		(base:get #f) +		(primary-limit 1) +		(column-name-alist '()) +		(column-foreign-list '()) +		(column-foreign-check-list '()) +		(column-domain-list '()) +		(column-type-list '()) +		(export-alist '()) +		(cirs '()) +		(dirs '()) +		(list->key #f) +		(key->list #f)) + +	    (or desc-table +		(slib:error "descriptor table doesn't exist for:" table-name)) +	    (do ((ci column-limit (+ -1 ci))) +		((zero? ci)) +	      (let* ((des:row (des:get-row desc-table ci)) +		     (column-name (row-ref des:row columns:name-pos)) +		     (column-domain (row-ref des:row columns:domain-name-pos))) +		(set! cirs +		      (cons (row-eval des:row columns:integrity-rule-pos) cirs)) +		(set! column-name-alist +		      (cons (cons column-name ci) column-name-alist))  		(cond -		 ((null? args) #f) -		 ((and base:make-nexter (eq? 'isam-next (car args))) -		  (base:make-nexter -		   base-table primary-limit column-type-list -		   (if (null? (cdr args)) -		       primary-limit -		       (translate-column (cadr args))))) -		 ((and base:make-prever (eq? 'isam-prev (car args))) -		  (base:make-prever -		   base-table primary-limit column-type-list -		   (if (null? (cdr args)) -		       primary-limit -		       (translate-column (cadr args))))) -		 ((null? (cdr args)) -		  (let ((pp (assq (car args) export-alist))) -		    (and pp (cdr pp)))) -		 ((not (null? (cddr args))) -		  (slib:error "too many arguments to methods:" args)) +		 (column-domain +		  (let ((dom:row (dom:get-row base:domains column-domain))) +		    (set! dirs +			  (cons (row-eval dom:row domains:integrity-rule-pos) +				dirs)) +		    (set! column-type-list +			  (cons (row-ref dom:row domains:type-id-pos) +				column-type-list)) +		    (set! column-domain-list +			  (cons column-domain column-domain-list)) +		    (set! column-foreign-list +			  (cons (let ((foreign-name +				       (row-ref dom:row domains:foreign-pos))) +				  (and (not (eq? foreign-name table-name)) +				       foreign-name)) +				column-foreign-list)) +		    (set! column-foreign-check-list +			  (cons +			   (let ((foreign-name (car column-foreign-list))) +			     (and foreign-name +				  (let* ((tab (open-table foreign-name #f)) +					 (p? (and tab (tab 'get 1)))) +				    (cond +				     ((not tab) +				      (slib:error "foreign key table missing for:" +						  foreign-name)) +				     ((not (= (tab 'primary-limit) 1)) +				      (slib:error "foreign key table wrong type:" +						  foreign-name)) +				     (else p?))))) +			   column-foreign-check-list))))  		 (else -		  (let ((ci (translate-column (cadr args)))) -		    (cond -		     ((<= ci primary-limit) ;primary-key? -		      (case (car args) -			((get) (lambda gkeys -				 (and (present? base-table (list->key gkeys)) -				      (list-ref gkeys (+ -1 ci))))) -			((get*) (let ((key-extractor -				       ((base 'make-key-extractor) -					primary-limit column-type-list ci))) -				  (lambda mkeys -				    (base:map-primary-key -				     base-table -				     key-extractor -				     primary-limit column-type-list -				     (norm-mkeys mkeys))))) -			(else #f))) -		     (else -		      (let ((index (- ci (+ primary-limit 1))) -			    (get-1 (base 'make-getter-1))) -			(cond -			 (get-1 -			  (set! get-1 -				(get-1 primary-limit column-type-list ci)) -			  (case (car args) -			    ((get) (lambda keys -				     (get-1 base-table (list->key keys)))) -			    ((get*) (lambda mkeys -				      (base:map-primary-key -				       base-table -				       (lambda (ckey) (get-1 base-table ckey)) +		  (slib:error "missing domain for column:" ci column-name))) +		(cond +		 ((row-ref des:row columns:primary?-pos) +		  (set! primary-limit (max primary-limit ci)) +		  (cond +		   ((base:supported-key-type? (car column-type-list))) +		   (else (slib:error "key type not supported by base tables:" +				     (car column-type-list))))) +		 ((base:supported-type? (car column-type-list))) +		 (else (slib:error "type not supported by base tables:" +				   (car column-type-list)))))) +	    (set! base-table +		  (base:open-table lldb (row-ref cat:row catalog:bastab-id-pos) +				   primary-limit column-type-list)) +	    (set! base:get ((basic 'make-getter) primary-limit column-type-list)) +	    (set! list->key +		  ((basic 'make-list-keyifier) primary-limit column-type-list)) +	    (set! key->list +		  ((basic 'make-key->list) primary-limit column-type-list)) +	    (letrec ((export-method +		      (lambda (name proc) +			(set! export-alist +			      (cons (cons name proc) export-alist)))) +		     (ckey:retrieve ;ckey gets whole row (assumes exists) +		      (if (= primary-limit column-limit) key->list +			  (lambda (ckey) (append (key->list ckey) +						 (base:get base-table ckey))))) +		     (accumulate-over-table +		      (lambda (operation) +			(lambda mkeys (base:map-primary-key +				       base-table operation  				       primary-limit column-type-list -				       (norm-mkeys mkeys)))))) -			 (else -			  (case (car args) -			    ((get) (lambda keys -				     (let ((row (base:get base-table -							  (list->key keys)))) -				       (and row (list-ref row index))))) -			    ((get*) (lambda mkeys +				       (norm-mkeys mkeys))))) +		     (norm-mkeys +		      (lambda (mkeys) +			(define mlim (length mkeys)) +			(cond ((> mlim primary-limit) +			       (slib:error "too many keys:" mkeys)) +			      ((= mlim primary-limit) mkeys) +			      (else +			       (append mkeys +				       (do ((k (- primary-limit mlim) (+ -1 k)) +					    (result '() (cons #f result))) +					   ((<= k 0) result)))))))) +	      (export-method +	       'row:retrieve +	       (if (= primary-limit column-limit) +		   (lambda keys +		     (let ((ckey (list->key keys))) +		       (and (present? base-table ckey) keys))) +		   (lambda keys +		     (let ((vals (base:get base-table (list->key keys)))) +		       (and vals (append keys vals)))))) +	      (export-method 'row:retrieve* +			     (accumulate-over-table +			      (if (= primary-limit column-limit) key->list +				  ckey:retrieve))) +	      (export-method +	       'for-each-row +	       (let ((r (if (= primary-limit column-limit) key->list +			    ckey:retrieve))) +		 (lambda (proc . mkeys) +		   (base:for-each-primary-key +		    base-table (lambda (ckey) (proc (r ckey))) +		    primary-limit column-type-list +		    (norm-mkeys mkeys))))) +	      (and base:ordered-for-each-key +		   (export-method +		    'for-each-row-in-order +		    (let ((r (if (= primary-limit column-limit) key->list +				 ckey:retrieve))) +		      (lambda (proc . mkeys) +			(base:ordered-for-each-key +			 base-table (lambda (ckey) (proc (r ckey))) +			 primary-limit column-type-list +			 (norm-mkeys mkeys)))))) +	      (cond +	       ((and mutable writable) +		(letrec +		    ((combine-primary-keys +		      (cond +		       ((and (= primary-limit column-limit) +			     (> primary-limit 0)) +			list->key) +		       ((eq? list->key car) list->key) +		       (else +			(case primary-limit +			  ((1) (let ((keyify-1 ((base 'make-keyifier-1) +						(car column-type-list)))) +				 (lambda (row) (keyify-1 (car row))))) +			  ((2) (lambda (row) +				 (list->key (list (car row) (cadr row))))) +			  ((3) (lambda (row) +				 (list->key (list (car row) (cadr row) +						  (caddr row))))) +			  (else (lambda (row) +				  (do ((rw row (cdr rw)) +				       (nrw '() (cons (car rw) nrw)) +				       (pl (+ -1 primary-limit) (+ -1 pl))) +				      ((negative? pl) +				       (list->key (reverse nrw)))))))))) +		     (uir (row-eval cat:row catalog:integrity-rule-pos)) +		     (check-rules +		      (lambda (row) +			(if (= column-limit (length row)) #t +			    (slib:error "bad row length:" row)) +			(for-each +			 (lambda (cir dir value column-name column-domain +				      foreign) +			   (cond +			    ((and dir (not (dir value))) +			     (slib:error "violated domain integrity rule:" +					 table-name column-name +					 column-domain value)) +			    ((and cir (not (cir value))) +			     (slib:error "violated column integrity rule:" +					 table-name column-name value)) +			    ((and foreign (not (foreign value))) +			     (slib:error "foreign key missing:" +					 table-name column-name value)))) +			 cirs dirs row column-name-alist column-domain-list +			 column-foreign-check-list) +			(cond ((and uir (not (uir row))) +			       (slib:error "violated user integrity rule:" +					   row))))) +		     (putter +		      ((basic 'make-putter) primary-limit column-type-list)) +		     (row:insert +		      (lambda (row) +			(check-rules row) +			(let ((ckey (combine-primary-keys row))) +			  (if (present? base-table ckey) +			      (slib:error 'row:insert "row present:" row)) +			  (putter base-table ckey +				  (list-tail row primary-limit))))) +		     (row:update +		      (lambda (row) +			(check-rules row) +			(putter base-table (combine-primary-keys row) +				(list-tail row primary-limit))))) + +		  (export-method 'row:insert row:insert) +		  (export-method 'row:insert* +				 (lambda (rows) (for-each row:insert rows))) +		  (export-method 'row:update row:update) +		  (export-method 'row:update* +				 (lambda (rows) (for-each row:update rows)))) + +		(letrec ((base:delete (basic 'delete)) +			 (base:delete* (basic 'delete*)) +			 (ckey:remove (lambda (ckey) +					(let ((r (ckey:retrieve ckey))) +					  (and r (base:delete base-table ckey)) +					  r)))) +		  (export-method 'row:remove +				 (lambda keys +				   (let ((ckey (list->key keys))) +				     (and (present? base-table ckey) +					  (ckey:remove ckey))))) +		  (export-method 'row:delete +				 (lambda keys +				   (base:delete base-table (list->key keys)))) +		  (export-method 'row:remove* +				 (accumulate-over-table ckey:remove)) +		  (export-method 'row:delete* +				 (lambda mkeys +				   (base:delete* base-table +						 primary-limit column-type-list +						 (norm-mkeys mkeys)))) +		  (export-method 'close-table +				 (lambda () (set! base-table #f) +					 (set! desc-table #f) +					 (set! export-alist #f)))))) + +	      (export-method 'column-names (map car column-name-alist)) +	      (export-method 'column-foreigns column-foreign-list) +	      (export-method 'column-domains column-domain-list) +	      (export-method 'column-types column-type-list) +	      (export-method 'primary-limit primary-limit) + +	      (let ((translate-column +		     (lambda (column) +		       (let ((colp (assq column column-name-alist))) +			 (cond (colp (cdr colp)) +			       ((and (integer? column) +				     (<= 1 column column-limit)) +				column) +			       (else (slib:error "column not in table:" +						 column table-name))))))) +		(lambda args +		  (cond +		   ((null? args) #f) +		   ((and base:make-nexter (eq? 'isam-next (car args))) +		    (base:make-nexter +		     base-table primary-limit column-type-list +		     (if (null? (cdr args)) +			 primary-limit +			 (translate-column (cadr args))))) +		   ((and base:make-prever (eq? 'isam-prev (car args))) +		    (base:make-prever +		     base-table primary-limit column-type-list +		     (if (null? (cdr args)) +			 primary-limit +			 (translate-column (cadr args))))) +		   ((null? (cdr args)) +		    (let ((pp (assq (car args) export-alist))) +		      (and pp (cdr pp)))) +		   ((not (null? (cddr args))) +		    (slib:error "too many arguments to methods:" args)) +		   (else +		    (let ((ci (translate-column (cadr args)))) +		      (cond +		       ((<= ci primary-limit) ;primary-key? +			(case (car args) +			  ((get) (lambda gkeys +				   (and (present? base-table (list->key gkeys)) +					(list-ref gkeys (+ -1 ci))))) +			  ((get*) (let ((key-extractor +					 ((base 'make-key-extractor) +					  primary-limit column-type-list ci))) +				    (lambda mkeys  				      (base:map-primary-key  				       base-table -				       (lambda (ckey) -					 (list-ref (base:get base-table ckey) -						   index)) +				       key-extractor  				       primary-limit column-type-list -				       (norm-mkeys mkeys)))) -			    (else #f))))))))))))))) +				       (norm-mkeys mkeys))))) +			  (else #f))) +		       (else +			(let ((index (- ci (+ primary-limit 1))) +			      (get-1 (base 'make-getter-1))) +			  (cond +			   (get-1 +			    (set! get-1 +				  (get-1 primary-limit column-type-list ci)) +			    (case (car args) +			      ((get) (lambda keys +				       (get-1 base-table (list->key keys)))) +			      ((get*) (lambda mkeys +					(base:map-primary-key +					 base-table +					 (lambda (ckey) (get-1 base-table ckey)) +					 primary-limit column-type-list +					 (norm-mkeys mkeys)))))) +			   (else +			    (case (car args) +			      ((get) (lambda keys +				       (let ((row (base:get base-table +							    (list->key keys)))) +					 (and row (list-ref row index))))) +			      ((get*) (lambda mkeys +					(base:map-primary-key +					 base-table +					 (lambda (ckey) +					   (list-ref (base:get base-table ckey) +						     index)) +					 primary-limit column-type-list +					 (norm-mkeys mkeys)))) +			      (else #f)))))))))))))))))        (define create-table  	(and diff --git a/require.scm b/require.scm index 613038e..a659019 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* "3a5") +(define *slib-version* "3b1")  ;;;; MODULES  ;@ @@ -190,8 +190,9 @@    (if (and n (exact? n)) (slib:provide 'bignum)))  (cond - ((slib:provided? 'srfi) + ((slib:provided? 'srfi-0)    (slib:provide 'srfi-59) +  (slib:provide 'srfi-96)    (do ((idx 0 (+ 1 idx))         (srfis (symbol->string 'srfi-)))        ((> idx 150)) diff --git a/resenecolours.txt b/resenecolours.txt index 702e987..df2f391 100644 --- a/resenecolours.txt +++ b/resenecolours.txt @@ -2,7 +2,7 @@  "For further information refer to http://www.resene.co.nz"  "Copyright Resene Paints Ltd 2001" -"Permission to copy this dictionary, to modify it, to redistribute it," +"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." @@ -14,1397 +14,1393 @@  "distribution."  "3. Resene Paints Ltd makes no warranty or representation that this" -"dictionary is error-free, and is under no obligation to provide any" -"services, by way of maintenance, update, or otherwise." +"dictionary is error-free, and is under no obligation to provide" +"any services, by way of maintenance, update, or otherwise." -"4. There shall be no use of the name of Resene or Resene Paints Ltd" -"in any advertising, promotional, or sales literature without prior" +"4. There shall be no use of the name of Resene or Resene Paints Ltd in" +"any advertising, promotional, or sales literature without prior"  "written consent in each case."  "5. These RGB colour formulations may not be used to the detriment of"  "Resene Paints Ltd."  "Colour Name"	"R"	"G"	"B" -"Abbey"	76	79	86 -"Acadia"	27	20	4 -"Acapulco"	124	176	161 -"Acorn"	106	93	27 -"Aero Blue"	201	255	229 -"Affair"	113	70	147 -"Afghan Tan"	134	86	10 -"Akaroa"	212	196	168 -"Alabaster"	255	255	255 -"Albescent White"	245	233	211 -"Alert Tan"	155	71	3 -"Allports"	0	118	163 -"Almond Frost"	144	123	113 -"Alpine"	175	143	44 -"Alto"	219	219	219 -"Aluminium"	169	172	182 -"Amazon"	59	122	87 -"Americano"	135	117	110 -"Amethyst Smoke"	163	151	180 -"Amour"	249	234	243 -"Amulet"	123	159	128 -"Anakiwa"	157	229	255 -"Antique Brass"	112	74	7 -"Anzac"	224	182	70 -"Apache"	223	190	111 -"Apple"	79	168	61 -"Apple Blossom"	175	77	67 -"Apple Green"	226	243	236 -"Apricot"	235	147	115 -"Apricot White"	255	254	236 -"Aqua"	161	218	215 -"Aqua Haze"	237	245	245 -"Aqua Spring"	234	249	245 -"Aqua Squeeze"	232	245	242 -"Aquamarine"	1	75	67 -"Arapawa"	17	12	108 -"Armadillo"	67	62	55 -"Arrowtown"	148	135	113 -"Ash"	198	195	181 -"Ash Brown"	46	25	5 -"Asphalt"	19	10	6 -"Astra"	250	234	185 -"Astral"	50	125	160 -"Astronaut"	40	58	119 -"Astronaut Blue"	1	62	98 -"Athens Grey"	238	240	243 -"Aths Special"	236	235	206 -"Atlantis"	151	205	45 -"Atoll"	10	111	117 -"Atomic"	49	68	89 -"Au Chico"	151	96	93 -"Aubergine"	59	9	16 -"Australian Mint"	245	255	190 -"Avocado"	136	141	101 -"Axolotl"	78	102	73 -"Azalea"	247	200	218 -"Aztec"	13	28	25 -"Azure"	49	91	161 -"Bahama Blue"	2	99	149 -"Bahia"	165	203	12 -"Baja White"	255	248	209 -"Bali Hai"	133	159	175 -"Baltic Sea"	42	38	48 -"Bamboo"	218	99	4 -"Bandicoot"	133	132	112 -"Banjul"	19	10	6 -"Barberry"	222	215	23 -"Barley Corn"	166	139	91 -"Barley White"	255	244	206 -"Barossa"	68	1	45 -"Bastille"	41	33	48 -"Battleship Grey"	130	143	114 -"Bay Leaf"	125	169	141 -"Bay of Many"	39	58	129 -"Bazaar"	152	119	123 -"Bean  "	61	12	2 -"Beauty Bush"	238	193	190 -"Beeswax"	254	242	199 -"Bermuda"	125	216	198 -"Bermuda Grey"	107	139	162 -"Beryl Green"	222	229	192 -"Bianca"	252	251	243 -"Big Stone"	22	42	64 -"Bilbao"	50	124	20 -"Biloba Flower"	178	161	234 -"Birch"	55	48	33 -"Bird Flower"	212	205	22 -"Biscay"	27	49	98 -"Bismark"	73	113	131 -"Bison Hide"	193	183	164 -"Bitter"	134	137	116 -"Bitter Lemon"	202	224	13 -"Bizarre"	238	222	218 -"Black Bean"	8	25	16 -"Black Forest"	11	19	4 -"Black Haze"	246	247	247 -"Black Magic"	37	23	6 -"Black Marlin"	62	44	28 -"Black Pearl"	4	19	34 -"Black Pepper"	14	14	24 -"Black Rock"	13	3	50 -"Black Rose"	103	3	45 -"Black Russian"	10	0	28 -"Black Squeeze"	242	250	250 -"Black White"	255	254	246 -"Blackberry"	77	1	53 -"Blackcurrant"	50	41	58 -"Blackwood"	38	17	5 -"Blanc"	245	233	211 -"Bleach White"	254	243	216 -"Bleached Cedar"	44	33	51 -"Blossom"	220	180	188 -"Blue Bark"	4	19	34 -"Blue Bayoux"	73	102	121 -"Blue Bell"	34	8	120 -"Blue Chalk"	241	233	255 -"Blue Charcoal"	1	13	26 -"Blue Chill"	12	137	144 -"Blue Diamond"	56	4	116 -"Blue Dianne"	32	72	82 -"Blue Gem"	44	14	140 -"Blue Haze"	191	190	216 -"Blue Lagoon"	1	121	135 -"Blue Marguerite"	118	102	198 -"Blue Romance"	210	246	222 -"Blue Smoke"	116	136	129 -"Blue Stone"	1	97	98 -"Blue Whale"	4	46	76 -"Blue Zodiac"	19	38	77 -"Blumine"	24	88	122 -"Blush"	180	70	104 -"Bokara Grey"	28	18	8 -"Bombay"	175	177	184 -"Bon Jour"	229	224	225 -"Bondi Blue"	2	71	142 -"Bone"	228	209	192 -"Bordeaux"	92	1	32 -"Bossanova"	78	42	90 -"Boston Blue"	59	145	180 -"Botticelli"	199	221	229 -"Bottle Green"	9	54	36 -"Boulder"	122	122	122 -"Bouquet"	174	128	158 -"Bourbon"	186	111	30 -"Bracken"	74	42	4 -"Brandy"	222	193	150 -"Brandy Punch"	205	132	41 -"Brandy Rose"	187	137	131 -"Brazil"	136	98	33 -"Breaker Bay"	93	161	159 -"Bridal Heath"	255	250	244 -"Bridesmaid"	254	240	236 -"Bright Grey"	60	65	81 -"Bright Red"	177	0	0 -"Bright Sun"	254	211	60 -"Bronco"	171	161	150 -"Bronze"	63	33	9 -"Bronze Olive"	78	66	12 -"Bronzetone"	77	64	15 -"Broom"	255	236	19 -"Brown Bramble"	89	40	4 -"Brown Derby"	73	38	21 -"Brown Pod"	64	24	1 -"Bubbles"	231	254	255 -"Buccaneer"	98	47	48 -"Bud"	168	174	156 -"Buddha Gold"	193	160	4 -"Bulgarian Rose"	72	6	7 -"Bull Shot"	134	77	30 -"Bunker"	13	17	23 -"Bunting"	21	31	76 -"Burgundy"	119	15	5 -"Burnham"	0	46	32 -"Burning Sand"	217	147	118 -"Burnt Crimson"	101	0	11 -"Bush"	13	46	28 -"Buttercup"	243	173	22 -"Buttered Rum"	161	117	13 -"Butterfly Bush"	98	78	154 -"Buttermilk"	255	241	181 -"Buttery White"	255	252	234 -"Cab Sav"	77	10	24 -"Cabaret"	217	73	114 -"Cabbage Pont"	63	76	58 -"Cactus"	88	113	86 -"Cadillac"	176	76	106 -"Cafe Royale"	111	68	12 -"Calico"	224	192	149 -"California"	254	157	4 -"Calypso"	49	114	141 -"Camarone"	0	88	26 -"Camelot"	137	52	86 -"Cameo"	217	185	155 -"Camouflage"	60	57	16 -"Can Can"	213	145	164 -"Canary"	243	251	98 -"Candlelight"	252	217	23 -"Cannon Black"	37	23	6 -"Cannon Pink"	137	67	103 -"Canvas"	168	165	137 -"Cape Cod"	60	68	67 -"Cape Honey"	254	229	172 -"Cape Palliser"	162	102	69 -"Caper"	220	237	180 -"Capri"	6	42	120 -"Caramel"	255	221	175 -"Cararra"	238	238	232 -"Cardin Green"	1	54	28 -"Cardinal"	140	5	94 -"Careys Pink"	210	158	170 -"Carissma"	234	136	168 -"Carla"	243	255	216 -"Carnaby Tan"	92	46	1 -"Carousel Pink"	249	224	237 -"Casablanca"	248	184	83 -"Casal"	47	97	104 -"Cascade"	139	169	165 -"Cashmere"	230	190	165 -"Casper"	173	190	209 -"Castro"	82	0	31 -"Catalina Blue"	6	42	120 -"Catskill White"	238	246	247 -"Cavern Pink"	227	190	190 -"Ce Soir"	151	113	181 -"Cedar"	62	28	20 -"Cedar Wood Finish"	113	26	0 -"Celery"	184	194	93 -"Celeste"	209	210	202 -"Cello"	30	56	91 -"Celtic"	22	50	34 -"Cement"	141	118	98 -"Ceramic"	252	255	249 -"Chablis"	255	244	243 -"Chalet Green"	81	110	61 -"Chalky"	238	215	148 -"Chambray"	53	78	140 -"Chamois"	237	220	177 -"Champagne"	250	236	204 -"Chantilly"	248	195	223 -"Charade"	41	41	55 -"Chardon"	255	243	241 -"Chardonnay"	255	205	140 -"Charlotte"	186	238	249 -"Charm"	212	116	148 -"Chateau Green"	64	168	96 -"Chatelle"	189	179	199 -"Chathams Blue"	23	85	121 -"Chelsea Cucumber"	131	170	93 -"Chelsea Gem"	158	83	2 -"Chenin"	223	205	111 -"Cherokee"	252	218	152 -"Cherry Pie"	42	3	89 -"Cherrywood"	101	26	20 -"Cherub"	248	217	233 -"Chetwode Blue"	133	129	217 -"Chicago"	93	92	88 -"Chiffon"	241	255	200 -"Chilean Fire"	247	119	3 -"Chilean Heath"	255	253	230 -"China Ivory"	252	255	231 -"Chino"	206	199	167 -"Chinook"	168	227	189 -"Chocolate"	55	2	2 -"Christalle"	51	3	107 -"Christi"	103	167	18 -"Christine"	231	115	10 -"Chrome White"	232	241	212 -"Cigar"	119	63	26 -"Cinder"	14	14	24 -"Cinderella"	253	225	220 -"Cinnamon"	123	63	0 -"Cioccolato"	85	40	12 -"Citrine White"	250	247	214 -"Citron"	158	169	31 -"Citrus"	161	197	10 -"Clairvoyant"	72	6	86 -"Clam Shell"	212	182	175 -"Claret"	127	23	52 -"Classic Rose"	251	204	231 -"Clay Creek"	138	131	96 -"Clear Day"	233	255	253 -"Clementine"	233	110	0 -"Clinker"	55	29	9 -"Cloud"	199	196	191 -"Cloud Burst"	32	46	84 -"Cloudy"	172	165	159 -"Clover"	56	73	16 -"Cobalt"	6	42	120 -"Cocoa Bean"	72	28	28 -"Cocoa Brown"	48	31	30 -"Coconut Cream"	248	247	220 -"Cod Grey"	11	11	11 -"Coffee"	112	101	85 -"Coffee Bean"	42	20	14 -"Cognac"	159	56	29 -"Cola"	63	37	0 -"Cold Purple"	171	160	217 -"Cold Turkey"	206	186	186 -"Colonial White"	255	237	188 -"Comet"	92	93	117 -"Como"	81	124	102 -"Conch"	201	217	210 -"Concord"	124	123	122 -"Concrete"	242	242	242 -"Confetti"	233	215	90 -"Congo Brown"	89	55	55 -"Conifer"	172	221	77 -"Contessa"	198	114	107 -"Copper Canyon"	126	58	21 -"Copper Rust"	148	71	71 -"Coral"	199	188	162 -"Coral Candy"	255	220	214 -"Coral Tree"	168	107	107 -"Corduroy"	96	110	104 -"Coriander"	196	208	176 -"Cork"	64	41	29 -"Corn"	231	191	5 -"Corn Field"	248	250	205 -"Corn Harvest"	139	107	11 -"Cornflower"	255	176	172 -"Corvette"	250	211	162 -"Cosmic"	118	57	93 -"Cosmos"	255	216	217 -"Costa Del Sol"	97	93	48 -"Cotton Seed"	194	189	182 -"County Green"	1	55	26 -"Cove Grey"	5	22	87 -"Cowboy"	77	40	45 -"Crab Apple"	160	39	18 -"Crail"	185	81	64 -"Cranberry"	182	49	108 -"Crater Brown"	70	36	37 -"Cream Brulee"	255	229	160 -"Cream Can"	245	200	92 -"Creme De Banane"	255	252	153 -"Creole"	30	15	4 -"Crete"	115	120	41 -"Crocodile"	115	109	88 -"Crown of Thorns"	119	31	31 -"Crowshead"	28	18	8 -"Cruise"	181	236	223 -"Crusoe"	0	72	22 -"Crusta"	253	123	51 -"Cuban Tan"	42	20	14 -"Cumin"	146	67	33 -"Cumulus"	253	255	213 -"Cupid"	251	190	218 -"Curious Blue"	37	150	209 -"Cutty Sark"	80	118	114 -"Cyprus"	0	62	64 -"Daintree"	1	39	49 -"Dairy Cream"	249	228	188 -"Daisy Bush"	79	35	152 -"Dallas"	110	75	38 -"Danube"	96	147	209 -"Dark Ebony"	60	32	5 -"Dark Oak"	97	39	24 -"Dark Rimu"	95	61	38 -"Dark Rum"	65	32	16 -"Dark Slate"	57	72	81 -"Dark Tan"	102	16	16 -"Dawn"	166	162	154 -"Dawn Pink"	243	233	229 -"De York"	122	196	136 -"Deco"	210	218	151 -"Deep Blush"	228	118	152 -"Deep Bronze"	74	48	4 -"Deep Cove"	5	16	64 -"Deep Fir"	0	41	0 -"Deep Koamaru"	27	18	123 -"Deep Oak"	65	32	16 -"Deep Sea"	1	130	107 -"Deep Teal"	0	53	50 -"Del Rio"	176	154	149 -"Dell"	57	100	19 -"Delta"	164	164	157 -"Deluge"	117	99	168 -"Derby"	255	238	216 -"Desert"	174	96	32 -"Desert Storm"	248	248	247 -"Dew"	234	255	254 -"Di Serria"	219	153	94 -"Diesel"	19	0	0 -"Dingley"	93	119	71 -"Disco"	135	21	80 -"Dixie"	226	148	24 -"Dolly"	249	255	139 -"Dolphin"	100	96	119 -"Domino"	142	119	94 -"Don Juan"	93	76	81 -"Donkey Brown"	166	146	121 -"Dorado"	107	87	85 -"Double Colonial White"	238	227	173 -"Double Pearl Lusta"	252	244	208 -"Double Spanish White"	230	215	185 -"Dove Grey"	109	108	108 -"Downriver"	9	34	86 -"Downy"	111	208	197 -"Driftwood"	175	135	81 -"Drover"	253	247	173 -"Dune"	56	53	51 -"Dust Storm"	229	204	201 -"Dusty Grey"	168	152	155 -"Dutch White"	255	248	209 -"Eagle"	182	186	164 -"Earls Green"	201	185	59 -"Early Dawn"	255	249	230 -"East Bay"	65	76	125 -"East Side"	172	145	206 -"Eastern Blue"	30	154	176 -"Ebb"	233	227	227 -"Ebony"	12	11	29 -"Ebony Clay"	38	40	59 -"Echo Blue"	175	189	217 -"Eclipse"	49	28	23 -"Ecru White"	245	243	229 -"Ecstasy"	250	120	20 -"Eden"	16	88	82 -"Edgewater"	200	227	215 -"Edward"	162	174	171 -"Egg Sour"	255	244	221 -"Egg White"	255	239	193 -"El Paso"	30	23	8 -"El Salva"	143	62	51 -"Elephant"	18	52	71 -"Elf Green"	8	131	112 -"Elm"	28	124	125 -"Embers"	160	39	18 -"Eminence"	108	48	130 -"Emperor"	81	70	73 -"Empress"	129	115	119 -"Endeavour"	0	86	167 -"Energy Yellow"	248	221	92 -"English Holly"	2	45	21 -"English Walnut"	62	43	35 -"Envy"	139	166	144 -"Equator"	225	188	100 -"Espresso"	97	39	24 -"Eternity"	33	26	14 -"Eucalyptus"	39	138	91 -"Eunry"	207	163	157 -"Evening Sea"	2	78	70 -"Everglade"	28	64	46 -"Fair Pink"	255	239	236 -"Falcon"	127	98	109 -"Fantasy"	250	243	240 -"Fedora"	121	106	120 -"Feijoa"	159	221	140 -"Fern"	10	72	13 -"Fern Frond"	101	114	32 -"Ferra"	112	79	80 -"Festival"	251	233	108 -"Feta"	240	252	234 -"Fiery Orange"	179	82	19 -"Fiji Green"	101	114	32 -"Finch"	98	102	73 -"Finlandia"	85	109	86 -"Finn"	105	45	84 -"Fiord"	64	81	105 -"Fire"	170	66	3 -"Fire Bush"	232	153	40 -"Firefly"	14	42	48 -"Flame Pea"	218	91	56 -"Flame Red"	199	3	30 -"Flamenco"	255	125	7 -"Flamingo"	242	85	42 -"Flax"	123	130	101 -"Flint"	111	106	97 -"Flirt"	162	0	109 -"Foam"	216	252	250 -"Fog"	215	208	255 -"Foggy Grey"	203	202	182 -"Forest Green"	24	45	9 -"Forget Me Not"	255	241	238 -"Fountain Blue"	86	180	190 -"Frangipani"	255	222	179 -"French Grey"	189	189	198 -"French Lilac"	236	199	238 -"French Pass"	189	237	253 -"Friar Grey"	128	126	121 -"Fringy Flower"	177	226	193 -"Froly"	245	117	132 -"Frost"	237	245	221 -"Frosted Mint"	219	255	248 -"Frostee"	228	246	231 -"Fruit Salad"	79	157	93 -"Fuchsia"	122	88	193 -"Fuego"	190	222	13 -"Fuel Yellow"	236	169	39 -"Fun Blue"	25	89	168 -"Fun Green"	1	109	57 -"Fuscous Grey"	84	83	77 -"Gable Green"	22	53	49 -"Gallery"	239	239	239 -"Galliano"	220	178	12 -"Geebung"	209	143	27 -"Genoa"	21	115	107 -"Geraldine"	251	137	137 -"Geyser"	212	223	226 -"Ghost"	199	201	213 -"Gigas"	82	60	148 -"Gimblet"	184	181	106 -"Gin"	232	242	235 -"Gin Fizz"	255	249	226 -"Givry"	248	228	191 -"Glacier"	128	179	196 -"Glade Green"	97	132	95 -"Go Ben"	114	109	78 -"Goblin"	61	125	82 -"Gold Drop"	241	130	0 -"Gold Tips"	222	186	19 -"Golden Bell"	226	137	19 -"Golden Dream"	240	213	45 -"Golden Fizz"	245	251	61 -"Golden Glow"	253	226	149 -"Golden Sand"	240	219	125 -"Golden Tainoi"	255	204	92 -"Gondola"	38	20	20 -"Gordons Green"	11	17	7 -"Gorse"	255	241	79 -"Gossamer"	6	155	129 -"Gossip"	210	248	176 -"Gothic"	109	146	161 -"Governor Bay"	47	60	179 -"Grain Brown"	228	213	183 -"Grandis"	255	211	140 -"Granite Green"	141	137	116 -"Granny Apple"	213	246	227 -"Granny Smith"	132	160	160 -"Grape"	56	26	81 -"Graphite"	37	22	7 -"Grass Hopper"	124	118	49 -"Gravel"	74	68	75 -"Green House"	36	80	15 -"Green Kelp"	37	49	28 -"Green Leaf"	67	106	13 -"Green Mist"	203	211	176 -"Green Pea"	29	97	66 -"Green Smoke"	164	175	110 -"Green Spring"	184	193	177 -"Green Vogue"	3	43	82 -"Green Waterloo"	16	20	5 -"Green White"	232	235	224 -"Greenstone"	0	62	64 -"Grenadier"	213	70	0 -"Grey Chateau"	162	170	179 -"Grey Green"	69	73	54 -"Grey Nickel"	195	195	189 -"Grey Nurse"	231	236	230 -"Grey Olive"	169	164	145 -"Grey Suit"	193	190	205 -"Guardsman Red"	186	1	1 -"Gulf Blue"	5	22	87 -"Gulf Stream"	128	179	174 -"Gull Grey"	157	172	183 -"Gum Leaf"	182	211	191 -"Gumbo"	124	161	166 -"Gun Powder"	65	66	87 -"Gunmetal"	2	13	21 -"Gunsmoke"	130	134	133 -"Gurkha"	154	149	119 -"Hacienda"	152	129	27 -"Hairy Heath"	107	42	20 -"Haiti"	27	16	53 -"Half and Half"	255	254	225 -"Half Baked"	133	196	204 -"Half Colonial White"	253	246	211 -"Half Dutch White"	254	247	222 -"Half Pearl Lusta"	255	252	234 -"Half Spanish White"	254	244	219 -"Hampton"	229	216	175 -"Harp"	230	242	234 -"Harvest Gold"	224	185	116 -"Havana"	52	21	21 -"Havelock Blue"	85	144	217 -"Hawaiian Tan"	157	86	22 -"Hawkes Blue"	212	226	252 -"Heath"	84	16	18 -"Heather"	183	195	208 -"Heathered Grey"	182	176	149 -"Heavy Metal"	43	50	40 -"Hemlock"	94	93	59 -"Hemp"	144	120	116 -"Hibiscus"	182	49	108 -"Highball"	144	141	57 -"Highland"	111	142	99 -"Hillary"	172	165	134 -"Himalaya"	106	93	27 -"Hint of Green"	230	255	233 -"Hint of Grey"	252	255	249 -"Hint of Red"	249	249	249 -"Hint of Yellow"	250	253	228 -"Hippie Blue"	88	154	175 -"Hippie Green"	83	130	75 -"Hippie Pink"	174	69	96 -"Hit Grey"	161	173	181 -"Hit Pink"	255	171	129 -"Hokey Pokey"	200	165	40 -"Hoki"	101	134	159 -"Holly"	1	29	19 -"Honey Flower"	79	28	112 -"Honeysuckle"	237	252	132 -"Hopbush"	208	109	161 -"Horizon"	90	135	160 -"Horses Neck"	96	73	19 -"Hot Chile"	139	7	35 -"Hot Curry"	136	98	33 -"Hot Purple"	72	6	86 -"Hot Toddy"	179	128	7 -"Humming Bird"	207	249	243 -"Hunter Green"	22	29	16 -"Hurricane"	135	124	123 -"Husk"	183	164	88 -"Ice Cold"	177	244	231 -"Iceberg"	218	244	240 -"Illusion"	246	164	201 -"Indian Tan"	77	30	1 -"Indochine"	194	107	3 -"Irish Coffee"	95	61	38 -"Iroko"	67	49	32 -"Iron"	212	215	217 -"Ironbark"	65	31	16 -"Ironside Grey"	103	102	98 -"Ironstone"	134	72	60 -"Island Spice"	255	252	238 -"Jacaranda"	46	3	41 -"Jacarta"	58	42	106 -"Jacko Bean"	46	25	5 -"Jacksons Purple"	32	32	141 -"Jade"	66	121	119 -"Jaffa"	239	134	63 -"Jagged Ice"	194	232	229 -"Jagger"	53	14	87 -"Jaguar"	8	1	16 -"Jambalaya"	91	48	19 -"Janna"	244	235	211 -"Japanese Laurel"	10	105	6 -"Japanese Maple"	120	1	9 -"Japonica"	216	124	99 -"Jarrah"	52	21	21 -"Java"	31	194	194 -"Jazz"	120	1	9 -"Jelly Bean"	41	123	154 -"Jet Stream"	181	210	206 -"Jewel"	18	107	64 -"Joanna"	245	243	229 -"Jon"	59	31	31 -"Jonquil"	238	255	154 -"Jordy Blue"	138	185	241 -"Judge Grey"	84	67	51 -"Jumbo"	124	123	130 -"Jungle Green"	40	30	21 -"Jungle Mist"	180	207	211 -"Juniper"	109	146	146 -"Just Right"	236	205	185 -"Kabul"	94	72	62 -"Kaitoke Green"	0	70	32 -"Kangaroo"	198	200	189 -"Karaka"	30	22	9 -"Karry"	255	234	212 -"Kashmir Blue"	80	112	150 -"Kelp"	69	73	54 -"Kenyan Copper"	124	28	5 -"Keppel"	58	176	158 -"Kidnapper"	225	234	212 -"Kilamanjaro"	36	12	2 -"Killarney"	58	106	71 -"Kimberly"	115	108	159 -"Kingfisher Daisy"	62	4	128 -"Kobi"	231	159	196 -"Kokoda"	110	109	87 -"Korma"	143	75	14 -"Koromiko"	255	189	95 -"Kournikova"	255	231	114 -"Kumera"	136	98	33 -"La Palma"	54	135	22 -"La Rioja"	179	193	16 -"Las Palmas"	198	230	16 -"Laser"	200	181	104 -"Laurel"	116	147	120 -"Lavender"	168	153	230 -"Leather"	150	112	89 -"Lemon"	244	216	28 -"Lemon Ginger"	172	158	34 -"Lemon Grass"	155	158	143 -"Licorice"	9	34	86 -"Lightning Yellow"	252	192	30 -"Lilac Bush"	152	116	211 -"Lily"	200	170	191 -"Lily White"	231	248	255 -"Lima"	118	189	23 -"Lime"	191	201	33 -"Limeade"	111	157	2 -"Limed Ash"	116	125	99 -"Limed Gum"	66	57	33 -"Limed Oak"	172	138	86 -"Limed Spruce"	57	72	81 -"Limerick"	157	194	9 -"Linen"	230	228	212 -"Link Water"	217	228	245 -"Lipstick"	171	5	99 -"Lisbon Brown"	66	57	33 -"Livid Brown"	77	40	46 -"Loafer"	238	244	222 -"Loblolly"	189	201	206 -"Lochinvar"	44	140	132 -"Lochmara"	0	126	199 -"Locust"	168	175	142 -"Log Cabin"	36	42	29 -"Logan"	170	169	205 -"Lola"	223	207	219 -"London Hue"	190	166	195 -"Lonestar"	109	1	1 -"Lotus"	134	60	60 -"Loulou"	70	11	65 -"Lucky"	175	159	28 -"Lucky Point"	26	26	104 -"Lunar Green"	60	73	58 -"Lusty"	153	27	7 -"Luxor Gold"	167	136	44 -"Lynch"	105	126	154 -"Mabel"	217	247	255 -"Madang"	183	240	190 -"Madison"	9	37	93 -"Madras"	63	48	2 -"Magnolia"	248	244	255 -"Mahogany"	78	6	6 -"Mai Tai"	176	102	8 -"Maire"	19	10	6 -"Maize"	245	213	160 -"Makara"	137	125	109 -"Mako"	68	73	84 -"Malachite Green"	136	141	101 -"Malibu"	125	200	247 -"Mallard"	35	52	24 -"Malta"	189	178	161 -"Mamba"	142	129	144 -"Mandalay"	173	120	27 -"Mandy"	226	84	101 -"Mandys Pink"	242	195	178 -"Manhattan"	245	201	153 -"Mantis"	116	195	101 -"Mantle"	139	156	144 -"Manz"	238	239	120 -"Mardi Gras"	53	0	54 -"Marigold"	185	141	40 -"Mariner"	40	106	205 -"Marlin"	42	20	14 -"Maroon"	66	3	3 -"Marshland"	11	15	8 -"Martini"	175	160	158 -"Martinique"	54	48	80 -"Marzipan"	248	219	157 -"Masala"	64	59	56 -"Mash"	64	41	29 -"Matisse"	27	101	157 -"Matrix"	176	93	84 -"Matterhorn"	78	59	65 -"Maverick"	216	194	213 -"McKenzie"	175	135	81 -"Melanie"	228	194	213 -"Melanzane"	48	5	41 -"Melrose"	199	193	255 -"Meranti"	93	30	15 -"Mercury"	229	229	229 -"Merino"	246	240	230 -"Merlin"	65	60	55 -"Merlot"	131	25	35 -"Metallic Bronze"	73	55	27 -"Metallic Copper"	113	41	29 -"Meteor"	208	125	18 -"Meteorite"	60	31	118 -"Mexican Red"	167	37	37 -"Mid Grey"	95	95	110 -"Midnight"	1	22	53 -"Midnight Express"	0	7	65 -"Midnight Moss"	4	16	4 -"Mikado"	45	37	16 -"Milan"	250	255	164 -"Milano Red"	184	17	4 -"Milk Punch"	255	246	212 -"Milk White"	246	240	230 -"Millbrook"	89	68	51 -"Mimosa"	248	253	211 -"Mindaro"	227	249	136 -"Mine Shaft"	50	50	50 -"Mineral Green"	63	93	83 -"Ming"	54	116	125 -"Minsk"	63	48	127 -"Mint Julep"	241	238	193 -"Mint Tulip"	196	244	235 -"Mirage"	22	25	40 -"Mischka"	209	210	221 -"Mist Grey"	196	196	188 -"Mobster"	127	117	137 -"Moccaccino"	110	29	20 -"Mocha"	120	45	25 -"Mojo"	192	71	55 -"Mona Lisa"	255	161	148 -"Monarch"	139	7	35 -"Mondo"	74	60	48 -"Mongoose"	181	162	127 -"Monsoon"	138	131	137 -"Montana"	41	30	48 -"Monte Carlo"	131	208	198 -"Monza"	199	3	30 -"Moody Blue"	127	118	211 -"Moon Glow"	252	254	218 -"Moon Mist"	220	221	204 -"Moon Raker"	214	206	246 -"Moon Yellow"	252	217	23 -"Morning Glory"	158	222	224 -"Morocco Brown"	68	29	0 -"Mortar"	80	67	81 -"Mosaic"	18	52	71 -"Mosque"	3	106	110 -"Mountain Mist"	149	147	150 -"Muddy Waters"	183	142	92 -"Muesli"	170	139	91 -"Mulberry"	92	5	54 -"Mule Fawn"	140	71	47 -"Mulled Wine"	78	69	98 -"Mustard"	116	100	13 -"My Pink"	214	145	136 -"My Sin"	255	179	31 -"Mystic"	226	235	237 -"Nandor"	75	93	82 -"Napa"	172	164	148 -"Narvik"	237	249	241 -"Natural"	134	86	10 -"Nebula"	203	219	214 -"Negroni"	255	226	197 -"Nepal"	142	171	193 -"Neptune"	124	183	187 -"Nero"	20	6	0 -"Neutral Green"	172	165	134 -"Nevada"	100	110	117 -"New Amber"	123	56	1 -"New Orleans"	243	214	157 -"New York Pink"	215	131	127 -"Niagara"	6	161	137 -"Night Rider"	31	18	15 -"Night Shadz"	170	55	90 -"Nightclub"	102	0	69 -"Nile Blue"	25	55	81 -"Nobel"	183	177	177 -"Nomad"	186	177	162 -"Nordic"	1	39	49 -"Norway"	168	189	159 -"Nugget"	197	153	34 -"Nutmeg"	129	66	44 -"Nutmeg Wood Finish"	104	54	0 -"Oasis"	254	239	206 -"Observatory"	2	134	111 -"Ocean Green"	65	170	120 -"Off Green"	230	248	243 -"Off Yellow"	254	249	227 -"Oil"	40	30	21 -"Oiled Cedar"	124	28	5 -"Old Brick"	144	30	30 -"Old Copper"	114	74	47 -"Olive Green"	36	46	22 -"Olive Haze"	139	132	112 -"Olivetone"	113	110	16 -"Onahau"	205	244	255 -"Onion"	47	39	14 -"Opal"	169	198	194 -"Opium"	142	111	112 -"Oracle"	55	116	117 -"Orange Roughy"	196	87	25 -"Orange White"	254	252	237 -"Orchid White"	255	253	243 -"Oregon"	155	71	3 -"Orient"	1	94	133 -"Oriental Pink"	198	145	145 -"Orinoco"	243	251	212 -"Oslo Grey"	135	141	145 -"Ottoman"	233	248	237 -"Outer Space"	5	16	64 -"Oxford Blue"	56	69	85 -"Oxley"	119	158	134 -"Oyster Bay"	218	250	255 -"Oyster Pink"	233	206	205 -"Paarl"	166	85	41 -"Pablo"	119	111	97 -"Pacifika"	119	129	32 -"Paco"	65	31	16 -"Padua"	173	230	196 -"Pale Leaf"	192	211	185 -"Pale Oyster"	152	141	119 -"Pale Prim"	253	254	184 -"Pale Rose"	255	225	242 -"Pale Sky"	110	119	131 -"Pale Slate"	195	191	193 -"Palm Green"	9	35	15 -"Palm Leaf"	25	51	14 -"Pampas"	244	242	238 -"Panache"	234	246	238 -"Pancho"	237	205	171 -"Panda"	66	57	33 -"Paprika"	141	2	38 -"Paradiso"	49	125	130 -"Parchment"	241	233	210 -"Paris Daisy"	255	244	110 -"Paris M"	38	5	106 -"Paris White"	202	220	212 -"Parsley"	19	79	25 -"Patina"	99	154	143 -"Pattens Blue"	222	245	255 -"Paua"	38	3	104 -"Pavlova"	215	196	152 -"Pea Soup"	207	229	210 -"Peach"	255	240	219 -"Peach Schnapps"	255	220	214 -"Peanut"	120	47	22 -"Pearl Bush"	232	224	213 -"Pearl Lusta"	252	244	220 -"Peat"	113	107	86 -"Pelorous"	62	171	191 -"Peppermint"	227	245	225 -"Perano"	169	190	242 -"Perfume"	208	190	248 -"Periglacial Blue"	225	230	214 -"Persian Plum"	112	28	28 -"Persian Red"	82	12	23 -"Persimmon"	255	107	83 -"Peru Tan"	127	58	2 -"Pesto"	124	118	49 -"Petite Orchid"	219	150	144 -"Pewter"	150	168	161 -"Pharlap"	163	128	123 -"Picasso"	255	243	157 -"Pickled Aspen"	63	76	58 -"Pickled Bean"	110	72	38 -"Pickled Bluewood"	49	68	89 -"Picton Blue"	69	177	232 -"Pigeon Post"	175	189	217 -"Pine Cone"	109	94	84 -"Pine Glade"	199	205	144 -"Pine Tree"	23	31	4 -"Pink Flare"	225	192	200 -"Pink Lace"	255	221	244 -"Pink Lady"	255	241	216 -"Pink Swan"	190	181	183 -"Piper"	201	99	35 -"Pipi"	254	244	204 -"Pippin"	255	225	223 -"Pirate Gold"	186	127	3 -"Pistachio"	157	194	9 -"Pixie Green"	192	216	182 -"Pizazz"	255	144	0 -"Pizza"	201	148	21 -"Plantation"	39	80	75 -"Planter"	97	93	48 -"Plum"	65	0	86 -"Pohutukawa"	143	2	28 -"Polar"	229	249	246 -"Polo Blue"	141	168	204 -"Pompadour"	102	0	69 -"Porcelain"	239	242	243 -"Porsche"	234	174	105 -"Port Gore"	37	31	79 -"Portafino"	255	255	180 -"Portage"	139	159	238 -"Portica"	249	230	99 -"Pot Pourri"	245	231	226 -"Potters Clay"	140	87	56 -"Powder Blue"	188	201	194 -"Prairie Sand"	154	56	32 -"Prelude"	208	192	229 -"Prim"	240	226	236 -"Primrose"	237	234	153 -"Promenade"	252	255	231 -"Provincial Pink"	254	245	241 -"Prussian Blue"	0	49	83 -"Pueblo"	125	44	20 -"Puerto Rico"	63	193	170 -"Pumice"	194	202	196 -"Pumpkin"	177	97	11 -"Punch"	220	67	51 -"Punga"	77	61	20 -"Putty"	231	205	140 -"Quarter Pearl Lusta"	255	253	244 -"Quarter Spanish White"	247	242	225 -"Quicksand"	189	151	142 -"Quill Grey"	214	214	209 -"Quincy"	98	63	45 -"Racing Green"	12	25	17 -"Raffia"	234	218	184 -"Rain Forest"	119	129	32 -"Raincloud"	123	124	148 -"Rainee"	185	200	172 -"Rajah"	247	182	104 -"Rangitoto"	46	50	34 -"Rangoon Green"	28	30	19 -"Raven"	114	123	137 -"Rebel"	60	18	6 -"Red Beech"	123	56	1 -"Red Berry"	142	0	0 -"Red Damask"	218	106	65 -"Red Devil"	134	1	17 -"Red Oxide"	110	9	2 -"Red Robin"	128	52	31 -"Red Stage"	208	95	4 -"Redwood"	93	30	15 -"Reef"	201	255	162 -"Reef Gold"	159	130	28 -"Regal Blue"	1	63	106 -"Regent Grey"	134	148	159 -"Regent St Blue"	170	214	230 -"Remy"	254	235	243 -"Reno Sand"	168	101	21 -"Resolution Blue"	0	35	135 -"Revolver"	44	22	50 -"Rhino"	46	63	98 -"Ribbon"	102	0	69 -"Rice Cake"	255	254	240 -"Rice Flower"	238	255	226 -"Rich Gold"	168	83	7 -"Rio Grande"	187	208	9 -"Riptide"	139	230	216 -"River Bed"	67	76	89 -"Rob Roy"	234	198	116 -"Robins Egg Blue"	189	200	179 -"Rock"	77	56	51 -"Rock Blue"	158	177	205 -"Rock Salt"	255	255	255 -"Rock Spray"	186	69	12 -"Rodeo Dust"	201	178	155 -"Rolling Stone"	116	125	131 -"Roman"	222	99	96 -"Roman Coffee"	121	93	76 -"Romance"	255	254	253 -"Romantic"	255	210	183 -"Ronchi"	236	197	78 -"Roof Terracotta"	166	47	32 -"Rope"	142	77	30 -"Rose"	231	188	180 -"Rose Bud"	251	178	163 -"Rose Bud Cherry"	128	11	71 -"Rose of Sharon"	191	85	0 -"Rose White"	255	246	245 -"Rosewood"	101	0	11 -"Roti"	198	168	75 -"Rouge"	162	59	108 -"Royal Heath"	171	52	114 -"Rum"	121	105	137 -"Rum Swizzle"	249	248	228 -"Russett"	117	90	87 -"Rustic Red"	72	4	4 -"Rusty Nail"	134	86	10 -"Saddle"	76	48	36 -"Saddle Brown"	88	52	1 -"Saffron"	249	191	88 -"Sage"	158	165	135 -"Sahara"	183	162	20 -"Sail"	184	224	249 -"Salem"	9	127	75 -"Salomie"	254	219	141 -"Salt Box"	104	94	110 -"Saltpan"	241	247	242 -"Sambuca"	58	32	16 -"San Felix"	11	98	7 -"San Juan"	48	75	106 -"San Marino"	69	108	172 -"Sand Dune"	130	111	101 -"Sandal"	170	141	111 -"Sandrift"	171	145	122 -"Sandstone"	121	109	98 -"Sandwisp"	245	231	162 -"Sandy Beach"	255	234	200 -"Sangria"	146	0	10 -"Sanguine Brown"	141	61	56 -"Santa Fe"	177	109	82 -"Santas Grey"	159	160	177 -"Sapling"	222	212	164 -"Sapphire"	47	81	158 -"Saratoga"	85	91	16 -"Sauvignon"	255	245	243 -"Sazerac"	255	244	224 -"Scampi"	103	95	166 -"Scandal"	207	250	244 -"Scarlet Gum"	67	21	96 -"Scarlett"	149	0	21 -"Scarpa Flow"	88	85	98 -"Schist"	169	180	151 -"Schooner"	139	132	126 -"Scooter"	46	191	212 -"Scorpion"	105	95	98 -"Scotch Mist"	255	251	220 -"Scrub"	46	50	34 -"Sea Buckthorn"	251	161	41 -"Sea Fog"	252	255	249 -"Sea Green"	9	88	89 -"Sea Mist"	197	219	202 -"Sea Nymph"	120	163	156 -"Sea Pink"	237	152	158 -"Seagull"	128	204	234 -"Seance"	115	30	143 -"Seashell"	241	241	241 -"Seaweed"	27	47	17 -"Selago"	240	238	253 -"Sepia"	43	2	2 -"Serenade"	255	244	232 -"Shadow Green"	154	194	184 -"Shady Lady"	170	165	169 -"Shakespeare"	78	171	209 -"Shalimar"	251	255	186 -"Shark"	37	39	44 -"Sherpa Blue"	0	73	80 -"Sherwood Green"	2	64	44 -"Shilo"	232	185	179 -"Shingle Fawn"	107	78	49 -"Ship Cove"	120	139	186 -"Ship Grey"	62	58	68 -"Shiraz"	178	9	49 -"Shocking"	226	146	192 -"Shuttle Grey"	95	102	114 -"Siam"	100	106	84 -"Sidecar"	243	231	187 -"Silk"	189	177	168 -"Silver Chalice"	172	172	172 -"Silver Sand"	191	193	194 -"Silver Tree"	102	181	143 -"Sinbad"	159	215	211 -"Siren"	122	1	58 -"Sirocco"	113	128	128 -"Sisal"	211	203	186 -"Skeptic"	202	230	218 -"Slugger"	65	32	16 -"Smalt Blue"	81	128	143 -"Smoke Tree"	218	99	4 -"Smokey Ash"	65	60	55 -"Smoky"	96	91	115 -"Snow Drift"	247	250	247 -"Snow Flurry"	228	255	209 -"Snowy Mint"	214	255	219 -"Snuff"	226	216	237 -"Soapstone"	255	251	249 -"Soft Amber"	209	198	180 -"Soft Peach"	245	237	239 -"Solid Pink"	137	56	67 -"Solitaire"	254	248	226 -"Solitude"	234	246	255 -"Sorbus"	253	124	7 -"Sorrell Brown"	206	185	143 -"Sour Dough"	209	190	168 -"Soya Bean"	106	96	81 -"Space Shuttle"	67	49	32 -"Spanish Green"	129	152	133 -"Spanish White"	244	235	211 -"Spectra"	47	90	87 -"Spice"	106	68	46 -"Spicy Mix"	136	83	66 -"Spicy Pink"	129	110	113 -"Spindle"	182	209	234 -"Splash"	255	239	193 -"Spray"	121	222	236 -"Spring Green"	87	131	99 -"Spring Rain"	172	203	177 -"Spring Sun"	246	255	220 -"Spring Wood"	248	246	241 -"Sprout"	193	215	176 -"Spun Pearl"	170	171	183 -"Squirrel"	143	129	118 -"St Tropaz"	45	86	155 -"Stack"	138	143	138 -"Star Dust"	159	159	156 -"Stark White"	229	215	189 -"Starship"	236	242	69 -"Steel Grey"	38	35	53 -"Stiletto"	156	51	54 -"Stinger"	139	107	11 -"Stonewall"	146	133	115 -"Storm Dust"	100	100	99 -"Storm Grey"	113	116	134 -"Stratos"	0	7	65 -"Straw"	212	191	141 -"Strikemaster"	149	99	135 -"Stromboli"	50	93	82 -"Studio"	113	74	178 -"Submarine"	186	199	201 -"Sugar Cane"	249	255	246 -"Sulu"	193	240	124 -"Summer Green"	150	187	171 -"Sun"	251	172	19 -"Sundance"	201	179	91 -"Sundown"	255	177	179 -"Sunflower"	228	212	34 -"Sunglo"	225	104	101 -"Sunset"	220	67	51 -"Sunshade"	255	158	44 -"Supernova"	255	201	1 -"Surf"	187	215	193 -"Surf Crest"	207	229	210 -"Surfie Green"	12	122	121 -"Sushi"	135	171	57 -"Suva Grey"	136	131	135 -"Swamp"	0	27	28 -"Swans Down"	220	240	234 -"Sweet Corn"	251	234	140 -"Sweet Pink"	253	159	162 -"Swirl"	211	205	197 -"Swiss Coffee"	221	214	213 -"Sycamore"	144	141	57 -"Tabasco"	160	39	18 -"Tacao"	237	179	129 -"Tacha"	214	197	98 -"Tahiti Gold"	233	124	7 -"Tahuna Sands"	238	240	200 -"Tall Poppy"	179	45	41 -"Tallow"	168	165	137 -"Tamarillo"	153	22	19 -"Tamarind"	52	21	21 -"Tana"	217	220	193 -"Tangaroa"	3	22	60 -"Tangerine"	233	110	0 -"Tango"	237	122	28 -"Tapa"	123	120	116 -"Tapestry"	176	94	129 -"Tara"	225	246	232 -"Tarawera"	7	58	80 -"Tasman"	207	220	207 -"Taupe Grey"	179	175	149 -"Tawny Port"	105	37	69 -"Tax Break"	81	128	143 -"Te Papa Green"	30	67	60 -"Tea"	193	186	176 -"Teak"	177	148	97 -"Teak Wood Finish"	107	42	20 -"Teal Blue"	4	66	89 -"Temptress"	59	0	11 -"Tequila"	255	230	199 -"Texas"	248	249	156 -"Texas Rose"	255	181	85 -"Thatch"	182	157	152 -"Thatch Green"	64	61	25 -"Thistle"	204	202	168 -"Thunder"	51	41	47 -"Thunderbird"	192	43	24 -"Tia Maria"	193	68	14 -"Tiara"	195	209	209 -"Tiber"	6	53	55 -"Tidal"	241	255	173 -"Tide"	191	184	176 -"Timber Green"	22	50	44 -"Titan White"	240	238	255 -"Toast"	154	110	97 -"Tobacco Brown"	113	93	71 -"Tobago"	62	43	35 -"Toledo"	58	0	32 -"Tolopea"	27	2	69 -"Tom Thumb"	63	88	59 -"Tonys Pink"	231	159	140 -"Topaz"	124	119	138 -"Torea Bay"	15	45	158 -"Tory Blue"	20	80	170 -"Tosca"	141	63	63 -"Totem Pole"	153	27	7 -"Touch Wood"	55	48	33 -"Tower Grey"	169	189	191 -"Tradewind"	95	179	172 -"Tranquil"	230	255	255 -"Travertine"	255	253	232 -"Tree Poppy"	252	156	29 -"Treehouse"	59	40	32 -"Trendy Green"	124	136	26 -"Trendy Pink"	140	100	149 -"Trinidad"	230	78	3 -"Tropical Blue"	195	221	249 -"Trout"	74	78	90 -"True V"	138	115	214 -"Tuatara"	54	53	52 -"Tuft Bush"	255	221	205 -"Tulip Tree"	234	179	59 -"Tumbleweed"	55	41	14 -"Tuna"	53	53	66 -"Tundora"	74	66	68 -"Turbo"	250	230	0 -"Turkish Rose"	181	114	129 -"Turmeric"	202	187	72 -"Turtle Green"	42	56	11 -"Tuscany"	189	94	46 -"Tusk"	238	243	195 -"Tussock"	197	153	75 -"Tutu"	255	241	249 -"Twilight"	228	207	222 -"Twilight Blue"	238	253	255 -"Twine"	194	149	93 -"Valencia"	216	68	55 -"Valentino"	53	14	66 -"Valhalla"	43	25	79 -"Van Cleef"	73	23	12 -"Vanilla"	209	190	168 -"Vanilla Ice"	243	217	223 -"Varden"	255	246	223 -"Venetian Red"	114	1	15 -"Venice Blue"	5	89	137 -"Venus"	146	133	144 -"Verdigris"	93	94	55 -"Verdun Green"	73	84	0 -"Vesuvius"	177	74	11 -"Victoria"	83	68	145 -"Vida Loca"	84	144	25 -"Viking"	100	204	219 -"Vin Rouge"	152	61	97 -"Viola"	203	143	169 -"Violent Violet"	41	12	94 -"Violet"	36	10	64 -"Viridian Green"	103	137	117 -"Vis Vis"	255	239	161 -"Vista Blue"	143	214	180 -"Vista White"	252	248	247 -"Volcano"	101	26	20 -"Voodoo"	83	52	85 -"Vulcan"	16	18	29 -"Wafer"	222	203	198 -"Waikawa Grey"	90	110	156 -"Waiouru"	54	60	13 -"Walnut"	119	63	26 -"Wan White"	252	255	249 -"Wasabi"	120	138	37 -"Water Leaf"	161	233	222 -"Watercourse"	5	111	87 -"Waterloo "	123	124	148 -"Wattle"	220	215	71 -"Watusi"	255	221	207 -"Wax Flower"	255	192	168 -"We Peep"	247	219	230 -"Wedgewood"	78	127	158 -"Well Read"	180	51	50 -"West Coast"	98	81	25 -"West Side"	255	145	15 -"Westar"	220	217	210 -"Western Red"	139	7	35 -"Wewak"	241	155	171 -"Wheatfield"	243	237	207 -"Whiskey"	213	154	111 -"Whiskey Sour"	219	153	94 -"Whisper"	247	245	250 -"White Ice"	221	249	241 -"White Lilac"	248	247	252 -"White Linen"	248	240	232 -"White Nectar"	252	255	231 -"White Pointer"	254	248	255 -"White Rock"	234	232	212 -"Wild Rice"	236	224	144 -"Wild Sand"	244	244	244 -"Wild Willow"	185	196	106 -"William"	58	104	108 -"Willow Brook"	223	236	218 -"Willow Grove"	101	116	93 -"Windsor"	60	8	120 -"Wine Berry"	89	29	53 -"Winter Hazel"	213	209	149 -"Wisp Pink"	254	244	248 -"Wisteria"	151	113	181 -"Wistful"	164	166	211 -"Witch Haze"	255	252	153 -"Wood Bark"	38	17	5 -"Woodburn"	60	32	5 -"Woodland"	77	83	40 -"Woodrush"	48	42	15 -"Woodsmoke"	12	13	15 -"Woody Bay"	41	33	48 -"Woody Brown"	72	49	49 -"Xanadu"	115	134	120 -"Yellow Metal"	113	99	56 -"Yellow Sea"	254	169	4 -"Your Pink"	255	195	192 -"Yukon Gold"	123	102	8 -"Yuma"	206	194	145 -"Zambezi"	104	85	88 -"Zanah"	218	236	214 -"Zest"	229	132	27 -"Zeus"	41	35	25 -"Ziggurat"	191	219	226 -"Zircon"	244	248	255 -"Zombie"	228	214	155 -"Zorba"	165	155	145 -"Zuccini"	4	64	34 -"Zumthor"	237	246	255 -"Zydeco"	2	64	44 +"Abbey"	73	81	84 +"Acadia"	53	49	44 +"Acapulco"	117	170	148 +"Acorn"	115	99	48 +"Aero Blue"	192	232	213 +"Affair"	116	80	133 +"Afghan Tan"	144	94	38 +"Akaroa"	190	178	154 +"Alabaster"	242	240	230 +"Albescent White"	225	218	203 +"Alert Tan"	149	78	44 +"Allports"	31	106	125 +"Almond Frost"	154	134	120 +"Alpine"	173	138	59 +"Alto"	205	198	197 +"Aluminium"	132	135	137 +"Amazon"	56	123	84 +"Americano"	138	125	114 +"Amethyst Smoke"	149	135	156 +"Amour"	245	230	234 +"Amulet"	125	157	114 +"Anakiwa"	140	206	234 +"Antique Brass"	108	70	31 +"Anzac"	198	142	63 +"Apache"	211	169	92 +"Apple"	102	179	72 +"Apple Blossom"	169	82	73 +"Apple Green"	222	234	220 +"Apricot"	228	143	103 +"Apricot White"	247	240	219 +"Aqua"	146	211	202 +"Aqua Haze"	217	221	213 +"Aqua Spring"	232	243	232 +"Aqua Squeeze"	219	228	220 +"Aquamarine"	32	89	72 +"Arapawa"	39	74	93 +"Armadillo"	72	74	70 +"Arrowtown"	130	122	103 +"Ash"	190	186	167 +"Ash Brown"	73	63	47 +"Asphalt"	42	41	34 +"Astra"	237	213	166 +"Astral"	55	111	137 +"Astronaut"	68	81	114 +"Astronaut Blue"	33	69	89 +"Athens Grey"	220	221	221 +"Aths Special"	213	203	178 +"Atlantis"	156	208	59 +"Atoll"	43	121	122 +"Atomic"	61	75	82 +"Au Chico"	158	103	89 +"Aubergine"	55	37	40 +"Australian Mint"	239	248	170 +"Avocado"	149	152	107 +"Axolotl"	99	119	90 +"Azalea"	249	192	196 +"Aztec"	41	52	50 +"Azure"	78	105	154 +"Bahama Blue"	37	89	127 +"Bahia"	169	192	28 +"Baja White"	240	223	187 +"Bali Hai"	132	156	169 +"Baltic Sea"	60	61	62 +"Bamboo"	186	111	63 +"Bandicoot"	135	132	102 +"Banjul"	52	50	45 +"Barberry"	210	198	31 +"Barley Corn"	182	147	92 +"Barley White"	247	229	183 +"Barossa"	69	46	57 +"Bastille"	44	44	50 +"Battleship Grey"	81	87	79 +"Bay Leaf"	123	177	141 +"Bay Of Many"	53	62	100 +"Bazaar"	143	119	119 +"Bean"	74	53	49 +"Beauty Bush"	235	185	179 +"Beeswax"	233	215	171 +"Bermuda"	134	210	193 +"Bermuda Grey"	111	140	159 +"Beryl Green"	188	191	168 +"Bianca"	244	239	224 +"Big Stone"	51	64	70 +"Bilbao"	62	128	39 +"Biloba Flower"	174	153	210 +"Birch"	63	55	38 +"Bird Flower"	208	193	23 +"Biscay"	47	60	83 +"Bismark"	72	108	122 +"Bison Hide"	181	172	148 +"Bitter"	136	137	108 +"Bitter Lemon"	210	219	50 +"Bizarre"	231	210	200 +"Black Bean"	35	46	38 +"Black Forest"	44	50	39 +"Black Haze"	224	222	215 +"Black Magic"	51	44	34 +"Black Marlin"	56	55	64 +"Black Pearl"	30	39	44 +"Black Pepper"	60	55	49 +"Black Rock"	44	45	60 +"Black Rose"	83	41	52 +"Black Russian"	36	37	43 +"Black Squeeze"	229	230	223 +"Black White"	229	228	219 +"Blackberry"	67	24	47 +"Blackcurrant"	46	24	59 +"Blackwood"	63	55	46 +"Blanc"	217	208	193 +"Bleach White"	235	225	206 +"Bleached Cedar"	69	70	71 +"Blossom"	223	177	182 +"Blue Bark"	30	39	44 +"Blue Bayoux"	98	119	126 +"Blue Bell"	57	45	115 +"Blue Chalk"	227	214	233 +"Blue Charcoal"	38	43	47 +"Blue Chill"	64	143	144 +"Blue Diamond"	75	45	114 +"Blue Dianne"	53	81	79 +"Blue Gem"	75	60	142 +"Blue Haze"	189	186	206 +"Blue Lagoon"	0	98	111 +"Blue Marguerite"	106	91	177 +"Blue Romance"	216	240	210 +"Blue Smoke"	120	133	122 +"Blue Stone"	22	100	97 +"Blue Whale"	30	52	66 +"Blue Zodiac"	60	67	84 +"Blumine"	48	92	113 +"Blush"	181	80	103 +"Bokara Grey"	42	39	37 +"Bombay"	174	174	173 +"Bon Jour"	223	215	210 +"Bondi Blue"	38	65	107 +"Bone"	219	194	171 +"Bordeaux"	76	28	36 +"Bossanova"	76	61	78 +"Boston Blue"	67	142	172 +"Botticelli"	146	172	180 +"Bottle Green"	37	70	54 +"Boulder"	124	129	124 +"Bouquet"	167	129	153 +"Bourbon"	175	108	62 +"Bracken"	91	61	39 +"Brandy"	220	182	138 +"Brandy Punch"	192	124	64 +"Brandy Rose"	182	133	122 +"Brazil"	129	91	40 +"Breaker Bay"	81	123	120 +"Bridal Heath"	248	235	221 +"Bridesmaid"	250	230	223 +"Bright Grey"	87	89	93 +"Bright Red"	146	42	49 +"Bright Sun"	236	189	44 +"Bronco"	167	151	129 +"Bronze"	73	59	47 +"Bronze Olive"	88	76	37 +"Bronzetone"	67	76	40 +"Broom"	238	204	36 +"Brown Bramble"	83	51	30 +"Brown Derby"	89	69	55 +"Brown Pod"	60	36	27 +"Bubbles"	230	242	234 +"Buccaneer"	110	81	80 +"Bud"	165	168	143 +"Buddha Gold"	188	155	27 +"Bulgarian Rose"	72	36	39 +"Bull Shot"	117	68	43 +"Bunker"	41	44	47 +"Bunting"	43	52	73 +"Burgundy"	101	37	37 +"Burnham"	35	69	55 +"Burning Sand"	208	131	99 +"Burnt Crimson"	88	33	36 +"Bush"	37	70	54 +"Buttercup"	218	148	41 +"Buttered Rum"	157	112	46 +"Butterfly Bush"	104	87	140 +"Buttermilk"	246	224	164 +"Buttery White"	241	235	218 +"Cab Sav"	74	46	50 +"Cabaret"	205	82	108 +"Cabbage Pont"	76	85	68 +"Cactus"	91	111	85 +"Cadillac"	152	73	97 +"Cafe Royale"	106	73	40 +"Calico"	213	177	133 +"California"	233	140	58 +"Calypso"	61	113	136 +"Camarone"	32	105	55 +"Camelot"	128	58	75 +"Cameo"	204	164	131 +"Camouflage"	79	77	50 +"Can Can"	208	138	155 +"Canary"	226	230	77 +"Candlelight"	224	157	55 +"Cannon Black"	51	44	34 +"Cannon Pink"	142	81	100 +"Canvas"	163	153	119 +"Cape Cod"	78	85	82 +"Cape Honey"	254	224	165 +"Cape Palliser"	117	72	47 +"Caper"	175	193	130 +"Capri"	48	67	106 +"Caramel"	255	213	154 +"Cararra"	235	229	213 +"Cardin Green"	27	52	39 +"Cardinal"	138	36	78 +"Careys Pink"	201	154	160 +"Carissma"	230	128	149 +"Carla"	245	249	203 +"Carnaby Tan"	91	58	36 +"Carousel Pink"	248	219	224 +"Casablanca"	240	178	83 +"Casal"	63	84	90 +"Cascade"	140	168	160 +"Cashmere"	209	179	153 +"Casper"	170	181	184 +"Castro"	68	35	47 +"Catalina Blue"	39	60	90 +"Catskill White"	224	228	220 +"Cavern Pink"	224	184	177 +"Ce Soir"	146	113	167 +"Cedar"	70	52	48 +"Celery"	180	192	76 +"Celeste"	210	210	192 +"Cello"	58	78	95 +"Celtic"	43	63	54 +"Cement"	133	113	88 +"Ceramic"	223	221	214 +"Chablis"	253	233	224 +"Chalet Green"	90	110	65 +"Chalky"	223	194	129 +"Chambray"	71	88	119 +"Chamois"	232	205	154 +"Champagne"	238	217	182 +"Chantilly"	237	184	199 +"Charade"	57	64	67 +"Chardon"	248	234	223 +"Chardonnay"	255	200	120 +"Charlotte"	164	220	230 +"Charm"	208	116	139 +"Chateau Green"	65	159	89 +"Chatelle"	179	171	182 +"Chathams Blue"	44	89	113 +"Chelsea Cucumber"	136	169	91 +"Chelsea Gem"	149	83	47 +"Chenin"	222	195	113 +"Cherokee"	245	205	130 +"Cherry Pie"	55	45	82 +"Cherrywood"	78	49	46 +"Cherub"	245	215	220 +"Chetwode Blue"	102	111	180 +"Chicago"	91	93	86 +"Chiffon"	240	245	187 +"Chilean Fire"	208	94	52 +"Chilean Heath"	249	247	222 +"China Ivory"	251	243	211 +"Chino"	184	173	138 +"Chinook"	157	211	168 +"Chocolate"	61	35	39 +"Christalle"	56	33	97 +"Christi"	113	169	29 +"Christine"	191	101	46 +"Chrome White"	202	199	183 +"Cigar"	125	78	56 +"Cinder"	36	42	46 +"Cinderella"	251	215	204 +"Cinnamon"	123	72	43 +"Cioccolato"	93	59	46 +"Citron"	142	154	33 +"Citrus"	159	183	10 +"Clairvoyant"	104	59	125 +"Clam Shell"	210	179	169 +"Claret"	110	34	51 +"Classic Rose"	244	200	219 +"Clay Creek"	137	126	89 +"Clear Day"	223	239	234 +"Clementine"	193	79	59 +"Clinker"	70	54	35 +"Cloud"	194	188	177 +"Cloud Burst"	53	62	79 +"Cloudy"	176	169	159 +"Clover"	71	86	47 +"Cobalt"	39	60	90 +"Cocoa Bean"	79	56	53 +"Cocoa Brown"	53	40	30 +"Coconut Cream"	225	218	187 +"Cod Grey"	45	48	50 +"Coffee"	114	103	81 +"Coffee Bean"	54	45	38 +"Cognac"	154	70	61 +"Cola"	60	47	35 +"Cold Purple"	157	138	191 +"Cold Turkey"	202	181	178 +"Colonial White"	233	215	171 +"Comet"	99	99	115 +"Como"	76	120	92 +"Conch"	160	177	174 +"Concord"	130	127	121 +"Concrete"	210	209	205 +"Confetti"	221	203	70 +"Congo Brown"	101	77	73 +"Conifer"	177	221	82 +"Contessa"	193	111	104 +"Copper Canyon"	119	66	44 +"Copper Rust"	149	82	76 +"Coral"	192	176	147 +"Coral Candy"	245	208	201 +"Coral Tree"	171	110	103 +"Corduroy"	64	77	73 +"Coriander"	187	181	141 +"Cork"	90	76	66 +"Corn"	223	170	40 +"Corn Field"	248	243	196 +"Corn Harvest"	141	112	42 +"Cornflower"	255	171	160 +"Corvette"	233	186	129 +"Cosmic"	121	77	96 +"Cosmos"	252	213	207 +"Costa Del Sol"	98	93	42 +"Cotton Seed"	191	186	175 +"County Green"	27	75	53 +"Cove Grey"	52	63	92 +"Cowboy"	68	55	54 +"Crab Apple"	135	56	47 +"Crail"	166	86	72 +"Cranberry"	180	56	100 +"Crater Brown"	77	62	60 +"Cream Brulee"	255	227	155 +"Cream Can"	238	192	81 +"Creme De Banane"	224	193	97 +"Creole"	57	50	39 +"Crete"	119	113	43 +"Crocodile"	112	105	80 +"Crown Of Thorns"	118	60	51 +"Crowshead"	50	49	46 +"Cruise"	180	226	213 +"Crusoe"	22	91	49 +"Crusta"	243	134	83 +"Cuban Tan"	54	45	38 +"Cumin"	120	68	48 +"Cumulus"	245	244	193 +"Cupid"	245	178	197 +"Curious Blue"	61	133	184 +"Cutty Sark"	92	129	115 +"Cyprus"	15	70	69 +"Daintree"	39	63	65 +"Dairy Cream"	237	210	164 +"Daisy Bush"	91	62	144 +"Dallas"	102	74	45 +"Danube"	91	137	192 +"Dark Ebony"	55	49	43 +"Dark Oak"	85	52	43 +"Dark Rimu"	112	65	40 +"Dark Rum"	69	54	43 +"Dark Slate"	70	83	82 +"Dark Tan"	97	45	45 +"Dawn"	159	157	145 +"Dawn Pink"	230	214	205 +"De York"	133	202	135 +"Deco"	204	207	130 +"Deep Blush"	227	111	138 +"Deep Bronze"	81	65	45 +"Deep Cove"	58	78	88 +"Deep Fir"	25	57	37 +"Deep Koamaru"	52	52	103 +"Deep Oak"	61	50	44 +"Deep Sea"	22	126	101 +"Deep Teal"	25	68	60 +"Del Rio"	181	153	142 +"Dell"	72	101	49 +"Delta"	153	155	149 +"Deluge"	130	114	164 +"Derby"	249	228	198 +"Desert"	161	95	59 +"Desert Storm"	237	231	224 +"Dew"	231	242	233 +"Di Serria"	212	145	93 +"Diesel"	50	44	43 +"Dingley"	96	124	71 +"Disco"	137	45	79 +"Dixie"	205	132	49 +"Dolly"	245	241	113 +"Dolphin"	106	104	115 +"Domino"	108	91	76 +"Don Juan"	90	79	81 +"Donkey Brown"	129	110	92 +"Dorado"	110	95	86 +"Double Colonial White"	228	207	153 +"Double Pearl Lusta"	233	220	190 +"Double Spanish White"	210	195	163 +"Dove Grey"	119	118	114 +"Downriver"	42	52	74 +"Downy"	111	210	190 +"Driftwood"	143	111	72 +"Drover"	251	235	155 +"Dune"	81	79	74 +"Dust Storm"	229	202	192 +"Dusty Grey"	172	155	155 +"Dutch White"	240	223	187 +"Eagle"	176	172	148 +"Earls Green"	184	167	34 +"Early Dawn"	251	242	219 +"East Bay"	71	82	110 +"East Side"	170	140	188 +"Eastern Blue"	0	135	159 +"Ebb"	230	216	212 +"Ebony"	49	51	55 +"Ebony Clay"	50	52	56 +"Echo Blue"	164	175	205 +"Eclipse"	63	57	57 +"Ecru White"	214	209	192 +"Ecstasy"	201	97	56 +"Eden"	38	98	85 +"Edgewater"	193	216	197 +"Edward"	151	164	154 +"Egg Sour"	249	228	197 +"Egg White"	224	200	141 +"El Paso"	57	57	44 +"El Salva"	143	78	69 +"Elephant"	36	54	64 +"Elf Green"	27	138	107 +"Elm"	41	123	118 +"Embers"	140	63	48 +"Eminence"	110	57	116 +"Emperor"	80	73	74 +"Empress"	124	113	115 +"Endeavour"	41	89	139 +"Energy Yellow"	245	215	82 +"English Holly"	39	66	52 +"English Walnut"	71	59	47 +"Envy"	139	165	143 +"Equator"	218	177	96 +"Espresso"	78	49	45 +"Eternity"	45	47	40 +"Eucalyptus"	50	151	96 +"Eunry"	205	165	156 +"Evening Sea"	38	96	79 +"Everglade"	38	67	52 +"Fair Pink"	243	229	220 +"Falcon"	110	90	91 +"Fantasy"	242	230	221 +"Fedora"	98	86	101 +"Feijoa"	165	215	133 +"Fern"	54	92	52 +"Fern Frond"	87	94	46 +"Ferra"	135	106	104 +"Festival"	234	204	74 +"Feta"	219	224	208 +"Fiery Orange"	177	89	47 +"Fiji Green"	99	111	34 +"Finch"	117	120	90 +"Finlandia"	97	117	91 +"Finn"	105	69	84 +"Fiord"	75	90	98 +"Fire"	143	63	42 +"Fire Bush"	224	152	66 +"Firefly"	49	70	67 +"Flame Pea"	190	92	72 +"Flame Red"	134	40	46 +"Flamenco"	234	134	69 +"Flamingo"	225	99	79 +"Flax"	130	133	98 +"Flint"	113	110	97 +"Flirt"	122	46	77 +"Foam"	208	234	232 +"Fog"	213	199	232 +"Foggy Grey"	167	166	157 +"Forest Green"	51	66	49 +"Forget Me Not"	253	239	219 +"Fountain Blue"	101	173	178 +"Frangipani"	255	215	160 +"French Grey"	191	189	193 +"French Lilac"	222	183	217 +"French Pass"	164	210	224 +"Friar Grey"	134	131	122 +"Fringy Flower"	180	225	187 +"Froly"	229	109	117 +"Frost"	225	228	197 +"Frosted Mint"	226	242	228 +"Frostee"	219	229	210 +"Fruit Salad"	75	163	81 +"Fuchsia"	123	92	183 +"Fuego"	194	214	46 +"Fuel Yellow"	209	144	51 +"Fun Blue"	51	80	131 +"Fun Green"	21	99	61 +"Fuscous Grey"	60	59	60 +"Gable Green"	44	70	65 +"Gallery"	220	215	209 +"Galliano"	216	167	35 +"Geebung"	197	131	46 +"Genoa"	49	121	109 +"Geraldine"	231	123	117 +"Geyser"	203	208	207 +"Ghost"	192	191	199 +"Gigas"	86	71	134 +"Gimblet"	185	173	97 +"Gin"	217	223	205 +"Gin Fizz"	248	234	202 +"Givry"	235	212	174 +"Glacier"	120	177	191 +"Glade Green"	95	129	81 +"Go Ben"	120	110	76 +"Goblin"	52	83	61 +"Gold Drop"	213	108	48 +"Gold Tips"	226	178	39 +"Golden Bell"	202	129	54 +"Golden Dream"	241	204	43 +"Golden Fizz"	235	222	49 +"Golden Glow"	249	215	126 +"Golden Sand"	234	206	106 +"Golden Tainoi"	255	193	82 +"Gondola"	55	51	50 +"Gordons Green"	41	51	43 +"Gorse"	253	227	54 +"Gossamer"	57	159	134 +"Gossip"	159	211	133 +"Gothic"	105	136	144 +"Governor Bay"	81	85	155 +"Grain Brown"	202	184	162 +"Grandis"	255	205	115 +"Granite Green"	139	130	101 +"Granny Apple"	197	231	205 +"Granny Smith"	123	148	140 +"Grape"	65	61	75 +"Graphite"	56	52	40 +"Grass Hopper"	122	114	41 +"Gravel"	74	75	70 +"Green House"	62	99	52 +"Green Kelp"	57	61	42 +"Green Leaf"	82	107	45 +"Green Mist"	191	194	152 +"Green Pea"	38	98	66 +"Green Smoke"	156	166	100 +"Green Spring"	169	175	153 +"Green Vogue"	35	65	78 +"Green Waterloo"	44	45	36 +"Green White"	222	221	203 +"Greenstone"	36	108	70 +"Grenadier"	193	77	54 +"Grey Chateau"	159	163	167 +"Grey Green"	82	86	54 +"Grey Nickel"	189	186	174 +"Grey Nurse"	209	211	204 +"Grey Olive"	161	154	127 +"Grey Suit"	147	145	160 +"Guardsman Red"	149	46	49 +"Gulf Blue"	52	63	92 +"Gulf Stream"	116	178	168 +"Gull Grey"	164	173	176 +"Gum Leaf"	172	201	178 +"Gumbo"	113	143	138 +"Gun Powder"	72	71	83 +"Gunmetal"	44	53	57 +"Gunsmoke"	122	124	118 +"Gurkha"	152	145	113 +"Hacienda"	158	128	34 +"Hairy Heath"	99	53	40 +"Haiti"	44	42	53 +"Half And Half"	237	231	200 +"Half Baked"	85	143	147 +"Half Colonial White"	242	229	191 +"Half Dutch White"	251	240	214 +"Half Pearl Lusta"	241	234	215 +"Half Spanish White"	230	219	199 +"Hampton"	232	212	162 +"Harp"	203	206	192 +"Harvest Gold"	234	183	106 +"Havana"	59	43	44 +"Havelock Blue"	87	132	193 +"Hawaiian Tan"	153	82	43 +"Hawkes Blue"	210	218	237 +"Heath"	79	42	44 +"Heather"	174	187	193 +"Heathered Grey"	148	140	126 +"Heavy Metal"	70	71	62 +"Hemlock"	105	104	75 +"Hemp"	152	125	115 +"Hibiscus"	179	54	84 +"Highball"	146	140	60 +"Highland"	122	148	97 +"Hillary"	167	160	126 +"Himalaya"	115	99	48 +"Hint Of Green"	223	241	214 +"Hint Of Grey"	223	221	214 +"Hint Of Red"	245	239	235 +"Hint Of Yellow"	246	245	215 +"Hippie Blue"	73	136	154 +"Hippie Green"	96	138	90 +"Hippie Pink"	171	73	92 +"Hit Grey"	161	169	168 +"Hit Pink"	253	164	112 +"Hokey Pokey"	187	142	52 +"Hoki"	100	125	134 +"Holly"	37	52	43 +"Honey Flower"	92	60	109 +"Honeysuckle"	232	237	105 +"Hopbush"	205	109	147 +"Horizon"	100	136	148 +"Horses Neck"	109	86	44 +"Hot Chile"	107	37	44 +"Hot Curry"	129	91	40 +"Hot Purple"	78	46	83 +"Hot Toddy"	167	117	44 +"Humming Bird"	206	239	228 +"Hunter Green"	47	49	37 +"Hurricane"	139	126	119 +"Husk"	178	153	75 +"Ice Cold"	175	227	214 +"Iceberg"	202	225	217 +"Illusion"	239	149	174 +"Indian Tan"	79	48	31 +"Indochine"	156	91	52 +"Irish Coffee"	98	66	43 +"Iroko"	91	82	68 +"Iron"	203	205	205 +"Ironbark"	109	77	44 +"Ironside Grey"	112	110	102 +"Ironstone"	134	80	64 +"Island Spice"	248	237	219 +"Jacaranda"	54	45	56 +"Jacarta"	61	50	93 +"Jacko Bean"	65	54	40 +"Jacksons Purple"	61	63	125 +"Jade"	64	114	109 +"Jaffa"	226	121	69 +"Jagged Ice"	202	231	226 +"Jagger"	63	46	76 +"Jaguar"	41	41	47 +"Jambalaya"	103	72	52 +"Janna"	222	209	183 +"Japanese Laurel"	47	117	50 +"Japanese Maple"	103	47	48 +"Japonica"	206	114	89 +"Jarrah"	59	43	44 +"Java"	37	151	151 +"Jazz"	95	44	47 +"Jelly Bean"	68	121	142 +"Jet Stream"	187	208	201 +"Jewel"	19	104	67 +"Joanna"	214	209	192 +"Jon"	70	61	62 +"Jonquil"	238	242	147 +"Jordy Blue"	122	170	224 +"Judge Grey"	93	83	70 +"Jumbo"	135	135	133 +"Jungle Green"	41	41	36 +"Jungle Mist"	176	196	196 +"Juniper"	116	145	142 +"Just Right"	220	191	172 +"Kabul"	108	94	83 +"Kaitoke Green"	36	83	54 +"Kangaroo"	197	195	176 +"Karaka"	45	45	36 +"Karry"	254	220	193 +"Kashmir Blue"	87	109	142 +"Kelp"	77	80	60 +"Kenyan Copper"	108	50	46 +"Keppel"	95	182	156 +"Kidnapper"	191	192	171 +"Kilamanjaro"	58	53	50 +"Killarney"	73	118	79 +"Kimberly"	105	93	135 +"Kingfisher Daisy"	88	53	128 +"Kobi"	224	147	171 +"Kokoda"	123	120	90 +"Korma"	128	78	44 +"Koromiko"	254	181	82 +"Kournikova"	249	208	84 +"Kumera"	117	91	39 +"La Palma"	66	137	41 +"La Rioja"	186	192	14 +"Las Palmas"	198	218	54 +"Laser"	198	169	94 +"Laurel"	110	141	113 +"Lavender"	159	144	208 +"Leather"	144	106	84 +"Lemon"	217	178	32 +"Lemon Ginger"	150	132	40 +"Lemon Grass"	153	154	134 +"Licorice"	46	55	73 +"Lightning Yellow"	247	162	51 +"Lilac Bush"	148	112	196 +"Lily"	193	159	179 +"Lily White"	233	238	235 +"Lima"	122	172	33 +"Lime"	183	197	44 +"Limeade"	95	151	39 +"Limed Ash"	103	109	99 +"Limed Gum"	107	91	61 +"Limed Oak"	140	114	84 +"Limed Spruce"	78	96	94 +"Limerick"	137	172	39 +"Linen"	186	183	162 +"Link Water"	199	205	216 +"Lipstick"	150	44	84 +"Lisbon Brown"	84	79	58 +"Livid Brown"	49	42	41 +"Loafer"	219	217	194 +"Loblolly"	179	187	183 +"Lochinvar"	72	144	132 +"Lochmara"	49	110	160 +"Locust"	162	165	128 +"Log Cabin"	57	62	46 +"Logan"	157	156	180 +"Lola"	185	172	187 +"London Hue"	174	148	171 +"Lonestar"	82	36	38 +"Lotus"	139	80	75 +"Loulou"	76	51	71 +"Lucky"	171	154	28 +"Lucky Point"	41	45	79 +"Lunar Green"	78	85	65 +"Lusty"	120	46	44 +"Luxor Gold"	171	141	63 +"Lynch"	105	125	137 +"Mabel"	203	232	232 +"Madang"	183	227	168 +"Madison"	45	60	84 +"Madras"	71	62	35 +"Magnolia"	238	232	235 +"Mahogany"	73	38	37 +"Mai Tai"	165	101	49 +"Maire"	42	41	34 +"Maize"	227	185	130 +"Makara"	105	95	80 +"Mako"	80	85	85 +"Malachite Green"	151	151	111 +"Malibu"	102	183	225 +"Mallard"	58	69	49 +"Malta"	165	151	132 +"Mamba"	118	109	124 +"Mandalay"	181	123	46 +"Mandy"	205	82	91 +"Mandys Pink"	245	183	153 +"Manhattan"	226	175	128 +"Mantis"	127	193	92 +"Mantle"	150	167	147 +"Manz"	228	219	85 +"Mardi Gras"	53	34	53 +"Marigold"	184	138	61 +"Mariner"	66	99	159 +"Marlin"	54	45	38 +"Maroon"	64	35	39 +"Marshland"	43	46	38 +"Martini"	183	168	163 +"Martinique"	60	55	72 +"Marzipan"	235	200	129 +"Masala"	87	83	75 +"Mash"	90	76	66 +"Matisse"	54	92	125 +"Matrix"	142	77	69 +"Matterhorn"	82	75	75 +"Maverick"	200	177	192 +"McKenzie"	140	99	56 +"Melanie"	224	183	194 +"Melanzane"	52	41	49 +"Melrose"	195	185	221 +"Meranti"	107	52	42 +"Mercury"	213	210	209 +"Merino"	225	219	208 +"Merlin"	79	78	72 +"Merlot"	115	52	58 +"Metallic Bronze"	85	74	60 +"Metallic Copper"	110	61	52 +"Meteor"	187	116	49 +"Meteorite"	74	59	106 +"Mexican Red"	155	61	61 +"Mid Grey"	102	106	109 +"Midnight"	33	48	62 +"Midnight Express"	33	38	58 +"Midnight Moss"	36	46	40 +"Mikado"	63	54	35 +"Milan"	246	244	147 +"Milano Red"	158	51	50 +"Milk Punch"	243	229	192 +"Milk White"	220	217	205 +"Millbrook"	89	86	72 +"Mimosa"	245	245	204 +"Mindaro"	218	234	111 +"Mine Shaft"	55	62	65 +"Mineral Green"	80	99	85 +"Ming"	64	117	119 +"Minsk"	62	50	103 +"Mint Julep"	224	216	167 +"Mint Tulip"	198	234	221 +"Mirage"	55	63	67 +"Mischka"	165	169	178 +"Mist Grey"	186	185	169 +"Mobster"	96	90	103 +"Moccaccino"	88	47	43 +"Mocha"	111	55	45 +"Mojo"	151	70	60 +"Mona Lisa"	255	152	137 +"Monarch"	107	37	44 +"Mondo"	85	77	66 +"Mongoose"	165	139	111 +"Monsoon"	122	118	121 +"Montana"	57	59	60 +"Monte Carlo"	122	197	180 +"Monza"	134	40	46 +"Moody Blue"	131	120	199 +"Moon Glow"	245	243	206 +"Moon Mist"	206	205	184 +"Moon Raker"	192	178	215 +"Moon Yellow"	240	196	32 +"Morning Glory"	158	209	211 +"Morocco Brown"	68	45	33 +"Mortar"	86	80	81 +"Mosaic"	41	55	65 +"Mosque"	0	95	91 +"Mountain Mist"	160	159	156 +"Muddy Waters"	169	132	79 +"Muesli"	158	126	83 +"Mulberry"	94	42	64 +"Mule Fawn"	136	79	64 +"Mulled Wine"	82	77	91 +"Mustard"	124	103	32 +"My Pink"	214	139	128 +"My Sin"	253	174	69 +"Mystic"	216	221	218 +"Nandor"	78	93	78 +"Napa"	163	154	135 +"Narvik"	233	230	220 +"Natural"	136	89	49 +"Nebula"	184	198	190 +"Negroni"	238	199	162 +"Nepal"	147	170	185 +"Neptune"	119	168	171 +"Nero"	37	37	37 +"Neutral Green"	170	165	131 +"Nevada"	102	111	111 +"New Amber"	109	59	36 +"New Orleans"	228	195	133 +"New York Pink"	221	131	116 +"Niagara"	41	169	139 +"Night Rider"	51	46	46 +"Night Shadz"	162	61	84 +"Nightclub"	106	31	68 +"Nile Blue"	37	63	78 +"Nobel"	169	157	157 +"Nomad"	161	153	134 +"Nordic"	29	57	60 +"Norway"	164	184	143 +"Nugget"	188	146	41 +"Nutmeg"	126	74	59 +"Oasis"	252	237	197 +"Observatory"	0	143	112 +"Ocean Green"	76	169	115 +"Off Green"	223	240	226 +"Off Yellow"	250	243	220 +"Oil"	49	51	48 +"Oiled Cedar"	102	54	45 +"Old Brick"	138	51	53 +"Old Copper"	115	80	59 +"Olive Green"	53	63	42 +"Olive Haze"	136	128	100 +"Olivetone"	116	112	40 +"Onahau"	194	230	236 +"Onion"	72	65	43 +"Opal"	168	195	188 +"Opium"	152	126	126 +"Oracle"	57	85	85 +"Orange Roughy"	168	83	53 +"Orange White"	234	227	205 +"Orchid White"	241	235	217 +"Oregon"	177	108	57 +"Orient"	37	91	119 +"Oriental Pink"	194	142	136 +"Orinoco"	210	211	179 +"Oslo Grey"	129	137	136 +"Ottoman"	211	219	203 +"Outer Space"	31	38	59 +"Oxford Blue"	40	53	58 +"Oxley"	109	154	120 +"Oyster Bay"	209	234	234 +"Oyster Pink"	212	181	176 +"Paarl"	134	75	54 +"Pablo"	122	113	92 +"Pacifika"	102	112	40 +"Paco"	79	64	55 +"Padua"	126	179	148 +"Pale Leaf"	189	202	168 +"Pale Oyster"	156	141	114 +"Pale Prim"	249	245	159 +"Pale Rose"	239	214	218 +"Pale Sky"	99	109	112 +"Pale Slate"	195	190	187 +"Palm Green"	32	57	44 +"Palm Leaf"	54	72	47 +"Pampas"	234	228	220 +"Panache"	235	247	228 +"Pancho"	223	185	146 +"Panda"	84	79	58 +"Paprika"	124	45	55 +"Paradiso"	72	128	132 +"Parchment"	208	200	176 +"Paris Daisy"	251	235	80 +"Paris M"	49	39	96 +"Paris White"	191	205	192 +"Parsley"	48	93	53 +"Patina"	99	146	131 +"Pattens Blue"	211	229	239 +"Paua"	42	37	81 +"Pavlova"	186	171	135 +"Pea Soup"	185	184	128 +"Peach"	251	229	194 +"Peach Schnapps"	198	128	89 +"Peanut"	122	68	52 +"Pearl Bush"	222	209	198 +"Pearl Lusta"	234	224	200 +"Peat"	118	109	82 +"Pelorous"	37	153	178 +"Peppermint"	215	231	208 +"Perano"	172	185	232 +"Perfume"	194	169	219 +"Periglacial Blue"	172	182	178 +"Persian Plum"	104	51	50 +"Persian Red"	79	33	42 +"Persimmon"	239	115	94 +"Peru Tan"	115	61	31 +"Pesto"	122	114	41 +"Petite Orchid"	218	151	144 +"Pewter"	145	160	146 +"Pharlap"	130	102	99 +"Picasso"	248	234	151 +"Pickled Aspen"	91	100	82 +"Pickled Bean"	115	85	62 +"Pickled Bluewood"	79	90	95 +"Picton Blue"	91	160	208 +"Pigeon Post"	119	132	142 +"Pine Cone"	117	101	86 +"Pine Glade"	189	192	126 +"Pine Tree"	42	47	35 +"Pink Flare"	216	180	182 +"Pink Lace"	246	204	215 +"Pink Lady"	243	215	182 +"Pink Swan"	191	179	178 +"Piper"	157	84	50 +"Pipi"	245	230	196 +"Pippin"	252	219	210 +"Pirate Gold"	186	120	42 +"Pistachio"	103	105	39 +"Pixie Green"	187	205	165 +"Pizazz"	229	127	61 +"Pizza"	191	141	60 +"Plantation"	62	89	76 +"Planter"	98	93	42 +"Plum"	56	26	56 +"Pohutukawa"	101	28	38 +"Polar"	229	242	231 +"Polo Blue"	138	167	204 +"Pompadour"	106	31	68 +"Porcelain"	221	220	219 +"Porsche"	223	157	91 +"Port Gore"	59	67	108 +"Portafino"	244	240	155 +"Portage"	139	152	216 +"Portica"	240	213	85 +"Pot Pourri"	239	220	212 +"Potters Clay"	132	92	64 +"Powder Blue"	146	159	162 +"Prairie Sand"	136	60	50 +"Prelude"	202	180	212 +"Prim"	226	205	213 +"Primrose"	228	222	142 +"Promenade"	248	246	223 +"Provincial Pink"	246	227	218 +"Prussian Blue"	25	47	65 +"Pueblo"	110	51	38 +"Puerto Rico"	89	186	163 +"Pumice"	186	192	180 +"Pumpkin"	171	107	53 +"Punch"	168	50	57 +"Punga"	83	73	49 +"Putty"	205	174	112 +"Quarter Pearl Lusta"	242	237	221 +"Quarter Spanish White"	235	226	210 +"Quicksand"	195	152	139 +"Quill Grey"	203	201	192 +"Quincy"	106	84	69 +"Racing Green"	35	47	44 +"Raffia"	220	198	160 +"Rain Forest"	102	112	40 +"Raincloud"	163	152	129 +"Rainee"	179	193	177 +"Rajah"	252	174	96 +"Rangitoto"	58	65	51 +"Rangoon Green"	43	46	37 +"Raven"	111	116	123 +"Rebel"	69	52	48 +"Red Beech"	161	98	59 +"Red Berry"	112	31	40 +"Red Damask"	203	111	74 +"Red Devil"	102	42	44 +"Red Oxide"	93	31	30 +"Red Robin"	125	65	56 +"Red Stage"	173	82	46 +"Redwood"	91	52	46 +"Reef"	209	239	159 +"Reef Gold"	169	141	54 +"Regal Blue"	32	63	88 +"Regent Grey"	121	132	136 +"Regent St Blue"	160	205	217 +"Remy"	246	222	218 +"Reno Sand"	178	110	51 +"Resolution Blue"	50	63	117 +"Revolver"	55	54	63 +"Rhino"	61	70	83 +"Ribbon"	113	51	60 +"Rice Cake"	239	236	222 +"Rice Flower"	239	245	209 +"Rich Gold"	161	82	38 +"Rio Grande"	183	198	26 +"Riptide"	137	217	200 +"River Bed"	85	96	97 +"Rob Roy"	221	173	86 +"Robins Egg Blue"	158	170	158 +"Rock"	90	77	65 +"Rock Blue"	147	162	186 +"Rock Salt"	230	214	184 +"Rock Spray"	157	68	45 +"Rodeo Dust"	199	163	132 +"Rolling Stone"	109	120	118 +"Roman"	216	98	91 +"Roman Coffee"	125	103	87 +"Romance"	244	240	230 +"Romantic"	255	198	158 +"Ronchi"	234	184	82 +"Roof Terracotta"	161	71	67 +"Rope"	142	89	60 +"Rose"	211	161	148 +"Rose Bud"	254	171	154 +"Rose Bud Cherry"	138	45	82 +"Rose Of Sharon"	172	81	45 +"Rose White"	251	238	232 +"Rosewood"	143	62	63 +"Roti"	182	150	66 +"Rouge"	169	64	100 +"Royal Heath"	181	75	115 +"Rum"	113	102	117 +"Rum Swizzle"	241	237	212 +"Russett"	125	101	92 +"Rustic Red"	58	24	26 +"Rusty Nail"	141	95	44 +"Saddle"	93	78	70 +"Saddle Brown"	80	56	30 +"Saffron"	220	159	69 +"Sage"	152	159	122 +"Sahara"	183	152	38 +"Sail"	165	206	236 +"Salem"	23	123	77 +"Salomie"	255	214	123 +"Salt Box"	105	98	104 +"Saltpan"	238	243	229 +"Sambuca"	59	46	37 +"San Felix"	44	110	49 +"San Juan"	68	87	97 +"San Marino"	78	108	157 +"Sand Dune"	134	118	101 +"Sandal"	163	135	106 +"Sandrift"	175	147	125 +"Sandstone"	120	109	95 +"Sandwisp"	222	203	129 +"Sandy Beach"	254	219	183 +"Sangria"	130	42	50 +"Sanguine Brown"	108	55	54 +"Santas Grey"	153	152	167 +"Sante Fe"	169	106	80 +"Sapling"	225	213	166 +"Sapphire"	63	82	129 +"Saratoga"	85	91	44 +"Sauvignon"	244	234	228 +"Sazerac"	245	222	196 +"Scampi"	111	99	160 +"Scandal"	173	217	209 +"Scarlet Gum"	74	45	87 +"Scarlett"	126	37	48 +"Scarpa Flow"	107	106	108 +"Schist"	135	135	111 +"Schooner"	141	132	120 +"Scooter"	48	142	160 +"Scorpion"	106	100	102 +"Scotch Mist"	238	231	200 +"Scrub"	61	64	49 +"Sea Buckthorn"	239	149	72 +"Sea Fog"	223	221	214 +"Sea Green"	31	99	97 +"Sea Mist"	194	213	196 +"Sea Nymph"	138	174	164 +"Sea Pink"	219	129	126 +"Seagull"	119	183	208 +"Seance"	105	50	110 +"Seashell"	227	225	224 +"Seaweed"	55	65	42 +"Selago"	230	223	231 +"Sepia"	58	47	45 +"Serenade"	252	233	215 +"Shadow Green"	154	192	182 +"Shady Lady"	159	155	157 +"Shakespeare"	96	154	184 +"Shalimar"	248	246	168 +"Shark"	52	54	58 +"Sherpa Blue"	0	73	78 +"Sherwood Green"	27	70	54 +"Shilo"	230	178	166 +"Shingle Fawn"	116	89	55 +"Ship Cove"	121	136	171 +"Ship Grey"	78	78	76 +"Shiraz"	132	40	51 +"Shocking"	232	153	190 +"Shuttle Grey"	97	102	107 +"Siam"	104	107	80 +"Sidecar"	233	217	169 +"Silk"	187	173	161 +"Silver Chalice"	172	174	169 +"Silver Sand"	190	189	182 +"Silver Tree"	103	190	144 +"Sinbad"	166	213	208 +"Siren"	105	41	59 +"Sirocco"	104	118	110 +"Sisal"	197	186	160 +"Skeptic"	157	180	170 +"Slugger"	66	52	43 +"Smalt Blue"	73	98	103 +"Smoke Tree"	187	95	52 +"Smokey Ash"	93	89	82 +"Smoky"	96	93	107 +"Snow Drift"	227	227	220 +"Snow Flurry"	234	247	201 +"Snowy Mint"	214	240	205 +"Snuff"	228	215	229 +"Soapstone"	236	229	218 +"Soft Amber"	207	190	165 +"Soft Peach"	238	223	222 +"Solid Pink"	133	73	76 +"Solitaire"	234	218	194 +"Solitude"	233	236	241 +"Sorbus"	221	107	56 +"Sorrell Brown"	157	127	97 +"Sour Dough"	201	181	154 +"Soya Bean"	111	99	75 +"Space Shuttle"	75	67	59 +"Spanish Green"	123	137	118 +"Spanish White"	222	209	183 +"Spectra"	55	93	79 +"Spice"	108	79	63 +"Spicy Mix"	139	95	77 +"Spicy Pink"	137	117	120 +"Spindle"	179	196	216 +"Splash"	241	215	158 +"Spray"	126	205	221 +"Spring Green"	92	138	100 +"Spring Rain"	163	189	156 +"Spring Sun"	241	241	198 +"Spring Wood"	233	225	217 +"Sprout"	184	202	157 +"Spun Pearl"	162	161	172 +"Squirrel"	143	125	107 +"St Tropaz"	50	84	130 +"Stack"	133	136	133 +"Star Dust"	160	161	151 +"Stark White"	210	198	182 +"Starship"	227	221	57 +"Steel Grey"	67	70	75 +"Stiletto"	131	61	62 +"Stinger"	141	112	42 +"Stonewall"	128	118	97 +"Storm Dust"	101	100	95 +"Storm Grey"	116	120	128 +"Stratos"	33	38	58 +"Straw"	218	190	130 +"Strikemaster"	148	106	129 +"Stromboli"	64	99	86 +"Studio"	114	74	161 +"Submarine"	140	156	156 +"Sugar Cane"	238	239	223 +"Sulu"	198	234	128 +"Summer Green"	143	182	156 +"Sun"	239	142	56 +"Sundance"	196	170	77 +"Sundown"	248	175	169 +"Sunflower"	218	192	26 +"Sunglo"	199	97	85 +"Sunset"	192	81	74 +"Sunshade"	250	157	73 +"Supernova"	255	180	55 +"Surf"	184	212	187 +"Surf Crest"	195	214	189 +"Surfie Green"	0	123	119 +"Sushi"	124	159	47 +"Suva Grey"	139	134	133 +"Swamp"	37	47	47 +"Swans Down"	218	230	221 +"Sweet Corn"	249	225	118 +"Sweet Pink"	238	145	141 +"Swirl"	215	206	197 +"Swiss Coffee"	219	208	202 +"Sycamore"	146	140	60 +"Tabasco"	142	58	54 +"Tacao"	246	174	120 +"Tacha"	210	185	96 +"Tahiti Gold"	220	114	42 +"Tahuna Sands"	216	204	155 +"Tall Poppy"	133	53	52 +"Tallow"	163	153	119 +"Tamarillo"	117	43	47 +"Tamarind"	62	47	46 +"Tana"	184	181	161 +"Tangaroa"	30	47	60 +"Tangerine"	205	93	52 +"Tango"	212	111	49 +"Tapa"	124	124	114 +"Tapestry"	179	112	132 +"Tara"	222	241	221 +"Tarawera"	37	60	72 +"Tasman"	186	192	179 +"Taupe Grey"	137	132	120 +"Tawny Port"	100	58	72 +"Tax Break"	73	101	105 +"Te Papa Green"	43	75	64 +"Tea"	191	181	162 +"Teak"	171	137	83 +"Teal Blue"	37	72	85 +"Temptress"	60	33	38 +"Tequila"	244	208	164 +"Texas"	236	230	126 +"Texas Rose"	252	176	87 +"Thatch"	177	148	143 +"Thatch Green"	84	78	49 +"Thistle"	199	189	149 +"Thunder"	77	77	75 +"Thunderbird"	146	56	48 +"Tia Maria"	151	66	45 +"Tiara"	185	195	190 +"Tiber"	24	67	67 +"Tidal"	240	245	144 +"Tide"	190	180	171 +"Timber Green"	50	67	54 +"Titan White"	221	214	225 +"Toast"	159	113	95 +"Tobacco Brown"	109	88	67 +"Tobago"	68	54	45 +"Toledo"	62	38	49 +"Tolopea"	45	37	65 +"Tom Thumb"	79	99	72 +"Tonys Pink"	231	158	136 +"Topaz"	129	124	135 +"Torea Bay"	53	61	117 +"Tory Blue"	55	78	136 +"Tosca"	116	64	66 +"Totem Pole"	136	53	49 +"Touch Wood"	58	55	46 +"Tower Grey"	156	172	165 +"Tradewind"	109	175	167 +"Tranquil"	221	237	233 +"Travertine"	226	221	199 +"Tree Poppy"	226	129	59 +"Treehouse"	60	52	46 +"Trendy Green"	126	132	36 +"Trendy Pink"	128	93	128 +"Trinidad"	197	79	51 +"Tropical Blue"	174	201	235 +"Trout"	76	83	86 +"True V"	142	114	199 +"Tuatara"	69	70	66 +"Tuft Bush"	249	211	190 +"Tulip Tree"	227	172	61 +"Tumbleweed"	75	65	42 +"Tuna"	70	73	78 +"Tundora"	88	84	82 +"Turbo"	245	204	35 +"Turkish Rose"	165	110	117 +"Turmeric"	174	144	65 +"Turtle Green"	54	62	29 +"Tuscany"	173	98	66 +"Tusk"	227	229	177 +"Tussock"	191	145	75 +"Tutu"	248	228	227 +"Twilight"	218	192	205 +"Twilight Blue"	244	246	236 +"Twine"	193	145	86 +"Valencia"	212	87	78 +"Valentino"	56	44	56 +"Valhalla"	42	43	65 +"Van Cleef"	82	57	54 +"Vanilla"	204	182	155 +"Vanilla Ice"	235	210	209 +"Varden"	253	239	211 +"Venetian Red"	91	31	34 +"Venice Blue"	44	87	120 +"Venus"	139	125	130 +"Verdigris"	98	96	62 +"Verdun Green"	72	83	26 +"Vesuvius"	168	85	51 +"Victoria"	86	73	133 +"Vida Loca"	95	146	40 +"Viking"	77	177	200 +"Vin Rouge"	149	82	100 +"Viola"	197	143	157 +"Violent Violet"	46	34	73 +"Violet"	47	38	60 +"Viridian Green"	75	95	86 +"Vis Vis"	249	228	150 +"Vista Blue"	151	213	179 +"Vista White"	227	223	217 +"Volcano"	78	39	40 +"Voodoo"	68	50	64 +"Vulcan"	54	56	60 +"Wafer"	212	187	177 +"Waikawa Grey"	91	110	145 +"Waiouru"	76	78	49 +"Walnut"	121	77	46 +"Wan White"	228	226	220 +"Wasabi"	132	145	55 +"Water Leaf"	182	236	222 +"Watercourse"	0	110	78 +"Waterloo"	114	114	130 +"Wattle"	214	202	61 +"Watusi"	242	205	187 +"Wax Flower"	238	179	158 +"We Peep"	253	215	216 +"Wedgewood"	76	107	136 +"Well Read"	142	53	55 +"West Coast"	92	81	47 +"West Side"	229	130	58 +"Westar"	212	207	197 +"Western Red"	107	37	44 +"Wewak"	241	145	154 +"Wheatfield"	223	215	189 +"Whiskey"	210	144	98 +"Whiskey Sour"	212	145	93 +"Whisper"	239	230	230 +"White Ice"	215	238	228 +"White Lilac"	231	229	232 +"White Linen"	238	231	220 +"White Nectar"	248	246	216 +"White Pointer"	218	214	204 +"White Rock"	212	207	180 +"Wild Rice"	227	212	116 +"Wild Sand"	231	228	222 +"Wild Willow"	190	202	96 +"William"	83	115	111 +"Willow Brook"	223	230	207 +"Willow Grove"	105	117	92 +"Windsor"	70	44	119 +"Wine Berry"	82	44	53 +"Winter Hazel"	208	195	131 +"Wisp Pink"	249	232	226 +"Wisteria"	164	135	139 +"Wistful"	162	158	205 +"Witch Haze"	251	240	115 +"Wood Bark"	48	38	33 +"Woodburn"	70	54	41 +"Woodland"	98	103	70 +"Woodrush"	69	64	43 +"Woodsmoke"	43	50	48 +"Woody Bay"	51	52	58 +"Woody Brown"	85	69	69 +"Xanadu"	117	135	110 +"Yellow Metal"	115	99	62 +"Yellow Sea"	244	159	53 +"Your Pink"	255	197	187 +"Yukon Gold"	130	106	33 +"Yuma"	199	184	130 +"Zambezi"	107	90	90 +"Zanah"	178	198	177 +"Zest"	198	114	59 +"Zeus"	59	60	56 +"Ziggurat"	129	166	170 +"Zircon"	222	227	227 +"Zombie"	221	194	131 +"Zorba"	162	149	137 +"Zuccini"	23	70	46 +"Zumthor"	205	213	213 +"Zydeco"	32	72	63 diff --git a/scheme2c.init b/scheme2c.init index 80b91d1..4f98f81 100644 --- a/scheme2c.init +++ b/scheme2c.init @@ -29,11 +29,14 @@  ;;; the version the scheme implementation loading this file.  (define (scheme-implementation-version) "?01nov91") -(define (implementation-vicinity) -  (case (software-type) -    ((unix)	"/usr/local/lib/scheme/") -    ((vms)	"scheme$src:") -    ((ms-dos)	"C:\\scheme\\"))) +(define implementation-vicinity +  (let ((impl-path +	 (case (software-type) +	   ((unix) "/usr/local/src/scheme/") +	   ((vms) "scheme$src:") +	   ((ms-dos) "C:\\scheme\\") +	   (else "")))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -95,8 +98,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -136,6 +138,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -182,11 +185,11 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO  ;;;	record				;has user defined data structures  	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -343,7 +346,6 @@  ;;; If your implementation provides R4RS macros:  ;(define macro:eval slib:eval)  ;(define macro:load load) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args diff --git a/scheme48.init b/scheme48.init index 202c7bb..4c67a10 100644 --- a/scheme48.init +++ b/scheme48.init @@ -7,9 +7,36 @@  ,load-package floatnums  ,config  ,load =scheme48/misc/packages.scm + +(define-structure slib:os-strings +  (export os-string->string) +  (open scheme +        (subset environments +                (*structure-ref environment-ref)) +        (subset handle          (with-handler)) +        (subset package-commands-internal +                (config-package))) +  (begin +    (define (identity x) +      x) +    (define (xstructure-ref structure-name export-name default) +      (call-with-current-continuation +       (lambda (k) +         (with-handler +          (lambda (condition decline) +            (k default)) +          (lambda () +            (*structure-ref (environment-ref (config-package) +                                             structure-name) +                            export-name)))))) +    (define os-string->string +      (xstructure-ref 'os-strings 'os-string->string +                      identity)))) +  (define-structure slib-primitives    (export s48-char->integer  	  s48-use! +	  s48-os-string->string  	  s48-getenv s48-current-time s48-time-seconds  	  (s48-access-mode :syntax)  	  s48-accessible? @@ -29,6 +56,9 @@  	(subset package-commands-internal (config-package))  	(subset package-mutation (package-open!))  	;; primitives +	(modify slib:os-strings +		(prefix s48-) +		(expose os-string->string))  	(modify posix  		(rename (current-time s48-current-time)  			(time-seconds s48-time-seconds) @@ -54,7 +84,8 @@  ,user  ,open slib-primitives -(define getenv s48-getenv) +(define (getenv name) +  (s48-os-string->string (s48-getenv name)))  (define system s48-system)  ;;; (software-type) should be set to the generic operating system type. @@ -74,7 +105,13 @@  ;;; the version of the scheme implementation loading this file.  (define scheme-implementation-version    (let ((version (getenv "S48_VERSION"))) -    (lambda () version))) +    (define vl (string-length version)) +    (do ((idx 0 (+ 1 idx))) +	((or (>= idx vl) +	     (not (or (char-numeric? (string-ref version idx)) +		      (memv (string-ref version idx) '(#\. #\-))))) +	 (let ((nv (substring version 0 idx))) +	   (lambda () nv))))))  ;;; (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxiliary files to your Scheme @@ -139,8 +176,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -181,6 +217,7 @@  					; here used for native modules  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -224,7 +261,7 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -336,7 +373,7 @@  ;;; CHAR-CODE-LIMIT is one greater than the largest integer which can  ;;; be returned by CHAR->INTEGER. -(define char-code-limit 256) +(define char-code-limit 128)  (define integer->char s48-ascii->char)  (define char->integer    (let ((code0 (s48-char->integer (integer->char 0)))) @@ -355,13 +392,6 @@      (lambda (form)        (eval form (interaction-environment))))) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -(define (macro:load <pathname>) -  (if (not (file-exists? <pathname>)) -      (set! <pathname> (string-append <pathname> (scheme-file-suffix)))) -  (load <pathname>)) -  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -393,12 +423,6 @@        (string->symbol         (string-append "slib:G" (number->string *gensym-counter*)))))) -(define base:eval slib:eval) -(define (defmacro:eval x) (base:eval (defmacro:expand* x))) - -(define defmacro:load macro:load) -;; slib:eval-load definition moved to "require.scm" -  (define (slib:warn . args)    ;;(if (provided? 'trace) (print-call-stack cep))    (apply s48-warn args)) @@ -420,9 +444,9 @@  ;;; Define these if your implementation's syntax can support them and if  ;;; they are not already defined. -(define (1+ n) (+ n 1)) -(define (-1+ n) (+ n -1)) -;(define 1- -1+) +;;(define (1+ n) (+ n 1)) +;;(define (-1+ n) (+ n -1)) +;;(define 1- -1+)  ;;; Define SLIB:EXIT to be the implementation procedure to exit or  ;;; return if exiting not supported. @@ -448,6 +472,18 @@  ;;; At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +(define macro:load slib:load-source) + +(define base:eval slib:eval) +(define (defmacro:eval x) (slib:eval (defmacro:expand* x))) +(define defmacro:load macro:load) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  ;;; Scheme48 complains that these are not defined (even though they  ;;; won't be called until they are).  (define synclo:load #f) @@ -475,8 +511,6 @@  ;;; Needed to support defmacro  (require 'defmacroexpand) -(define *args* '()) -(define (program-arguments) (cons "scheme48" *args*))  ;@  (define (current-time) @@ -515,7 +549,7 @@  ,collect  ,batch off -,dump slib.image "(slib 3a5)" +,dump slib.image "(slib 3b1)"  ;;; Put Scheme48-specific code into catalog  (call-with-output-file (in-vicinity (implementation-vicinity) "implcat") @@ -529,7 +563,12 @@         (define srfi  	 (string->symbol (string-append "srfi-" (number->string idx))))         (display* " " (list srfi 'compiled srfi))) -     '(1 2 5 6 7 8 9 11 13 14 16 17 23 25 26 27 28 31 34 35 36 37 42 45)) +     (append +      '(1 2 5 6 7 8 9 11 13 14 16 17 23 25 26 27 28 31 34 35 36 37 42 45) +      (if (string>=? (scheme-implementation-version) "1.4") +	  '(4 39 40 43 43 60 61 63 66 67 71 78) +	  '()) +      (if (string>=? (scheme-implementation-version) "1.5") '(19) '())))      (for-each       (lambda (f)         (define module @@ -81,8 +81,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -123,6 +122,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -166,11 +166,11 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO  ;;;	record				;has user defined data structures  ;;;	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -183,13 +183,16 @@  ;;;	ed				;(ED) is editor  ;;;	system				;posix (system <string>)  	getenv				;posix (getenv <string>) -;;;	program-arguments		;returns list of strings (argv) +	program-arguments		;returns list of strings (argv)  ;;;	current-time			;returns time in seconds since 1/1/1970  		  ;; Implementation Specific features  	)) +;;@ http://practical-scheme.net/wiliki/schemexref.cgi?command-line +(define program-arguments command-line) +  ;;@ (FILE-POSITION <port> . <k>)  (define (file-position port . args)    (if (null? args) @@ -272,10 +275,6 @@  (define (slib:eval form)    (eval form (interaction-environment))) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -(define macro:load load) -  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -313,7 +312,6 @@  (define (defmacro:load pathname)    (slib:eval-load pathname defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args @@ -369,6 +367,14 @@  ;;; At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  ;;; Scheme48 complains that these are not defined (even though they  ;;; won't be called until they are).  (define synclo:load #f) @@ -17,18 +17,22 @@  (define (program-vicinity)    (current-directory)) -(define (library-vicinity) -  (string-append -   (or (getenv "sisc.slib") -       (getenv "sisc.lib") -       (error "You must define the sisc.slib or sisc.lib property")) -   "/")) - -(define (implementation-vicinity) -  (string-append -   (or (getenv "sisc.home") -       (error "You must define the sisc.home property")) -   "/")) +(define library-vicinity +  (let ((lib-path +	 (string-append +	  (or (getenv "sisc.slib") +	      (getenv "sisc.lib") +	      (error "You must define the sisc.slib or sisc.lib property")) +	  "/"))) +    (lambda () lib-path))) + +(define implementation-vicinity +  (let ((impl-path +	 (string-append +	  (or (getenv "sisc.home") +	      (error "You must define the sisc.home property")) +	  "/"))) +    (lambda () impl-path)))  (define (user-vicinity) "") @@ -102,6 +106,7 @@  					;(SLIB:LOAD-COMPILED "filename")      vicinity      srfi-59 +    srfi-96  	       ;;; Scheme report features      ;; R5RS-compliant implementations should provide all 9 features. @@ -141,7 +146,7 @@  		;;; Other common features -    srfi			 ;srfi-0, COND-EXPAND finds all srfi-* +    srfi-0			 ;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -335,9 +340,13 @@  ;;@ At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) -;; If your implementation provides R4RS macros: +;;; If your implementation provides R4RS macros:  (define macro:eval slib:eval) -(define macro:load load) +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source)  ;@  (define gentemp gensym) @@ -1,11 +1,11 @@  .\" dummy line -.TH SLIB "Jan 22 2005" +.TH SLIB "Dec 20 2007"  .UC 4  .SH NAME  SLIB \- Scheme Library  .SH SYNOPSIS  .B slib -[ scheme | scm | gsi | mzscheme | guile | scheme48 | scmlit | elk | sisc | kawa ] +[ scheme | scm | gsi | mzscheme | guile | scheme48 | larceny | scmlit | elk | sisc | kawa ]  .br  .sp 0.3  .SH DESCRIPTION @@ -1,4 +1,4 @@ -SLIB(Jan 22 2005)                                            SLIB(Jan 22 2005) +SLIB(Dec 20 2007)                                            SLIB(Dec 20 2007) @@ -6,8 +6,8 @@ NAME         SLIB - Scheme Library  SYNOPSIS -       slib  [ scheme | scm | gsi | mzscheme | guile | scheme48 | scmlit | elk -       | sisc | kawa ] +       slib  [  scheme  |  scm | gsi | mzscheme | guile | scheme48 | larceny | +       scmlit | elk | sisc | kawa ]  DESCRIPTION         "SLIB" is a portable library for the programming language "Scheme".  It @@ -45,4 +45,4 @@ SEE ALSO -4th Berkeley Distribution                                    SLIB(Jan 22 2005) +4th Berkeley Distribution                                    SLIB(Dec 20 2007) @@ -1,17 +1,17 @@  This is slib.info, produced by makeinfo version 4.8 from slib.texi. -This manual is for SLIB (version 3a5, November 2007), the portable            | +This manual is for SLIB (version 3b1, February 2008), the portable            |  Scheme library.  Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.             | +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.       |       Permission is granted to copy, distribute and/or modify this       document under the terms of the GNU Free Documentation License,       Version 1.2 or any later version published by the Free Software -     Foundation; with no Invariant Sections, no Front-Cover Texts, and        | -     no Back-Cover Texts.  A copy of the license is included in the           | -     section entitled "GNU Free Documentation License."                       | +     Foundation; with no Invariant Sections, no Front-Cover Texts, and +     no Back-Cover Texts.  A copy of the license is included in the +     section entitled "GNU Free Documentation License."  INFO-DIR-SECTION The Algorithmic Language Scheme  START-INFO-DIR-ENTRY @@ -24,18 +24,18 @@ File: slib.info,  Node: Top,  Next: The Library System,  Prev: (dir),  Up: (dir)  SLIB  **** -This manual is for SLIB (version 3a5, November 2007), the portable            | +This manual is for SLIB (version 3b1, February 2008), the portable            |  Scheme library.  Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.             | +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.       |       Permission is granted to copy, distribute and/or modify this       document under the terms of the GNU Free Documentation License,       Version 1.2 or any later version published by the Free Software -     Foundation; with no Invariant Sections, no Front-Cover Texts, and        | -     no Back-Cover Texts.  A copy of the license is included in the           | -     section entitled "GNU Free Documentation License."                       | +     Foundation; with no Invariant Sections, no Front-Cover Texts, and +     no Back-Cover Texts.  A copy of the license is included in the +     section entitled "GNU Free Documentation License."  * Menu: @@ -139,8 +139,8 @@ The generalization of `provided?' for arbitrary features and catalog is    (1) scheme-implementation-type is the name symbol of the running  Scheme implementation (RScheme, |STk|, Bigloo, chez, Elk, gambit, -guile, JScheme, kawa, MacScheme, MITScheme, Pocket-Scheme, Scheme48,          | -Scheme->C, Scheme48, Scsh, SISC, T, umb-scheme, or Vscm).  Dependence on      | +guile, JScheme, kawa, MacScheme, MITScheme, Pocket-Scheme, Scheme48, +Scheme->C, Scheme48, Scsh, SISC, T, umb-scheme, or Vscm).  Dependence on  scheme-implementation-type is almost always the wrong way to do things. @@ -862,7 +862,7 @@ implementations.       implementation and the name of the operating system.  An       unspecified value is returned. -          (slib:report-version) => slib "3a5" on scm "5b1" on unix            | +          (slib:report-version) => slib "3b1" on scm "5b1" on unix            |   -- Function: slib:report       Displays the information of `(slib:report-version)' followed by @@ -877,7 +877,7 @@ implementations.            (slib:report)            => -          slib "3a5" on scm "5b1" on unix                                     | +          slib "3b1" on scm "5b1" on unix                                     |            (implementation-vicinity) is "/usr/local/lib/scm/"            (library-vicinity) is "/usr/local/lib/slib/"            (scheme-file-suffix) is ".scm" @@ -980,19 +980,19 @@ These procedures are provided by all implementations.       omitted, in which case it defaults to the value returned by       `(current-output-port)'. - -- Function: file-position port                                              | - -- Function: file-position port #f                                           | -     PORT must be open to a file.  `file-position' returns the current        | -     position of the character in PORT which will next be read or             | -     written.  If the implementation does not support file-position,          | -     then `#f' is returned.                                                   | -                                                                              | - -- Function: file-position port k                                            | -     PORT must be open to a file.  `file-position' sets the current           | -     position in PORT which will next be read or written.  If                 | -     successful, `#f' is returned; otherwise `file-position' returns          | -     `#f'.                                                                    | -                                                                              | + -- Function: file-position port + -- Function: file-position port #f +     PORT must be open to a file.  `file-position' returns the current +     position of the character in PORT which will next be read or +     written.  If the implementation does not support file-position, +     then `#f' is returned. + + -- Function: file-position port k +     PORT must be open to a file.  `file-position' sets the current +     position in PORT which will next be read or written.  If +     successful, `#f' is returned; otherwise `file-position' returns +     `#f'. +   -- Function: output-port-width   -- Function: output-port-width port       Returns the width of PORT, which defaults to @@ -1061,21 +1061,21 @@ These procedures are provided by all implementations.       If N is omitted or `#t', a success status is returned to the       system (if possible).  If N is `#f' a failure is returned to the       system (if possible).  If N is an integer, then N is returned to -     the system (if possible).  If the Scheme session cannot exit, then       | -     an unspecified value is returned from `slib:exit'.                       | +     the system (if possible).  If the Scheme session cannot exit, then +     an unspecified value is returned from `slib:exit'.   -- Function: browse-url url       Web browsers have become so ubiquitous that programming languagues       should support a uniform interface to them. -     If a browser is running, `browse-url' causes the browser to              | -     display the page specified by string URL and returns `#t'.               | +     If a browser is running, `browse-url' causes the browser to +     display the page specified by string URL and returns `#t'.       If the browser is not running, `browse-url' starts a browser       displaying the argument URL.  If the browser starts as a -     background job, `browse-url' returns `#t' immediately; if the            | -     browser starts as a foreground job, then `browse-url' returns `#t'       | -     when the browser exits; otherwise (if no browser) it returns `#f'.       | +     background job, `browse-url' returns `#t' immediately; if the +     browser starts as a foreground job, then `browse-url' returns `#t' +     when the browser exits; otherwise (if no browser) it returns `#f'.  File: slib.info,  Node: Miscellany,  Prev: System,  Up: Universal SLIB Procedures @@ -1095,7 +1095,7 @@ These procedures are provided by all implementations.               => (foo bar)            (map identity LST)               == (copy-list LST) -                                                                              | +  2.5.1 Mutual Exclusion  ---------------------- @@ -2135,12 +2135,12 @@ File: slib.info,  Node: Binding to multiple values,  Next: Guarded LET* special   -- Special Form: receive formals expression body ...       `http://srfi.schemers.org/srfi-8/srfi-8.html' -  `(require 'let-values)' or `(require 'srfi-11)'                             | -                                                                              | - -- Special Form: let-values ((formals expression) ...) body ...              | - -- Special Form: let-values* ((formals expression) ...) body ...             | -     `http://srfi.schemers.org/srfi-11/srfi-11.html'                          | -                                                                              | +  `(require 'let-values)' or `(require 'srfi-11)'  + + -- Special Form: let-values ((formals expression) ...) body ... + -- Special Form: let-values* ((formals expression) ...) body ... +     `http://srfi.schemers.org/srfi-11/srfi-11.html' +  File: slib.info,  Node: Guarded LET* special form,  Next: Guarded COND Clause,  Prev: Binding to multiple values,  Up: Scheme Syntax Extension Packages @@ -2966,7 +2966,7 @@ File: slib.info,  Node: Format,  Next: Standard Formatted I/O,  Prev: Precedence  4.2 Format (version 3.1)  ======================== -`(require 'format)' or `(require 'srfi-28)'                                   | +`(require 'format)' or `(require 'srfi-28)'   * Menu: @@ -3850,7 +3850,7 @@ File: slib.info,  Node: Programs and Arguments,  Next: HTML,  Prev: Standard For  * Command Line::                A command line reader for Scheme shells  * Parameter lists::             'parameters  * Getopt Parameter lists::      'getopt-parameters -* Filenames::                   'glob or 'filename +* Filenames::                   'filename  * Batch::                       'batch @@ -3952,9 +3952,9 @@ replaced them with a global variable:       Example:            #! /usr/local/bin/scm -          ;;;This code is SCM specific. -          (define argv (program-arguments)) +          (require 'program-arguments)                                        |            (require 'getopt) +          (define argv (program-arguments))                                   |            (define opts ":a:b:cd")            (let loop ((opt (getopt (length argv) argv opts))) @@ -4272,7 +4272,7 @@ File: slib.info,  Node: Filenames,  Next: Batch,  Prev: Getopt Parameter lists,  4.4.6 Filenames  --------------- -`(require 'filename)' or `(require 'glob)'  +`(require 'filename)'                                                         |   -- Function: filename:match?? pattern   -- Function: filename:match-ci?? pattern @@ -4385,9 +4385,9 @@ currently uses 2 of these:          * *unknown* -The `batch' module uses 2 enhanced relational tables (*note Using             | -Databases::) to store information linking the names of                        | -`operating-system's to `batch-dialect'es.                                     | +The `batch' module uses 2 enhanced relational tables (*note Using +Databases::) to store information linking the names of +`operating-system's to `batch-dialect'es.   -- Function: batch:initialize! database       Defines `operating-system' and `batch-dialect' tables and adds the @@ -4501,7 +4501,7 @@ Here is an example of the use of most of batch's procedures:       (require 'databases)       (require 'parameters)       (require 'batch) -     (require 'glob) +     (require 'filename)                                                      |       (define batch (create-database #f 'alist-table))       (batch:initialize! batch) @@ -5075,7 +5075,7 @@ File: slib.info,  Node: Parsing HTML,  Next: URI,  Prev: HTTP and CGI,  Up: Text  File: slib.info,  Node: URI,  Next: Parsing XML,  Prev: Parsing HTML,  Up: Textual Conversion Packages -                                                                              | +  4.10 URI  ======== @@ -5205,819 +5205,819 @@ purpose.  File: slib.info,  Node: Parsing XML,  Next: Printing Scheme,  Prev: URI,  Up: Textual Conversion Packages -                                                                              | -4.11 Parsing XML                                                              | -================                                                              | -                                                                              | -`(require 'xml-parse)' or `(require 'ssax)'                                   | -                                                                              | -The XML standard document referred to in this module is                       | -`http://www.w3.org/TR/1998/REC-xml-19980210.html'.                            | -                                                                              | -The present frameworks fully supports the XML Namespaces Recommendation       | -`http://www.w3.org/TR/REC-xml-names'.                                         | -                                                                              | -4.11.1 String Glue                                                            | -------------------                                                            | -                                                                              | - -- Function: ssax:reverse-collect-str list-of-frags                          | -     Given the list of fragments (some of which are text strings),            | -     reverse the list and concatenate adjacent text strings.  If              | -     LIST-OF-FRAGS has zero or one element, the result of the procedure       | -     is `equal?' to its argument.                                             | -                                                                              | - -- Function: ssax:reverse-collect-str-drop-ws list-of-frags                  | -     Given the list of fragments (some of which are text strings),            | -     reverse the list and concatenate adjacent text strings while             | -     dropping "unsignificant" whitespace, that is, whitespace in front,       | -     behind and between elements.  The whitespace that is included in         | -     character data is not affected.                                          | -                                                                              | -     Use this procedure to "intelligently" drop "insignificant"               | -     whitespace in the parsed SXML.  If the strict compliance with the        | -     XML Recommendation regarding the whitespace is desired, use the          | -     `ssax:reverse-collect-str' procedure instead.                            | -                                                                              | -4.11.2 Character and Token Functions                                          | -------------------------------------                                          | -                                                                              | -The following functions either skip, or build and return tokens,              | -according to inclusion or delimiting semantics.  The list of characters       | -to expect, include, or to break at may vary from one invocation of a          | -function to another.  This allows the functions to easily parse even          | -context-sensitive languages.                                                  | -                                                                              | -  Exceptions are mentioned specifically.  The list of expected                | -characters (characters to skip until, or break-characters) may include        | -an EOF "character", which is coded as symbol *eof*                            | -                                                                              | -  The input stream to parse is specified as a PORT, which is the last         | -argument.                                                                     | -                                                                              | - -- Function: ssax:assert-current-char char-list string port                  | -     Reads a character from the PORT and looks it up in the CHAR-LIST         | -     of expected characters.  If the read character was found among           | -     expected, it is returned.  Otherwise, the procedure writes a             | -     message using STRING as a comment and quits.                             | -                                                                              | - -- Function: ssax:skip-while char-list port                                  | -     Reads characters from the PORT and disregards them, as long as they      | -     are mentioned in the CHAR-LIST.  The first character (which may be       | -     EOF) peeked from the stream that is _not_ a member of the                | -     CHAR-LIST is returned.                                                   | -                                                                              | - -- Function: ssax:init-buffer                                                | -     Returns an initial buffer for `ssax:next-token*' procedures.             | -     `ssax:init-buffer' may allocate a new buffer at each invocation.         | -                                                                              | - -- Function: ssax:next-token prefix-char-list break-char-list                | -          comment-string port                                                 | -     Skips any number of the prefix characters (members of the                | -     PREFIX-CHAR-LIST), if any, and reads the sequence of characters up       | -     to (but not including) a break character, one of the                     | -     BREAK-CHAR-LIST.                                                         | -                                                                              | -     The string of characters thus read is returned.  The break               | -     character is left on the input stream.  BREAK-CHAR-LIST may              | -     include the symbol `*eof*'; otherwise, EOF is fatal, generating an       | -     error message including a specified COMMENT-STRING.                      | -                                                                              | -`ssax:next-token-of' is similar to `ssax:next-token' except that it           | -implements an inclusion rather than delimiting semantics.                     | -                                                                              | - -- Function: ssax:next-token-of inc-charset port                             | -     Reads characters from the PORT that belong to the list of                | -     characters INC-CHARSET.  The reading stops at the first character        | -     which is not a member of the set.  This character is left on the         | -     stream.  All the read characters are returned in a string.               | -                                                                              | - -- Function: ssax:next-token-of pred port                                    | -     Reads characters from the PORT for which PRED (a procedure of one        | -     argument) returns non-#f.  The reading stops at the first                | -     character for which PRED returns #f.  That character is left on          | -     the stream.  All the results of evaluating of PRED up to #f are          | -     returned in a string.                                                    | -                                                                              | -     PRED is a procedure that takes one argument (a character or the          | -     EOF object) and returns a character or #f.  The returned character       | -     does not have to be the same as the input argument to the PRED.          | -     For example,                                                             | -                                                                              | -          (ssax:next-token-of (lambda (c)                                     | -                                (cond ((eof-object? c) #f)                    | + +4.11 Parsing XML +================ + +`(require 'xml-parse)' or `(require 'ssax)' + +The XML standard document referred to in this module is +`http://www.w3.org/TR/1998/REC-xml-19980210.html'. + +The present frameworks fully supports the XML Namespaces Recommendation +`http://www.w3.org/TR/REC-xml-names'. + +4.11.1 String Glue +------------------ + + -- Function: ssax:reverse-collect-str list-of-frags +     Given the list of fragments (some of which are text strings), +     reverse the list and concatenate adjacent text strings.  If +     LIST-OF-FRAGS has zero or one element, the result of the procedure +     is `equal?' to its argument. + + -- Function: ssax:reverse-collect-str-drop-ws list-of-frags +     Given the list of fragments (some of which are text strings), +     reverse the list and concatenate adjacent text strings while +     dropping "unsignificant" whitespace, that is, whitespace in front, +     behind and between elements.  The whitespace that is included in +     character data is not affected. + +     Use this procedure to "intelligently" drop "insignificant" +     whitespace in the parsed SXML.  If the strict compliance with the +     XML Recommendation regarding the whitespace is desired, use the +     `ssax:reverse-collect-str' procedure instead. + +4.11.2 Character and Token Functions +------------------------------------ + +The following functions either skip, or build and return tokens, +according to inclusion or delimiting semantics.  The list of characters +to expect, include, or to break at may vary from one invocation of a +function to another.  This allows the functions to easily parse even +context-sensitive languages. + +  Exceptions are mentioned specifically.  The list of expected +characters (characters to skip until, or break-characters) may include +an EOF "character", which is coded as symbol *eof* + +  The input stream to parse is specified as a PORT, which is the last +argument. + + -- Function: ssax:assert-current-char char-list string port +     Reads a character from the PORT and looks it up in the CHAR-LIST +     of expected characters.  If the read character was found among +     expected, it is returned.  Otherwise, the procedure writes a +     message using STRING as a comment and quits. + + -- Function: ssax:skip-while char-list port +     Reads characters from the PORT and disregards them, as long as they +     are mentioned in the CHAR-LIST.  The first character (which may be +     EOF) peeked from the stream that is _not_ a member of the +     CHAR-LIST is returned. + + -- Function: ssax:init-buffer +     Returns an initial buffer for `ssax:next-token*' procedures. +     `ssax:init-buffer' may allocate a new buffer at each invocation. + + -- Function: ssax:next-token prefix-char-list break-char-list +          comment-string port +     Skips any number of the prefix characters (members of the +     PREFIX-CHAR-LIST), if any, and reads the sequence of characters up +     to (but not including) a break character, one of the +     BREAK-CHAR-LIST. + +     The string of characters thus read is returned.  The break +     character is left on the input stream.  BREAK-CHAR-LIST may +     include the symbol `*eof*'; otherwise, EOF is fatal, generating an +     error message including a specified COMMENT-STRING. + +`ssax:next-token-of' is similar to `ssax:next-token' except that it +implements an inclusion rather than delimiting semantics. + + -- Function: ssax:next-token-of inc-charset port +     Reads characters from the PORT that belong to the list of +     characters INC-CHARSET.  The reading stops at the first character +     which is not a member of the set.  This character is left on the +     stream.  All the read characters are returned in a string. + + -- Function: ssax:next-token-of pred port +     Reads characters from the PORT for which PRED (a procedure of one +     argument) returns non-#f.  The reading stops at the first +     character for which PRED returns #f.  That character is left on +     the stream.  All the results of evaluating of PRED up to #f are +     returned in a string. + +     PRED is a procedure that takes one argument (a character or the +     EOF object) and returns a character or #f.  The returned character +     does not have to be the same as the input argument to the PRED. +     For example, + +          (ssax:next-token-of (lambda (c) +                                (cond ((eof-object? c) #f)                                        ((char-alphabetic? c) (char-downcase c)) -                                      (else #f)))                             | -                              (current-input-port))                           | -                                                                              | -     will try to read an alphabetic token from the current input port,        | -     and return it in lower case.                                             | -                                                                              | - -- Function: ssax:read-string len port                                       | -     Reads LEN characters from the PORT, and returns them in a string.        | -     If EOF is encountered before LEN characters are read, a shorter          | -     string will be returned.                                                 | -                                                                              | -4.11.3 Data Types                                                             | ------------------                                                             | -                                                                              | -`TAG-KIND'                                                                    | -     A symbol `START', `END', `PI', `DECL', `COMMENT', `CDSECT', or           | -     `ENTITY-REF' that identifies a markup token                              | -                                                                              | -`UNRES-NAME'                                                                  | -     a name (called GI in the XML Recommendation) as given in an XML          | -     document for a markup token: start-tag, PI target, attribute name.       | -     If a GI is an NCName, UNRES-NAME is this NCName converted into a         | -     Scheme symbol.  If a GI is a QName, `UNRES-NAME' is a pair of            | -     symbols: `(PREFIX . LOCALPART)'.                                         | -                                                                              | -`RES-NAME'                                                                    | -     An expanded name, a resolved version of an `UNRES-NAME'.  For an         | -     element or an attribute name with a non-empty namespace URI,             | -     `RES-NAME' is a pair of symbols, `(URI-SYMB . LOCALPART)'.               | -     Otherwise, it's a single symbol.                                         | -                                                                              | -`ELEM-CONTENT-MODEL'                                                          | -     A symbol:                                                                | -    `ANY'                                                                     | -          anything goes, expect an END tag.                                   | -                                                                              | -    `EMPTY-TAG'                                                               | -          no content, and no END-tag is coming                                | -                                                                              | -    `EMPTY'                                                                   | -          no content, expect the END-tag as the next token                    | -                                                                              | -    `PCDATA'                                                                  | -          expect character data only, and no children elements                | -                                                                              | -    `MIXED'                                                                   | -                                                                              | -    `ELEM-CONTENT'                                                            | -                                                                              | -`URI-SYMB'                                                                    | -     A symbol representing a namespace URI - or other symbol chosen by        | -     the user to represent URI.  In the former case, `URI-SYMB' is            | -     created by %-quoting of bad URI characters and converting the            | -     resulting string into a symbol.                                          | -                                                                              | -`NAMESPACES'                                                                  | -     A list representing namespaces in effect.  An element of the list        | -     has one of the following forms:                                          | -                                                                              | -    `(PREFIX URI-SYMB . URI-SYMB) or'                                         | -                                                                              | -    `(PREFIX USER-PREFIX . URI-SYMB)'                                         | -          USER-PREFIX is a symbol chosen by the user to represent the         | -          URI.                                                                | -                                                                              | -    `(#f USER-PREFIX . URI-SYMB)'                                             | -          Specification of the user-chosen prefix and a URI-SYMBOL.           | -                                                                              | -    `(*DEFAULT* USER-PREFIX . URI-SYMB)'                                      | -          Declaration of the default namespace                                | -                                                                              | -    `(*DEFAULT* #f . #f)'                                                     | -          Un-declaration of the default namespace.  This notation             | -          represents overriding of the previous declaration                   | -                                                                              | -                                                                              | -     A NAMESPACES list may contain several elements for the same PREFIX.      | -     The one closest to the beginning of the list takes effect.               | -                                                                              | -`ATTLIST'                                                                     | -     An ordered collection of (NAME . VALUE) pairs, where NAME is a           | -     RES-NAME or an UNRES-NAME.  The collection is an ADT.                    | -                                                                              | -`STR-HANDLER'                                                                 | -     A procedure of three arguments: STRING1 STRING2 SEED returning a         | -     new SEED.  The procedure is supposed to handle a chunk of                | -     character data STRING1 followed by a chunk of character data             | -     STRING2.  STRING2 is a short string, often `"\n"' and even `""'.         | -                                                                              | -`ENTITIES'                                                                    | -     An assoc list of pairs:                                                  | -             (NAMED-ENTITY-NAME . NAMED-ENTITY-BODY)                          | -                                                                              | -     where NAMED-ENTITY-NAME is a symbol under which the entity was           | -     declared, NAMED-ENTITY-BODY is either a string, or (for an               | -     external entity) a thunk that will return an input port (from which      | -     the entity can be read).  NAMED-ENTITY-BODY may also be #f.  This        | -     is an indication that a NAMED-ENTITY-NAME is currently being             | -     expanded.  A reference to this NAMED-ENTITY-NAME will be an error:       | -     violation of the WFC nonrecursion.                                       | -                                                                              | -`XML-TOKEN'                                                                   | -     This record represents a markup, which is, according to the XML          | -     Recommendation, "takes the form of start-tags, end-tags,                 | -     empty-element tags, entity references, character references,             | -     comments, CDATA section delimiters, document type declarations, and      | -     processing instructions."                                                | -                                                                              | -    kind                                                                      | -          a TAG-KIND                                                          | -                                                                              | -    head                                                                      | -          an UNRES-NAME.  For XML-TOKENs of kinds 'COMMENT and 'CDSECT,       | -          the head is #f.                                                     | -                                                                              | -     For example,                                                             | -          <P>                   => kind=START,      head=P                    | -          </P>                  => kind=END,        head=P                    | -          <BR/>                 => kind=EMPTY-EL,   head=BR                   | -          <!DOCTYPE OMF ...>    => kind=DECL,       head=DOCTYPE              | -          <?xml version="1.0"?> => kind=PI,         head=xml                  | -          &my-ent;              => kind=ENTITY-REF, head=my-ent               | -                                                                              | -     Character references are not represented by xml-tokens as these          | -     references are transparently resolved into the corresponding             | -     characters.                                                              | -                                                                              | -`XML-DECL'                                                                    | -     The record represents a datatype of an XML document: the list of         | -     declared elements and their attributes, declared notations, list of      | -     replacement strings or loading procedures for parsed general             | -     entities, etc.  Normally an XML-DECL record is created from a DTD        | -     or an XML Schema, although it can be created and filled in in many       | -     other ways (e.g., loaded from a file).                                   | -                                                                              | -    ELEMS                                                                     | -          an (assoc) list of decl-elem or #f.  The latter instructs the       | -          parser to do no validation of elements and attributes.              | -                                                                              | -    DECL-ELEM                                                                 | -          declaration of one element:                                         | -                                                                              | -          `(ELEM-NAME ELEM-CONTENT DECL-ATTRS)'                               | -                                                                              | -          ELEM-NAME is an UNRES-NAME for the element.                         | -                                                                              | -          ELEM-CONTENT is an ELEM-CONTENT-MODEL.                              | -                                                                              | -          DECL-ATTRS is an `ATTLIST', of `(ATTR-NAME . VALUE)'                | -          associations.                                                       | -                                                                              | -          This element can declare a user procedure to handle parsing         | -          of an element (e.g., to do a custom validation, or to build a       | -          hash of IDs as they're encountered).                                | -                                                                              | -    DECL-ATTR                                                                 | -          an element of an `ATTLIST', declaration of one attribute:           | -                                                                              | -          `(ATTR-NAME CONTENT-TYPE USE-TYPE DEFAULT-VALUE)'                   | -                                                                              | -          ATTR-NAME is an UNRES-NAME for the declared attribute.              | -                                                                              | -          CONTENT-TYPE is a symbol: `CDATA', `NMTOKEN', `NMTOKENS', ...       | -          or a list of strings for the enumerated type.                       | -                                                                              | -          USE-TYPE is a symbol: `REQUIRED', `IMPLIED', or `FIXED'.            | -                                                                              | -          DEFAULT-VALUE is a string for the default value, or #f if not       | -          given.                                                              | -                                                                              | -                                                                              | -                                                                              | -4.11.4 Low-Level Parsers and Scanners                                         | --------------------------------------                                         | -                                                                              | -These procedures deal with primitive lexical units (Names, whitespaces,       | -tags) and with pieces of more generic productions.  Most of these             | -parsers must be called in appropriate context.  For example,                  | -`ssax:complete-start-tag' must be called only when the start-tag has          | -been detected and its GI has been read.                                       | -                                                                              | - -- Function: ssax:skip-s port                                                | -     Skip the S (whitespace) production as defined by                         | -          [3] S ::= (#x20 | #x09 | #x0D | #x0A)                               | -                                                                              | -     `ssax:skip-s' returns the first not-whitespace character it              | -     encounters while scanning the PORT.  This character is left on the       | -     input stream.                                                            | -                                                                              | - -- Function: ssax:read-ncname port                                           | -     Read a NCName starting from the current position in the PORT and         | -     return it as a symbol.                                                   | -                                                                              | -          [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':'             | -                           | CombiningChar | Extender                         | -          [5] Name ::= (Letter | '_' | ':') (NameChar)*                       | -                                                                              | -     This code supports the XML Namespace Recommendation REC-xml-names,       | -     which modifies the above productions as follows:                         | -                                                                              | -          [4] NCNameChar ::= Letter | Digit | '.' | '-' | '_'                 | -                                | CombiningChar | Extender                    | -          [5] NCName ::= (Letter | '_') (NCNameChar)*                         | -                                                                              | -     As the Rec-xml-names says,                                               | -                                                                              | -          "An XML document conforms to this specification if all other        | -          tokens [other than element types and attribute names] in the        | -          document which are required, for XML conformance, to match          | -          the XML production for Name, match this specification's             | -          production for NCName."                                             | -                                                                              | -     Element types and attribute names must match the production QName,       | -     defined below.                                                           | -                                                                              | - -- Function: ssax:read-qname port                                            | -     Read a (namespace-) Qualified Name, QName, from the current              | -     position in PORT; and return an UNRES-NAME.                              | -                                                                              | -     From REC-xml-names:                                                      | -          [6] QName ::= (Prefix ':')? LocalPart                               | -          [7] Prefix ::= NCName                                               | -          [8] LocalPart ::= NCName                                            | -                                                                              | - -- Function: ssax:read-markup-token port                                     | -     This procedure starts parsing of a markup token.  The current            | -     position in the stream must be `<'.  This procedure scans enough         | -     of the input stream to figure out what kind of a markup token it         | -     is seeing.  The procedure returns an XML-TOKEN structure                 | -     describing the token.  Note, generally reading of the current            | -     markup is not finished!  In particular, no attributes of the             | -     start-tag token are scanned.                                             | -                                                                              | -     Here's a detailed break out of the return values and the position        | -     in the PORT when that particular value is returned:                      | -                                                                              | -    PI-token                                                                  | -          only PI-target is read.  To finish the Processing-Instruction       | -          and disregard it, call `ssax:skip-pi'.  `ssax:read-attributes'      | -          may be useful as well (for PIs whose content is                     | -          attribute-value pairs).                                             | -                                                                              | -    END-token                                                                 | -          The end tag is read completely; the current position is right       | -          after the terminating `>' character.                                | -                                                                              | -    COMMENT                                                                   | -          is read and skipped completely.  The current position is            | -          right after `-->' that terminates the comment.                      | -                                                                              | -    CDSECT                                                                    | -          The current position is right after `<!CDATA['.  Use                | -          `ssax:read-cdata-body' to read the rest.                            | -                                                                              | -    DECL                                                                      | -          We have read the keyword (the one that follows `<!')                | -          identifying this declaration markup.  The current position is       | -          after the keyword (usually a whitespace character)                  | -                                                                              | -    START-token                                                               | -          We have read the keyword (GI) of this start tag.  No                | -          attributes are scanned yet.  We don't know if this tag has an       | -          empty content either.  Use `ssax:complete-start-tag' to             | -          finish parsing of the token.                                        | -                                                                              | -                                                                              | - -- Function: ssax:skip-pi port                                               | -     The current position is inside a PI.  Skip till the rest of the PI       | -                                                                              | - -- Function: ssax:read-pi-body-as-string port                                | -     The current position is right after reading the PITarget.  We read       | -     the body of PI and return is as a string.  The port will point to        | -     the character right after `?>' combination that terminates PI.           | -                                                                              | -          [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'    | -                                                                              | - -- Function: ssax:skip-internal-dtd port                                     | -     The current pos in the port is inside an internal DTD subset (e.g.,      | -     after reading `#\[' that begins an internal DTD subset) Skip until       | -     the `]>' combination that terminates this DTD.                           | -                                                                              | - -- Function: ssax:read-cdata-body port str-handler seed                      | -     This procedure must be called after we have read a string                | -     `<![CDATA[' that begins a CDATA section.  The current position           | -     must be the first position of the CDATA body.  This function reads       | -     _lines_ of the CDATA body and passes them to a STR-HANDLER, a            | -     character data consumer.                                                 | -                                                                              | -     STR-HANDLER is a procedure taking arguments: STRING1, STRING2, and       | -     SEED.  The first STRING1 argument to STR-HANDLER never contains a        | -     newline; the second STRING2 argument often will.  On the first           | -     invocation of STR-HANDLER, SEED is the one passed to                     | -     `ssax:read-cdata-body' as the third argument.  The result of this        | -     first invocation will be passed as the SEED argument to the second       | -     invocation of the line consumer, and so on.  The result of the           | -     last invocation of the STR-HANDLER is returned by the                    | -     `ssax:read-cdata-body'.  Note a similarity to the fundamental            | -     "fold" iterator.                                                         | -                                                                              | -     Within a CDATA section all characters are taken at their face            | -     value, with three exceptions:                                            | -        * CR, LF, and CRLF are treated as line delimiters, and passed         | -          as a single `#\newline' to STR-HANDLER                              | -                                                                              | -        * `]]>' combination is the end of the CDATA section.  `>' is       | -          treated as an embedded `>' character.                               | -                                                                              | -        * `<' and `&' are not specially recognized (and are not        | -          expanded)!                                                          | -                                                                              | -                                                                              | - -- Function: ssax:read-char-ref port                                         | -          [66]  CharRef ::=  '&#' [0-9]+ ';'                                  | -                           | '&#x' [0-9a-fA-F]+ ';'                           | -                                                                              | -     This procedure must be called after we we have read `&#' that            | -     introduces a char reference.  The procedure reads this reference         | -     and returns the corresponding char.  The current position in PORT        | -     will be after the `;' that terminates the char reference.                | -                                                                              | -     Faults detected:                                                         | -     WFC: XML-Spec.html#wf-Legalchar                                          | -                                                                              | -     According to Section `4.1 Character and Entity References' of the        | -     XML Recommendation:                                                      | -                                                                              | -          "[Definition: A character reference refers to a specific            | -          character in the ISO/IEC 10646 character set, for example one       | -          not directly accessible from available input devices.]"             | -                                                                              | -                                                                              | - -- Function: ssax:handle-parsed-entity port name entities                    | -          content-handler str-handler seed                                    | -     Expands and handles a parsed-entity reference.                           | -                                                                              | -     NAME is a symbol, the name of the parsed entity to expand.               | -     CONTENT-HANDLER is a procedure of arguments PORT, ENTITIES, and          | -     SEED that returns a seed.  STR-HANDLER is called if the entity in        | -     question is a pre-declared entity.                                       | -                                                                              | -     `ssax:handle-parsed-entity' returns the result returned by               | -     CONTENT-HANDLER or STR-HANDLER.                                          | -                                                                              | -     Faults detected:                                                         | -     WFC: XML-Spec.html#wf-entdeclared                                        | -     WFC: XML-Spec.html#norecursion                                           | -                                                                              | - -- Function: attlist-add attlist name-value                                  | -     Add a NAME-VALUE pair to the existing ATTLIST, preserving its            | -     sorted ascending order; and return the new list.  Return #f if a         | -     pair with the same name already exists in ATTLIST                        | -                                                                              | - -- Function: attlist-remove-top attlist                                      | -     Given an non-null ATTLIST, return a pair of values: the top and          | -     the rest.                                                                | -                                                                              | - -- Function: ssax:read-attributes port entities                              | -     This procedure reads and parses a production "Attribute".                | -                                                                              | -          [41] Attribute ::= Name Eq AttValue                                 | -          [10] AttValue ::=  '"' ([^<&"] | Reference)* '"'                    | -                          | "'" ([^<&'] | Reference)* "'"                     | -          [25] Eq ::= S? '=' S?                                               | -                                                                              | -     The procedure returns an ATTLIST, of Name (as UNRES-NAME), Value         | -     (as string) pairs.  The current character on the PORT is a               | -     non-whitespace character that is not an NCName-starting character.       | -                                                                              | -     Note the following rules to keep in mind when reading an                 | -     "AttValue":                                                              | -                                                                              | -          Before the value of an attribute is passed to the application       | -          or checked for validity, the XML processor must normalize it        | -          as follows:                                                         | -                                                                              | -             * A character reference is processed by appending the            | -               referenced character to the attribute value.                   | -                                                                              | -             * An entity reference is processed by recursively                | -               processing the replacement text of the entity.  The            | -               named entities `amp', `lt', `gt', `quot', and `apos' are       | -               pre-declared.                                                  | -                                                                              | -             * A whitespace character (#x20, #x0D, #x0A, #x09) is             | -               processed by appending #x20 to the normalized value,           | -               except that only a single #x20 is appended for a               | -               "#x0D#x0A" sequence that is part of an external parsed         | -               entity or the literal entity value of an internal parsed       | -               entity.                                                        | -                                                                              | -             * Other characters are processed by appending them to the        | -               normalized value.                                              | -                                                                              | -                                                                              | -                                                                              | -     Faults detected:                                                         | -     WFC: XML-Spec.html#CleanAttrVals                                         | -     WFC: XML-Spec.html#uniqattspec                                           | -                                                                              | - -- Function: ssax:resolve-name port unres-name namespaces                    | -          apply-default-ns?                                                   | -     Convert an UNRES-NAME to a RES-NAME, given the appropriate               | -     NAMESPACES declarations.  The last parameter, APPLY-DEFAULT-NS?,         | -     determines if the default namespace applies (for instance, it does       | -     not for attribute names).                                                | -                                                                              | -     Per REC-xml-names/#nsc-NSDeclared, the "xml" prefix is considered        | -     pre-declared and bound to the namespace name                             | -     "http://www.w3.org/XML/1998/namespace".                                  | -                                                                              | -     `ssax:resolve-name' tests for the namespace constraints:                 | -     `http://www.w3.org/TR/REC-xml-names/#nsc-NSDeclared'                     | -                                                                              | - -- Function: ssax:complete-start-tag tag port elems entities namespaces      | -     Complete parsing of a start-tag markup.  `ssax:complete-start-tag'       | -     must be called after the start tag token has been read.  TAG is an       | -     UNRES-NAME.  ELEMS is an instance of the ELEMS slot of XML-DECL;         | -     it can be #f to tell the function to do _no_ validation of               | -     elements and their attributes.                                           | -                                                                              | -     `ssax:complete-start-tag' returns several values:                        | -        * ELEM-GI: a RES-NAME.                                                | -                                                                              | -        * ATTRIBUTES: element's attributes, an ATTLIST of (RES-NAME .         | -          STRING) pairs.  The list does NOT include xmlns attributes.         | -                                                                              | -        * NAMESPACES: the input list of namespaces amended with               | -          namespace (re-)declarations contained within the start-tag          | -          under parsing                                                       | -                                                                              | -        * ELEM-CONTENT-MODEL                                                  | -                                                                              | -     On exit, the current position in PORT will be the first character        | -     after `>' that terminates the start-tag markup.                          | -                                                                              | -     Faults detected:                                                         | -     VC: XML-Spec.html#enum                                                   | -     VC: XML-Spec.html#RequiredAttr                                           | -     VC: XML-Spec.html#FixedAttr                                              | -     VC: XML-Spec.html#ValueType                                              | -     WFC: XML-Spec.html#uniqattspec (after namespaces prefixes are            | -     resolved)                                                                | -     VC: XML-Spec.html#elementvalid                                           | -     WFC: REC-xml-names/#dt-NSName                                            | -                                                                              | -     _Note_: although XML Recommendation does not explicitly say it,          | -     xmlns and xmlns: attributes don't have to be declared (although          | -     they can be declared, to specify their default value).                   | -                                                                              | - -- Function: ssax:read-external-id port                                      | -     Parses an ExternalID production:                                         | -                                                                              | -          [75] ExternalID ::= 'SYSTEM' S SystemLiteral                        | -                            | 'PUBLIC' S PubidLiteral S SystemLiteral         | -          [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")            | -          [12] PubidLiteral ::=  '"' PubidChar* '"'                           | -                               | "'" (PubidChar - "'")* "'"                   | -          [13] PubidChar ::=  #x20 | #x0D | #x0A | [a-zA-Z0-9]                | -                                   | [-'()+,./:=?;!*#@$_%]                    | -                                                                              | -     Call `ssax:read-external-id' when an ExternalID is expected; that        | -     is, the current character must be either #\S or #\P that starts          | -     correspondingly a SYSTEM or PUBLIC token.  `ssax:read-external-id'       | -     returns the SYSTEMLITERAL as a string.  A PUBIDLITERAL is                | -     disregarded if present.                                                  | -                                                                              | -4.11.5 Mid-Level Parsers and Scanners                                         | --------------------------------------                                         | -                                                                              | -These procedures parse productions corresponding to the whole                 | -(document) entity or its higher-level pieces (prolog, root element,           | -etc).                                                                         | -                                                                              | - -- Function: ssax:scan-misc port                                             | -     Scan the Misc production in the context:                                 | -                                                                              | -          [1]  document ::=  prolog element Misc*                             | -          [22] prolog ::= XMLDecl? Misc* (doctypedec l Misc*)?                | -          [27] Misc ::= Comment | PI |  S                                     | -                                                                              | -     Call `ssax:scan-misc' in the prolog or epilog contexts.  In these        | -     contexts, whitespaces are completely ignored.  The return value          | -     from `ssax:scan-misc' is either a PI-token, a DECL-token, a START        | -     token, or *EOF*.  Comments are ignored and not reported.                 | -                                                                              | - -- Function: ssax:read-char-data port expect-eof? str-handler iseed          | -     Read the character content of an XML document or an XML element.         | -                                                                              | -          [43] content ::=                                                    | -          (element | CharData | Reference | CDSect | PI | Comment)*           | -                                                                              | -     To be more precise, `ssax:read-char-data' reads CharData, expands        | -     CDSect and character entities, and skips comments.                       | -     `ssax:read-char-data' stops at a named reference, EOF, at the            | -     beginning of a PI, or a start/end tag.                                   | -                                                                              | -     EXPECT-EOF? is a boolean indicating if EOF is normal; i.e., the          | -     character data may be terminated by the EOF.  EOF is normal while        | -     processing a parsed entity.                                              | -                                                                              | -     ISEED is an argument passed to the first invocation of STR-HANDLER.      | -                                                                              | -     `ssax:read-char-data' returns two results: SEED and TOKEN.  The          | -     SEED is the result of the last invocation of STR-HANDLER, or the         | -     original ISEED if STR-HANDLER was never called.                          | -                                                                              | -     TOKEN can be either an eof-object (this can happen only if               | -     EXPECT-EOF?  was #t), or:                                                | -        * an xml-token describing a START tag or an END-tag; For a            | -          start token, the caller has to finish reading it.                   | -                                                                              | -        * an xml-token describing the beginning of a PI.  It's up to an       | -          application to read or skip through the rest of this PI;            | -                                                                              | -        * an xml-token describing a named entity reference.                   | -                                                                              | -                                                                              | -     CDATA sections and character references are expanded inline and          | -     never returned.  Comments are silently disregarded.                      | -                                                                              | -     As the XML Recommendation requires, all whitespace in character          | -     data must be preserved.  However, a CR character (#x0D) must be          | -     disregarded if it appears before a LF character (#x0A), or replaced      | -     by a #x0A character otherwise.  See Secs. 2.10 and 2.11 of the XML       | -     Recommendation.  See also the canonical XML Recommendation.              | -                                                                              | - -- Function: ssax:assert-token token kind gi error-cont                      | -     Make sure that TOKEN is of anticipated KIND and has anticipated          | -     GI.  Note that the GI argument may actually be a pair of two             | -     symbols, Namespace-URI or the prefix, and of the localname.  If          | -     the assertion fails, ERROR-CONT is evaluated by passing it three         | -     arguments: TOKEN KIND GI.  The result of ERROR-CONT is returned.         | -                                                                              | -4.11.6 High-level Parsers                                                     | --------------------------                                                     | -                                                                              | -These procedures are to instantiate a SSAX parser.  A user can                | -instantiate the parser to do the full validation, or no validation, or        | -any particular validation.  The user specifies which PI he wants to be        | -notified about.  The user tells what to do with the parsed character          | -and element data.  The latter handlers determine if the parsing follows       | -a SAX or a DOM model.                                                         | -                                                                              | - -- Function: ssax:make-pi-parser my-pi-handlers                              | -     Create a parser to parse and process one Processing Element (PI).        | -                                                                              | -     MY-PI-HANDLERS is an association list of pairs `(PI-TAG .                | -     PI-HANDLER)' where PI-TAG is an NCName symbol, the PI target; and        | -     PI-HANDLER is a procedure taking arguments PORT, PI-TAG, and SEED.       | -                                                                              | -     PI-HANDLER should read the rest of the PI up to and including the        | -     combination `?>' that terminates the PI.  The handler should             | -     return a new seed.  One of the PI-TAGs may be the symbol                 | -     `*DEFAULT*'.  The corresponding handler will handle PIs that no          | -     other handler will.  If the *DEFAULT* PI-TAG is not specified,           | -     `ssax:make-pi-parser' will assume the default handler that skips         | -     the body of the PI.                                                      | -                                                                              | -     `ssax:make-pi-parser' returns a procedure of arguments PORT,             | -     PI-TAG, and SEED; that will parse the current PI according to            | -     MY-PI-HANDLERS.                                                          | -                                                                              | - -- Function: ssax:make-elem-parser my-new-level-seed my-finish-element       | -          my-char-data-handler my-pi-handlers                                 | -     Create a parser to parse and process one element, including its          | -     character content or children elements.  The parser is typically         | -     applied to the root element of a document.                               | -                                                                              | -    MY-NEW-LEVEL-SEED                                                         | -          is a procedure taking arguments:                                    | -                                                                              | -          ELEM-GI ATTRIBUTES NAMESPACES EXPECTED-CONTENT SEED                 | -                                                                              | -          where ELEM-GI is a RES-NAME of the element about to be              | -          processed.                                                          | -                                                                              | -          MY-NEW-LEVEL-SEED is to generate the seed to be passed to           | -          handlers that process the content of the element.                   | -                                                                              | -    MY-FINISH-ELEMENT                                                         | -          is a procedure taking arguments:                                    | -                                                                              | -          ELEM-GI ATTRIBUTES NAMESPACES PARENT-SEED SEED                      | -                                                                              | -          MY-FINISH-ELEMENT is called when parsing of ELEM-GI is              | -          finished.  The SEED is the result from the last content             | -          parser (or from MY-NEW-LEVEL-SEED if the element has the            | -          empty content).  PARENT-SEED is the same seed as was passed         | -          to MY-NEW-LEVEL-SEED.  MY-FINISH-ELEMENT is to generate a           | -          seed that will be the result of the element parser.                 | -                                                                              | -    MY-CHAR-DATA-HANDLER                                                      | -          is a STR-HANDLER as described in Data Types above.                  | -                                                                              | -    MY-PI-HANDLERS                                                            | -          is as described for `ssax:make-pi-handler' above.                   | -                                                                              | -                                                                              | -     The generated parser is a procedure taking arguments:                    | -                                                                              | -     START-TAG-HEAD PORT ELEMS ENTITIES NAMESPACES PRESERVE-WS? SEED          | -                                                                              | -     The procedure must be called after the start tag token has been          | -     read.  START-TAG-HEAD is an UNRES-NAME from the start-element tag.       | -     ELEMS is an instance of ELEMS slot of XML-DECL.                          | -                                                                              | -     Faults detected:                                                         | -     VC: XML-Spec.html#elementvalid                                           | -     WFC: XML-Spec.html#GIMatch                                               | -                                                                              | - -- Function: ssax:make-parser user-handler-tag user-handler ...              | -     Create an XML parser, an instance of the XML parsing framework.          | -     This will be a SAX, a DOM, or a specialized parser depending on the      | -     supplied user-handlers.                                                  | -                                                                              | -     `ssax:make-parser' takes an even number of arguments;                    | -     USER-HANDLER-TAG is a symbol that identifies a procedure (or             | -     association list for `PROCESSING-INSTRUCTIONS') (USER-HANDLER)           | -     that follows the tag.  Given below are tags and signatures of the        | -     corresponding procedures.  Not all tags have to be specified.  If        | -     some are omitted, reasonable defaults will apply.                        | -                                                                              | -    `DOCTYPE'                                                                 | -          handler-procedure: PORT DOCNAME SYSTEMID INTERNAL-SUBSET? SEED      | -                                                                              | -          If INTERNAL-SUBSET? is #t, the current position in the port is      | -          right after we have read `[' that begins the internal DTD           | -          subset.  We must finish reading of this subset before we            | -          return (or must call `skip-internal-dtd' if we aren't               | -          interested in reading it).  PORT at exit must be at the first       | -          symbol after the whole DOCTYPE declaration.                         | -                                                                              | -          The handler-procedure must generate four values:                    | -                                                                              | -               ELEMS ENTITIES NAMESPACES SEED                                 | -                                                                              | -          ELEMS is as defined for the ELEMS slot of XML-DECL.  It may be      | -          #f to switch off validation.  NAMESPACES will typically             | -          contain USER-PREFIXes for selected URI-SYMBs.  The default          | -          handler-procedure skips the internal subset, if any, and            | -          returns `(values #f '() '() seed)'.                                 | -                                                                              | -    `UNDECL-ROOT'                                                             | -          procedure: ELEM-GI SEED                                             | -                                                                              | -          where ELEM-GI is an UNRES-NAME of the root element.  This           | -          procedure is called when an XML document under parsing              | -          contains _no_ DOCTYPE declaration.                                  | -                                                                              | -          The handler-procedure, as a DOCTYPE handler procedure above,        | -          must generate four values:                                          | -                                                                              | -               ELEMS ENTITIES NAMESPACES SEED                                 | -                                                                              | -          The default handler-procedure returns (values #f '() '() seed)      | -                                                                              | -    `DECL-ROOT'                                                               | -          procedure: ELEM-GI SEED                                             | -                                                                              | -          where ELEM-GI is an UNRES-NAME of the root element.  This           | -          procedure is called when an XML document under parsing does         | -          contains the DOCTYPE declaration.  The handler-procedure must       | -          generate a new SEED (and verify that the name of the root           | -          element matches the doctype, if the handler so wishes).  The        | -          default handler-procedure is the identity function.                 | -                                                                              | -    `NEW-LEVEL-SEED'                                                          | -          procedure: see ssax:make-elem-parser, my-new-level-seed             | -                                                                              | -    `FINISH-ELEMENT'                                                          | -          procedure: see ssax:make-elem-parser, my-finish-element             | -                                                                              | -    `CHAR-DATA-HANDLER'                                                       | -          procedure: see ssax:make-elem-parser, my-char-data-handler          | -                                                                              | -    `PROCESSING-INSTRUCTIONS'                                                 | -          association list as is passed to `ssax:make-pi-parser'.  The        | -          default value is '()                                                | -                                                                              | -                                                                              | -     The generated parser is a procedure of arguments PORT and SEED.          | -                                                                              | -     This procedure parses the document prolog and then exits to an           | -     element parser (created by `ssax:make-elem-parser') to handle the        | -     rest.                                                                    | -                                                                              | -          [1]  document ::=  prolog element Misc*                             | -          [22] prolog ::= XMLDecl? Misc* (doctypedec | Misc*)?                | -          [27] Misc ::= Comment | PI |  S                                     | -          [28] doctypedecl ::=  '<!DOCTYPE' S Name (S ExternalID)? S?         | -                        ('[' (markupdecl | PEReference | S)* ']' S?)? '>'     | -          [29] markupdecl ::= elementdecl | AttlistDecl                       | -                               | EntityDecl                                   | -                               | NotationDecl | PI                            | -                               | Comment                                      | -                                                                              | -4.11.7 Parsing XML to SXML                                                    | ---------------------------                                                    | -                                                                              | - -- Function: ssax:xml->sxml port namespace-prefix-assig                      | -     This is an instance of the SSAX parser that returns an SXML              | -     representation of the XML document to be read from PORT.                 | -     NAMESPACE-PREFIX-ASSIG is a list of `(USER-PREFIX . URI-STRING)'         | -     that assigns USER-PREFIXes to certain namespaces identified by           | -     particular URI-STRINGs.  It may be an empty list.                        | -     `ssax:xml->sxml' returns an SXML tree.  The port points out to the       | -     first character after the root element.                                  | -                                                                              | +                                      (else #f))) +                              (current-input-port)) + +     will try to read an alphabetic token from the current input port, +     and return it in lower case. + + -- Function: ssax:read-string len port +     Reads LEN characters from the PORT, and returns them in a string. +     If EOF is encountered before LEN characters are read, a shorter +     string will be returned. + +4.11.3 Data Types +----------------- + +`TAG-KIND' +     A symbol `START', `END', `PI', `DECL', `COMMENT', `CDSECT', or +     `ENTITY-REF' that identifies a markup token + +`UNRES-NAME' +     a name (called GI in the XML Recommendation) as given in an XML +     document for a markup token: start-tag, PI target, attribute name. +     If a GI is an NCName, UNRES-NAME is this NCName converted into a +     Scheme symbol.  If a GI is a QName, `UNRES-NAME' is a pair of +     symbols: `(PREFIX . LOCALPART)'. + +`RES-NAME' +     An expanded name, a resolved version of an `UNRES-NAME'.  For an +     element or an attribute name with a non-empty namespace URI, +     `RES-NAME' is a pair of symbols, `(URI-SYMB . LOCALPART)'. +     Otherwise, it's a single symbol. + +`ELEM-CONTENT-MODEL' +     A symbol: +    `ANY' +          anything goes, expect an END tag. + +    `EMPTY-TAG' +          no content, and no END-tag is coming + +    `EMPTY' +          no content, expect the END-tag as the next token + +    `PCDATA' +          expect character data only, and no children elements + +    `MIXED' + +    `ELEM-CONTENT' + +`URI-SYMB' +     A symbol representing a namespace URI - or other symbol chosen by +     the user to represent URI.  In the former case, `URI-SYMB' is +     created by %-quoting of bad URI characters and converting the +     resulting string into a symbol. + +`NAMESPACES' +     A list representing namespaces in effect.  An element of the list +     has one of the following forms: + +    `(PREFIX URI-SYMB . URI-SYMB) or' + +    `(PREFIX USER-PREFIX . URI-SYMB)' +          USER-PREFIX is a symbol chosen by the user to represent the +          URI. + +    `(#f USER-PREFIX . URI-SYMB)' +          Specification of the user-chosen prefix and a URI-SYMBOL. + +    `(*DEFAULT* USER-PREFIX . URI-SYMB)' +          Declaration of the default namespace + +    `(*DEFAULT* #f . #f)' +          Un-declaration of the default namespace.  This notation +          represents overriding of the previous declaration + + +     A NAMESPACES list may contain several elements for the same PREFIX. +     The one closest to the beginning of the list takes effect. + +`ATTLIST' +     An ordered collection of (NAME . VALUE) pairs, where NAME is a +     RES-NAME or an UNRES-NAME.  The collection is an ADT. + +`STR-HANDLER' +     A procedure of three arguments: STRING1 STRING2 SEED returning a +     new SEED.  The procedure is supposed to handle a chunk of +     character data STRING1 followed by a chunk of character data +     STRING2.  STRING2 is a short string, often `"\n"' and even `""'. + +`ENTITIES' +     An assoc list of pairs: +             (NAMED-ENTITY-NAME . NAMED-ENTITY-BODY) + +     where NAMED-ENTITY-NAME is a symbol under which the entity was +     declared, NAMED-ENTITY-BODY is either a string, or (for an +     external entity) a thunk that will return an input port (from which +     the entity can be read).  NAMED-ENTITY-BODY may also be #f.  This +     is an indication that a NAMED-ENTITY-NAME is currently being +     expanded.  A reference to this NAMED-ENTITY-NAME will be an error: +     violation of the WFC nonrecursion. + +`XML-TOKEN' +     This record represents a markup, which is, according to the XML +     Recommendation, "takes the form of start-tags, end-tags, +     empty-element tags, entity references, character references, +     comments, CDATA section delimiters, document type declarations, and +     processing instructions." + +    kind +          a TAG-KIND + +    head +          an UNRES-NAME.  For XML-TOKENs of kinds 'COMMENT and 'CDSECT, +          the head is #f. + +     For example, +          <P>                   => kind=START,      head=P +          </P>                  => kind=END,        head=P +          <BR/>                 => kind=EMPTY-EL,   head=BR +          <!DOCTYPE OMF ...>    => kind=DECL,       head=DOCTYPE +          <?xml version="1.0"?> => kind=PI,         head=xml +          &my-ent;              => kind=ENTITY-REF, head=my-ent + +     Character references are not represented by xml-tokens as these +     references are transparently resolved into the corresponding +     characters. + +`XML-DECL' +     The record represents a datatype of an XML document: the list of +     declared elements and their attributes, declared notations, list of +     replacement strings or loading procedures for parsed general +     entities, etc.  Normally an XML-DECL record is created from a DTD +     or an XML Schema, although it can be created and filled in in many +     other ways (e.g., loaded from a file). + +    ELEMS +          an (assoc) list of decl-elem or #f.  The latter instructs the +          parser to do no validation of elements and attributes. + +    DECL-ELEM +          declaration of one element: + +          `(ELEM-NAME ELEM-CONTENT DECL-ATTRS)' + +          ELEM-NAME is an UNRES-NAME for the element. + +          ELEM-CONTENT is an ELEM-CONTENT-MODEL. + +          DECL-ATTRS is an `ATTLIST', of `(ATTR-NAME . VALUE)' +          associations. + +          This element can declare a user procedure to handle parsing +          of an element (e.g., to do a custom validation, or to build a +          hash of IDs as they're encountered). + +    DECL-ATTR +          an element of an `ATTLIST', declaration of one attribute: + +          `(ATTR-NAME CONTENT-TYPE USE-TYPE DEFAULT-VALUE)' + +          ATTR-NAME is an UNRES-NAME for the declared attribute. + +          CONTENT-TYPE is a symbol: `CDATA', `NMTOKEN', `NMTOKENS', ... +          or a list of strings for the enumerated type. + +          USE-TYPE is a symbol: `REQUIRED', `IMPLIED', or `FIXED'. + +          DEFAULT-VALUE is a string for the default value, or #f if not +          given. + + + +4.11.4 Low-Level Parsers and Scanners +------------------------------------- + +These procedures deal with primitive lexical units (Names, whitespaces, +tags) and with pieces of more generic productions.  Most of these +parsers must be called in appropriate context.  For example, +`ssax:complete-start-tag' must be called only when the start-tag has +been detected and its GI has been read. + + -- Function: ssax:skip-s port +     Skip the S (whitespace) production as defined by +          [3] S ::= (#x20 | #x09 | #x0D | #x0A) + +     `ssax:skip-s' returns the first not-whitespace character it +     encounters while scanning the PORT.  This character is left on the +     input stream. + + -- Function: ssax:read-ncname port +     Read a NCName starting from the current position in the PORT and +     return it as a symbol. + +          [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' +                           | CombiningChar | Extender +          [5] Name ::= (Letter | '_' | ':') (NameChar)* + +     This code supports the XML Namespace Recommendation REC-xml-names, +     which modifies the above productions as follows: + +          [4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' +                                | CombiningChar | Extender +          [5] NCName ::= (Letter | '_') (NCNameChar)* + +     As the Rec-xml-names says, + +          "An XML document conforms to this specification if all other +          tokens [other than element types and attribute names] in the +          document which are required, for XML conformance, to match +          the XML production for Name, match this specification's +          production for NCName." + +     Element types and attribute names must match the production QName, +     defined below. + + -- Function: ssax:read-qname port +     Read a (namespace-) Qualified Name, QName, from the current +     position in PORT; and return an UNRES-NAME. + +     From REC-xml-names: +          [6] QName ::= (Prefix ':')? LocalPart +          [7] Prefix ::= NCName +          [8] LocalPart ::= NCName + + -- Function: ssax:read-markup-token port +     This procedure starts parsing of a markup token.  The current +     position in the stream must be `<'.  This procedure scans enough +     of the input stream to figure out what kind of a markup token it +     is seeing.  The procedure returns an XML-TOKEN structure +     describing the token.  Note, generally reading of the current +     markup is not finished!  In particular, no attributes of the +     start-tag token are scanned. + +     Here's a detailed break out of the return values and the position +     in the PORT when that particular value is returned: + +    PI-token +          only PI-target is read.  To finish the Processing-Instruction +          and disregard it, call `ssax:skip-pi'.  `ssax:read-attributes' +          may be useful as well (for PIs whose content is +          attribute-value pairs). + +    END-token +          The end tag is read completely; the current position is right +          after the terminating `>' character. + +    COMMENT +          is read and skipped completely.  The current position is +          right after `-->' that terminates the comment. + +    CDSECT +          The current position is right after `<!CDATA['.  Use +          `ssax:read-cdata-body' to read the rest. + +    DECL +          We have read the keyword (the one that follows `<!') +          identifying this declaration markup.  The current position is +          after the keyword (usually a whitespace character) + +    START-token +          We have read the keyword (GI) of this start tag.  No +          attributes are scanned yet.  We don't know if this tag has an +          empty content either.  Use `ssax:complete-start-tag' to +          finish parsing of the token. + + + -- Function: ssax:skip-pi port +     The current position is inside a PI.  Skip till the rest of the PI + + -- Function: ssax:read-pi-body-as-string port +     The current position is right after reading the PITarget.  We read +     the body of PI and return is as a string.  The port will point to +     the character right after `?>' combination that terminates PI. + +          [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' + + -- Function: ssax:skip-internal-dtd port +     The current pos in the port is inside an internal DTD subset (e.g., +     after reading `#\[' that begins an internal DTD subset) Skip until +     the `]>' combination that terminates this DTD. + + -- Function: ssax:read-cdata-body port str-handler seed +     This procedure must be called after we have read a string +     `<![CDATA[' that begins a CDATA section.  The current position +     must be the first position of the CDATA body.  This function reads +     _lines_ of the CDATA body and passes them to a STR-HANDLER, a +     character data consumer. + +     STR-HANDLER is a procedure taking arguments: STRING1, STRING2, and +     SEED.  The first STRING1 argument to STR-HANDLER never contains a +     newline; the second STRING2 argument often will.  On the first +     invocation of STR-HANDLER, SEED is the one passed to +     `ssax:read-cdata-body' as the third argument.  The result of this +     first invocation will be passed as the SEED argument to the second +     invocation of the line consumer, and so on.  The result of the +     last invocation of the STR-HANDLER is returned by the +     `ssax:read-cdata-body'.  Note a similarity to the fundamental +     "fold" iterator. + +     Within a CDATA section all characters are taken at their face +     value, with three exceptions: +        * CR, LF, and CRLF are treated as line delimiters, and passed +          as a single `#\newline' to STR-HANDLER + +        * `]]>' combination is the end of the CDATA section.  `>' is +          treated as an embedded `>' character. + +        * `<' and `&' are not specially recognized (and are not +          expanded)! + + + -- Function: ssax:read-char-ref port +          [66]  CharRef ::=  '&#' [0-9]+ ';' +                           | '&#x' [0-9a-fA-F]+ ';' + +     This procedure must be called after we we have read `&#' that +     introduces a char reference.  The procedure reads this reference +     and returns the corresponding char.  The current position in PORT +     will be after the `;' that terminates the char reference. + +     Faults detected: +     WFC: XML-Spec.html#wf-Legalchar + +     According to Section `4.1 Character and Entity References' of the +     XML Recommendation: + +          "[Definition: A character reference refers to a specific +          character in the ISO/IEC 10646 character set, for example one +          not directly accessible from available input devices.]" + + + -- Function: ssax:handle-parsed-entity port name entities +          content-handler str-handler seed +     Expands and handles a parsed-entity reference. + +     NAME is a symbol, the name of the parsed entity to expand. +     CONTENT-HANDLER is a procedure of arguments PORT, ENTITIES, and +     SEED that returns a seed.  STR-HANDLER is called if the entity in +     question is a pre-declared entity. + +     `ssax:handle-parsed-entity' returns the result returned by +     CONTENT-HANDLER or STR-HANDLER. + +     Faults detected: +     WFC: XML-Spec.html#wf-entdeclared +     WFC: XML-Spec.html#norecursion + + -- Function: attlist-add attlist name-value +     Add a NAME-VALUE pair to the existing ATTLIST, preserving its +     sorted ascending order; and return the new list.  Return #f if a +     pair with the same name already exists in ATTLIST + + -- Function: attlist-remove-top attlist +     Given an non-null ATTLIST, return a pair of values: the top and +     the rest. + + -- Function: ssax:read-attributes port entities +     This procedure reads and parses a production "Attribute".   + +          [41] Attribute ::= Name Eq AttValue +          [10] AttValue ::=  '"' ([^<&"] | Reference)* '"' +                          | "'" ([^<&'] | Reference)* "'" +          [25] Eq ::= S? '=' S? + +     The procedure returns an ATTLIST, of Name (as UNRES-NAME), Value +     (as string) pairs.  The current character on the PORT is a +     non-whitespace character that is not an NCName-starting character. + +     Note the following rules to keep in mind when reading an +     "AttValue":  + +          Before the value of an attribute is passed to the application +          or checked for validity, the XML processor must normalize it +          as follows: + +             * A character reference is processed by appending the +               referenced character to the attribute value. + +             * An entity reference is processed by recursively +               processing the replacement text of the entity.  The +               named entities `amp', `lt', `gt', `quot', and `apos' are +               pre-declared. + +             * A whitespace character (#x20, #x0D, #x0A, #x09) is +               processed by appending #x20 to the normalized value, +               except that only a single #x20 is appended for a +               "#x0D#x0A" sequence that is part of an external parsed +               entity or the literal entity value of an internal parsed +               entity. + +             * Other characters are processed by appending them to the +               normalized value. + + + +     Faults detected: +     WFC: XML-Spec.html#CleanAttrVals +     WFC: XML-Spec.html#uniqattspec + + -- Function: ssax:resolve-name port unres-name namespaces +          apply-default-ns? +     Convert an UNRES-NAME to a RES-NAME, given the appropriate +     NAMESPACES declarations.  The last parameter, APPLY-DEFAULT-NS?, +     determines if the default namespace applies (for instance, it does +     not for attribute names). + +     Per REC-xml-names/#nsc-NSDeclared, the "xml" prefix is considered +     pre-declared and bound to the namespace name +     "http://www.w3.org/XML/1998/namespace". + +     `ssax:resolve-name' tests for the namespace constraints: +     `http://www.w3.org/TR/REC-xml-names/#nsc-NSDeclared' + + -- Function: ssax:complete-start-tag tag port elems entities namespaces +     Complete parsing of a start-tag markup.  `ssax:complete-start-tag' +     must be called after the start tag token has been read.  TAG is an +     UNRES-NAME.  ELEMS is an instance of the ELEMS slot of XML-DECL; +     it can be #f to tell the function to do _no_ validation of +     elements and their attributes. + +     `ssax:complete-start-tag' returns several values: +        * ELEM-GI: a RES-NAME. + +        * ATTRIBUTES: element's attributes, an ATTLIST of (RES-NAME . +          STRING) pairs.  The list does NOT include xmlns attributes. + +        * NAMESPACES: the input list of namespaces amended with +          namespace (re-)declarations contained within the start-tag +          under parsing + +        * ELEM-CONTENT-MODEL + +     On exit, the current position in PORT will be the first character +     after `>' that terminates the start-tag markup. + +     Faults detected: +     VC: XML-Spec.html#enum +     VC: XML-Spec.html#RequiredAttr +     VC: XML-Spec.html#FixedAttr +     VC: XML-Spec.html#ValueType +     WFC: XML-Spec.html#uniqattspec (after namespaces prefixes are +     resolved) +     VC: XML-Spec.html#elementvalid +     WFC: REC-xml-names/#dt-NSName + +     _Note_: although XML Recommendation does not explicitly say it, +     xmlns and xmlns: attributes don't have to be declared (although +     they can be declared, to specify their default value). + + -- Function: ssax:read-external-id port +     Parses an ExternalID production: + +          [75] ExternalID ::= 'SYSTEM' S SystemLiteral +                            | 'PUBLIC' S PubidLiteral S SystemLiteral +          [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") +          [12] PubidLiteral ::=  '"' PubidChar* '"' +                               | "'" (PubidChar - "'")* "'" +          [13] PubidChar ::=  #x20 | #x0D | #x0A | [a-zA-Z0-9] +                                   | [-'()+,./:=?;!*#@$_%] + +     Call `ssax:read-external-id' when an ExternalID is expected; that +     is, the current character must be either #\S or #\P that starts +     correspondingly a SYSTEM or PUBLIC token.  `ssax:read-external-id' +     returns the SYSTEMLITERAL as a string.  A PUBIDLITERAL is +     disregarded if present. + +4.11.5 Mid-Level Parsers and Scanners +------------------------------------- + +These procedures parse productions corresponding to the whole +(document) entity or its higher-level pieces (prolog, root element, +etc). + + -- Function: ssax:scan-misc port +     Scan the Misc production in the context: + +          [1]  document ::=  prolog element Misc* +          [22] prolog ::= XMLDecl? Misc* (doctypedec l Misc*)? +          [27] Misc ::= Comment | PI |  S + +     Call `ssax:scan-misc' in the prolog or epilog contexts.  In these +     contexts, whitespaces are completely ignored.  The return value +     from `ssax:scan-misc' is either a PI-token, a DECL-token, a START +     token, or *EOF*.  Comments are ignored and not reported. + + -- Function: ssax:read-char-data port expect-eof? str-handler iseed +     Read the character content of an XML document or an XML element. + +          [43] content ::= +          (element | CharData | Reference | CDSect | PI | Comment)* + +     To be more precise, `ssax:read-char-data' reads CharData, expands +     CDSect and character entities, and skips comments. +     `ssax:read-char-data' stops at a named reference, EOF, at the +     beginning of a PI, or a start/end tag. + +     EXPECT-EOF? is a boolean indicating if EOF is normal; i.e., the +     character data may be terminated by the EOF.  EOF is normal while +     processing a parsed entity. + +     ISEED is an argument passed to the first invocation of STR-HANDLER. + +     `ssax:read-char-data' returns two results: SEED and TOKEN.  The +     SEED is the result of the last invocation of STR-HANDLER, or the +     original ISEED if STR-HANDLER was never called. + +     TOKEN can be either an eof-object (this can happen only if +     EXPECT-EOF?  was #t), or: +        * an xml-token describing a START tag or an END-tag; For a +          start token, the caller has to finish reading it. + +        * an xml-token describing the beginning of a PI.  It's up to an +          application to read or skip through the rest of this PI; + +        * an xml-token describing a named entity reference. + + +     CDATA sections and character references are expanded inline and +     never returned.  Comments are silently disregarded. + +     As the XML Recommendation requires, all whitespace in character +     data must be preserved.  However, a CR character (#x0D) must be +     disregarded if it appears before a LF character (#x0A), or replaced +     by a #x0A character otherwise.  See Secs. 2.10 and 2.11 of the XML +     Recommendation.  See also the canonical XML Recommendation. + + -- Function: ssax:assert-token token kind gi error-cont +     Make sure that TOKEN is of anticipated KIND and has anticipated +     GI.  Note that the GI argument may actually be a pair of two +     symbols, Namespace-URI or the prefix, and of the localname.  If +     the assertion fails, ERROR-CONT is evaluated by passing it three +     arguments: TOKEN KIND GI.  The result of ERROR-CONT is returned. + +4.11.6 High-level Parsers +------------------------- + +These procedures are to instantiate a SSAX parser.  A user can +instantiate the parser to do the full validation, or no validation, or +any particular validation.  The user specifies which PI he wants to be +notified about.  The user tells what to do with the parsed character +and element data.  The latter handlers determine if the parsing follows +a SAX or a DOM model. + + -- Function: ssax:make-pi-parser my-pi-handlers +     Create a parser to parse and process one Processing Element (PI). + +     MY-PI-HANDLERS is an association list of pairs `(PI-TAG . +     PI-HANDLER)' where PI-TAG is an NCName symbol, the PI target; and +     PI-HANDLER is a procedure taking arguments PORT, PI-TAG, and SEED. + +     PI-HANDLER should read the rest of the PI up to and including the +     combination `?>' that terminates the PI.  The handler should +     return a new seed.  One of the PI-TAGs may be the symbol +     `*DEFAULT*'.  The corresponding handler will handle PIs that no +     other handler will.  If the *DEFAULT* PI-TAG is not specified, +     `ssax:make-pi-parser' will assume the default handler that skips +     the body of the PI. + +     `ssax:make-pi-parser' returns a procedure of arguments PORT, +     PI-TAG, and SEED; that will parse the current PI according to +     MY-PI-HANDLERS. + + -- Function: ssax:make-elem-parser my-new-level-seed my-finish-element +          my-char-data-handler my-pi-handlers +     Create a parser to parse and process one element, including its +     character content or children elements.  The parser is typically +     applied to the root element of a document. + +    MY-NEW-LEVEL-SEED +          is a procedure taking arguments: + +          ELEM-GI ATTRIBUTES NAMESPACES EXPECTED-CONTENT SEED + +          where ELEM-GI is a RES-NAME of the element about to be +          processed. + +          MY-NEW-LEVEL-SEED is to generate the seed to be passed to +          handlers that process the content of the element. + +    MY-FINISH-ELEMENT +          is a procedure taking arguments: + +          ELEM-GI ATTRIBUTES NAMESPACES PARENT-SEED SEED + +          MY-FINISH-ELEMENT is called when parsing of ELEM-GI is +          finished.  The SEED is the result from the last content +          parser (or from MY-NEW-LEVEL-SEED if the element has the +          empty content).  PARENT-SEED is the same seed as was passed +          to MY-NEW-LEVEL-SEED.  MY-FINISH-ELEMENT is to generate a +          seed that will be the result of the element parser. + +    MY-CHAR-DATA-HANDLER +          is a STR-HANDLER as described in Data Types above. + +    MY-PI-HANDLERS +          is as described for `ssax:make-pi-handler' above. + + +     The generated parser is a procedure taking arguments: + +     START-TAG-HEAD PORT ELEMS ENTITIES NAMESPACES PRESERVE-WS? SEED + +     The procedure must be called after the start tag token has been +     read.  START-TAG-HEAD is an UNRES-NAME from the start-element tag. +     ELEMS is an instance of ELEMS slot of XML-DECL. + +     Faults detected: +     VC: XML-Spec.html#elementvalid +     WFC: XML-Spec.html#GIMatch + + -- Function: ssax:make-parser user-handler-tag user-handler ... +     Create an XML parser, an instance of the XML parsing framework. +     This will be a SAX, a DOM, or a specialized parser depending on the +     supplied user-handlers. + +     `ssax:make-parser' takes an even number of arguments; +     USER-HANDLER-TAG is a symbol that identifies a procedure (or +     association list for `PROCESSING-INSTRUCTIONS') (USER-HANDLER) +     that follows the tag.  Given below are tags and signatures of the +     corresponding procedures.  Not all tags have to be specified.  If +     some are omitted, reasonable defaults will apply. + +    `DOCTYPE' +          handler-procedure: PORT DOCNAME SYSTEMID INTERNAL-SUBSET? SEED + +          If INTERNAL-SUBSET? is #t, the current position in the port is +          right after we have read `[' that begins the internal DTD +          subset.  We must finish reading of this subset before we +          return (or must call `skip-internal-dtd' if we aren't +          interested in reading it).  PORT at exit must be at the first +          symbol after the whole DOCTYPE declaration. + +          The handler-procedure must generate four values: + +               ELEMS ENTITIES NAMESPACES SEED + +          ELEMS is as defined for the ELEMS slot of XML-DECL.  It may be +          #f to switch off validation.  NAMESPACES will typically +          contain USER-PREFIXes for selected URI-SYMBs.  The default +          handler-procedure skips the internal subset, if any, and +          returns `(values #f '() '() seed)'. + +    `UNDECL-ROOT' +          procedure: ELEM-GI SEED + +          where ELEM-GI is an UNRES-NAME of the root element.  This +          procedure is called when an XML document under parsing +          contains _no_ DOCTYPE declaration. + +          The handler-procedure, as a DOCTYPE handler procedure above, +          must generate four values: + +               ELEMS ENTITIES NAMESPACES SEED + +          The default handler-procedure returns (values #f '() '() seed) + +    `DECL-ROOT' +          procedure: ELEM-GI SEED + +          where ELEM-GI is an UNRES-NAME of the root element.  This +          procedure is called when an XML document under parsing does +          contains the DOCTYPE declaration.  The handler-procedure must +          generate a new SEED (and verify that the name of the root +          element matches the doctype, if the handler so wishes).  The +          default handler-procedure is the identity function. + +    `NEW-LEVEL-SEED' +          procedure: see ssax:make-elem-parser, my-new-level-seed + +    `FINISH-ELEMENT' +          procedure: see ssax:make-elem-parser, my-finish-element + +    `CHAR-DATA-HANDLER' +          procedure: see ssax:make-elem-parser, my-char-data-handler + +    `PROCESSING-INSTRUCTIONS' +          association list as is passed to `ssax:make-pi-parser'.  The +          default value is '() + + +     The generated parser is a procedure of arguments PORT and SEED. + +     This procedure parses the document prolog and then exits to an +     element parser (created by `ssax:make-elem-parser') to handle the +     rest. + +          [1]  document ::=  prolog element Misc* +          [22] prolog ::= XMLDecl? Misc* (doctypedec | Misc*)? +          [27] Misc ::= Comment | PI |  S +          [28] doctypedecl ::=  '<!DOCTYPE' S Name (S ExternalID)? S? +                        ('[' (markupdecl | PEReference | S)* ']' S?)? '>' +          [29] markupdecl ::= elementdecl | AttlistDecl +                               | EntityDecl +                               | NotationDecl | PI +                               | Comment + +4.11.7 Parsing XML to SXML +-------------------------- + + -- Function: ssax:xml->sxml port namespace-prefix-assig +     This is an instance of the SSAX parser that returns an SXML +     representation of the XML document to be read from PORT. +     NAMESPACE-PREFIX-ASSIG is a list of `(USER-PREFIX . URI-STRING)' +     that assigns USER-PREFIXes to certain namespaces identified by +     particular URI-STRINGs.  It may be an empty list. +     `ssax:xml->sxml' returns an SXML tree.  The port points out to the +     first character after the root element. +  File: slib.info,  Node: Printing Scheme,  Next: Time and Date,  Prev: Parsing XML,  Up: Textual Conversion Packages -                                                                              | -4.12 Printing Scheme                                                          | + +4.12 Printing Scheme  ====================  * Menu: @@ -6029,7 +6029,7 @@ File: slib.info,  Node: Printing Scheme,  Next: Time and Date,  Prev: Parsing XM  File: slib.info,  Node: Generic-Write,  Next: Object-To-String,  Prev: Printing Scheme,  Up: Printing Scheme -4.12.1 Generic-Write                                                          | +4.12.1 Generic-Write  --------------------  `(require 'generic-write)'  @@ -6072,7 +6072,7 @@ printing, output to a string and truncated output.  File: slib.info,  Node: Object-To-String,  Next: Pretty-Print,  Prev: Generic-Write,  Up: Printing Scheme -4.12.2 Object-To-String                                                       | +4.12.2 Object-To-String  -----------------------  `(require 'object->string)'  @@ -6087,7 +6087,7 @@ File: slib.info,  Node: Object-To-String,  Next: Pretty-Print,  Prev: Generic-Wr  File: slib.info,  Node: Pretty-Print,  Prev: Object-To-String,  Up: Printing Scheme -4.12.3 Pretty-Print                                                           | +4.12.3 Pretty-Print  -------------------  `(require 'pretty-print)'  @@ -6178,7 +6178,7 @@ thus can reduce loading time.  The following will write into  File: slib.info,  Node: Time and Date,  Next: NCBI-DNA,  Prev: Printing Scheme,  Up: Textual Conversion Packages -4.13 Time and Date                                                            | +4.13 Time and Date  ==================  * Menu: @@ -6211,7 +6211,7 @@ Scheme datatypes.  File: slib.info,  Node: Time Zone,  Next: Posix Time,  Prev: Time and Date,  Up: Time and Date -4.13.1 Time Zone                                                              | +4.13.1 Time Zone  ----------------  (require 'time-zone) @@ -6338,7 +6338,7 @@ compatability.  Because of shared state they are not thread-safe.  File: slib.info,  Node: Posix Time,  Next: Common-Lisp Time,  Prev: Time Zone,  Up: Time and Date -4.13.2 Posix Time                                                             | +4.13.2 Posix Time  -----------------       (require 'posix-time) @@ -6410,7 +6410,7 @@ File: slib.info,  Node: Posix Time,  Next: Common-Lisp Time,  Prev: Time Zone,  File: slib.info,  Node: Common-Lisp Time,  Next: Time Infrastructure,  Prev: Posix Time,  Up: Time and Date -4.13.3 Common-Lisp Time                                                       | +4.13.3 Common-Lisp Time  -----------------------   -- Function: get-decoded-time @@ -6460,7 +6460,7 @@ File: slib.info,  Node: Common-Lisp Time,  Next: Time Infrastructure,  Prev: Pos  File: slib.info,  Node: Time Infrastructure,  Prev: Common-Lisp Time,  Up: Time and Date -4.13.4 Time Infrastructure                                                    | +4.13.4 Time Infrastructure  --------------------------  `(require 'time-core)' @@ -6476,11 +6476,11 @@ File: slib.info,  Node: Time Infrastructure,  Prev: Common-Lisp Time,  Up: Time  File: slib.info,  Node: NCBI-DNA,  Next: Schmooz,  Prev: Time and Date,  Up: Textual Conversion Packages -4.14 NCBI-DNA                                                                 | +4.14 NCBI-DNA  ============= -`(require 'ncbi-dma)'                                                         | -                                                                              | +`(require 'ncbi-dma)'  +   -- Function: ncbi:read-dna-sequence port       Reads the NCBI-format DNA sequence following the word `ORIGIN'       from PORT. @@ -6519,7 +6519,7 @@ sequence with the `BASE COUNT' line preceding the sequence from NCBI.  File: slib.info,  Node: Schmooz,  Prev: NCBI-DNA,  Up: Textual Conversion Packages -4.15 Schmooz                                                                  | +4.15 Schmooz  ============  "Schmooz" is a simple, lightweight markup language for interspersing @@ -6712,7 +6712,7 @@ representation.  5.1.2 Integer Properties  ------------------------ - -- Function: logcount n                                                      | + -- Function: logcount n       Returns the number of bits in integer N.  If integer is positive,       the 1-bits in its binary representation are counted.  If negative,       the 0-bits in its two's-complement binary representation are @@ -6726,17 +6726,17 @@ representation.            (logcount -2)               => 1 -On `discuss@r6rs.org' Ben Harris credits Simon Tatham with the idea to        | -have `bitwise-bit-count' return a negative count for negative inputs.         | -Alan Bawden came up with the succinct invariant.                              | -                                                                              | - -- Function: bitwise-bit-count n                                             | -     If N is non-negative, this procedure returns the number of 1 bits        | -     in the two's-complement representation of N.  Otherwise it returns       | -     the result of the following computation:                                 | -                                                                              | -          (bitwise-not (bitwise-bit-count (bitwise-not N)))                   | -                                                                              | +On `discuss@r6rs.org' Ben Harris credits Simon Tatham with the idea to +have `bitwise-bit-count' return a negative count for negative inputs. +Alan Bawden came up with the succinct invariant. + + -- Function: bitwise-bit-count n +     If N is non-negative, this procedure returns the number of 1 bits +     in the two's-complement representation of N.  Otherwise it returns +     the result of the following computation: + +          (bitwise-not (bitwise-bit-count (bitwise-not N))) +   -- Function: integer-length n       Returns the number of bits neccessary to represent N. @@ -8955,15 +8955,18 @@ and Z "Spectral Tristimulus Values".  The files `cie1931.xyz' and  `cie1964.xyz' in the distribution contain these CIE-defined values.     -- Feature: cie1964 -     Loads the Spectral Tristimulus Values defining `CIE 1964 -     Supplementary Standard Colorimetric Observer'. +     Loads the Spectral Tristimulus Values `CIE 1964 Supplementary            | +     Standard Colorimetric Observer', defining CIE:X-BAR, CIE:Y-BAR,          | +     and CIE:Z-BAR.                                                           |   -- Feature: cie1931 -     Loads the Spectral Tristimulus Values defining `CIE 1931 -     Supplementary Standard Colorimetric Observer'. +     Loads the Spectral Tristimulus Values `CIE 1931 Supplementary            | +     Standard Colorimetric Observer', defining CIE:X-BAR, CIE:Y-BAR,          | +     and CIE:Z-BAR.                                                           |   -- Feature: ciexyz -     Requires Spectral Tristimulus Values, defaulting to cie1931. +     Requires Spectral Tristimulus Values, defaulting to cie1931,             | +     defining CIE:X-BAR, CIE:Y-BAR, and CIE:Z-BAR.                            |  `(require 'cie1964)' or `(require 'cie1931)' will `load-ciexyz'  specific values used by the following spectrum conversion procedures. @@ -9555,7 +9558,7 @@ File: slib.info,  Node: Root Finding,  Next: Minimizing,  Prev: Color,  Up: Math  =================  `(require 'root)'  -                                                                              | +   -- 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 @@ -10080,7 +10083,7 @@ linear-algebra texts, this package uses 0-based coordinates.       Returns the list-of-lists form of MATRIX.   -- Function: matrix->array matrix -     Returns the (ones-based) array form of MATRIX. +     Returns the array form of MATRIX.                                        |   -- Function: determinant matrix       MATRIX must be a square matrix.  `determinant' returns the @@ -10094,23 +10097,23 @@ linear-algebra texts, this package uses 0-based coordinates.       Returns a copy of MATRIX flipped over the diagonal containing the       1,1 element. - -- Function: matrix:sum m1 m2                                                | -     Returns the element-wise sum of matricies M1 and M2.                     | -                                                                              | - -- Function: matrix:difference m1 m2                                         | -     Returns the element-wise difference of matricies M1 and M2.              | -                                                                              | + -- Function: matrix:sum m1 m2 +     Returns the element-wise sum of matricies M1 and M2. + + -- Function: matrix:difference m1 m2 +     Returns the element-wise difference of matricies M1 and M2. +   -- Function: matrix:product m1 m2       Returns the product of matrices M1 and M2. - -- Function: matrix:product m1 z                                             | -     Returns matrix M1 times scalar Z.                                        | -                                                                              | - -- Function: matrix:product z m1                                             | -     Returns matrix M1 times scalar Z.                                        | -                                                                              | + -- Function: matrix:product m1 z +     Returns matrix M1 times scalar Z. + + -- Function: matrix:product z m1 +     Returns matrix M1 times scalar Z. +   -- Function: matrix:inverse matrix -     MATRIX must be a square matrix.  If MATRIX is singlar, then +     MATRIX must be a square matrix.  If MATRIX is singular, then             |       `matrix:inverse' returns #f; otherwise `matrix:inverse' returns the       `matrix:product' inverse of MATRIX. @@ -12438,95 +12441,95 @@ uniform-array type is supported by the implementation, then it is  returned; defaulting to the next larger precision type; resorting  finally to vector. - -- Function: A:floC128b z                                                    | - -- Function: A:floC128b                                                      | + -- Function: A:floC128b z + -- Function: A:floC128b       Returns an inexact 128.bit flonum complex uniform-array prototype. - -- Function: A:floC64b z                                                     | - -- Function: A:floC64b                                                       | + -- Function: A:floC64b z + -- Function: A:floC64b       Returns an inexact 64.bit flonum complex uniform-array prototype. - -- Function: A:floC32b z                                                     | - -- Function: A:floC32b                                                       | + -- Function: A:floC32b z + -- Function: A:floC32b       Returns an inexact 32.bit flonum complex uniform-array prototype. - -- Function: A:floC16b z                                                     | - -- Function: A:floC16b                                                       | + -- Function: A:floC16b z + -- Function: A:floC16b       Returns an inexact 16.bit flonum complex uniform-array prototype. - -- Function: A:floR128b x                                                    | - -- Function: A:floR128b                                                      | + -- Function: A:floR128b x + -- Function: A:floR128b       Returns an inexact 128.bit flonum real uniform-array prototype. - -- Function: A:floR64b x                                                     | - -- Function: A:floR64b                                                       | + -- Function: A:floR64b x + -- Function: A:floR64b       Returns an inexact 64.bit flonum real uniform-array prototype. - -- Function: A:floR32b x                                                     | - -- Function: A:floR32b                                                       | + -- Function: A:floR32b x + -- Function: A:floR32b       Returns an inexact 32.bit flonum real uniform-array prototype. - -- Function: A:floR16b x                                                     | - -- Function: A:floR16b                                                       | + -- Function: A:floR16b x + -- Function: A:floR16b       Returns an inexact 16.bit flonum real uniform-array prototype. - -- Function: A:floR128d q                                                    | - -- Function: A:floR128d                                                      | + -- Function: A:floR128d q + -- Function: A:floR128d       Returns an exact 128.bit decimal flonum rational uniform-array       prototype. - -- Function: A:floR64d q                                                     | - -- Function: A:floR64d                                                       | + -- Function: A:floR64d q + -- Function: A:floR64d       Returns an exact 64.bit decimal flonum rational uniform-array       prototype. - -- Function: A:floR32d q                                                     | - -- Function: A:floR32d                                                       | + -- Function: A:floR32d q + -- Function: A:floR32d       Returns an exact 32.bit decimal flonum rational uniform-array       prototype. - -- Function: A:fixZ64b n                                                     | - -- Function: A:fixZ64b                                                       | + -- Function: A:fixZ64b n + -- Function: A:fixZ64b       Returns an exact binary fixnum uniform-array prototype with at       least 64 bits of precision. - -- Function: A:fixZ32b n                                                     | - -- Function: A:fixZ32b                                                       | + -- Function: A:fixZ32b n + -- Function: A:fixZ32b       Returns an exact binary fixnum uniform-array prototype with at       least 32 bits of precision. - -- Function: A:fixZ16b n                                                     | - -- Function: A:fixZ16b                                                       | + -- Function: A:fixZ16b n + -- Function: A:fixZ16b       Returns an exact binary fixnum uniform-array prototype with at       least 16 bits of precision. - -- Function: A:fixZ8b n                                                      | - -- Function: A:fixZ8b                                                        | + -- Function: A:fixZ8b n + -- Function: A:fixZ8b       Returns an exact binary fixnum uniform-array prototype with at       least 8 bits of precision. - -- Function: A:fixN64b k                                                     | - -- Function: A:fixN64b                                                       | + -- Function: A:fixN64b k + -- Function: A:fixN64b       Returns an exact non-negative binary fixnum uniform-array       prototype with at least 64 bits of precision. - -- Function: A:fixN32b k                                                     | - -- Function: A:fixN32b                                                       | + -- Function: A:fixN32b k + -- Function: A:fixN32b       Returns an exact non-negative binary fixnum uniform-array       prototype with at least 32 bits of precision. - -- Function: A:fixN16b k                                                     | - -- Function: A:fixN16b                                                       | + -- Function: A:fixN16b k + -- Function: A:fixN16b       Returns an exact non-negative binary fixnum uniform-array       prototype with at least 16 bits of precision. - -- Function: A:fixN8b k                                                      | - -- Function: A:fixN8b                                                        | + -- Function: A:fixN8b k + -- Function: A:fixN8b       Returns an exact non-negative binary fixnum uniform-array       prototype with at least 8 bits of precision. - -- Function: A:bool bool                                                     | - -- Function: A:bool                                                          | + -- Function: A:bool bool + -- Function: A:bool       Returns a boolean uniform-array prototype. @@ -12628,16 +12631,16 @@ File: slib.info,  Node: Array Mapping,  Next: Array Interpolation,  Prev: Subarr       a list of indexes for which ARRAY is defined, (equal?  LI (apply       array-ref (array-indexes ARRAY) LI)). - -- Function: array-index-for-each array proc                                 | -     applies PROC to the indices of each element of ARRAY in turn.  The       | -     value returned and the order of application are unspecified.             | -                                                                              | -     One can implement ARRAY-INDEX-MAP! as                                    | -          (define (array-index-map! ra fun)                                   | -            (array-index-for-each                                             | -             ra                                                               | -             (lambda is (apply array-set! ra (apply fun is) is))))            | -                                                                              | + -- Function: array-index-for-each array proc +     applies PROC to the indices of each element of ARRAY in turn.  The +     value returned and the order of application are unspecified. + +     One can implement ARRAY-INDEX-MAP! as +          (define (array-index-map! ra fun) +            (array-index-for-each +             ra +             (lambda is (apply array-set! ra (apply fun is) is)))) +   -- Procedure: array-index-map! array proc       applies PROC to the indices of each element of ARRAY in turn,       storing the result in the corresponding element.  The value @@ -12781,18 +12784,28 @@ character sets.  These functions abstract the notion of a "byte".   -- Function: bytes byte ...       Returns a newly allocated byte-array composed of the small       nonnegative arguments. - - -- 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       `list->bytes' returns a newly allocated byte-array formed from the       small nonnegative integers in the list BYTES. + -- Function: bytes->list bytes                                               | +     `bytes->list' returns a newly allocated list of the bytes that           | +     make up the given byte-array.                                            | +                                                                              |  `Bytes->list' and `list->bytes' are inverses so far as `equal?' is  concerned.   + -- Function: bytes->string bytes                                             | +     Returns a new string formed from applying `integer->char' to each        | +     byte in `bytes->string'.  Note that this may signal an error for         | +     bytes having values between 128 and 255.                                 | +                                                                              | + -- Function: string->bytes string                                            | +     Returns a new byte-array formed from applying `char->integer' to         | +     each character in `string->bytes'.  Note that this may signal an         | +     error if an integer is larger than 255.                                  | +                                                                              |   -- Function: bytes-copy bytes       Returns a newly allocated copy of the given BYTES. @@ -12848,8 +12861,8 @@ Byte/Number Conversions:: are always big-endian.       `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 -     stored at index 0.  Note that the length of the returned string -     will be less than `(abs N)' if PORT reaches end-of-file. +     stored at index 0.  Note that the length of the returned                 | +     byte-array will be less than `(abs N)' if PORT reaches end-of-file.      |       PORT may be omitted, in which case it defaults to the value       returned by `current-input-port'. @@ -12868,19 +12881,19 @@ 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: subbytes-read! string start end port - -- Procedure: subbytes-read! string start end -     Fills STRING with up to `(abs (- START END))' bytes read from -     PORT.  The first byte read is stored at index STRING. -     `subbytes-read!' returns the number of bytes read. + -- Procedure: subbytes-read! bts start end port                              | + -- Procedure: subbytes-read! bts start end                                   | +     Fills BTS with up to `(abs (- START END))' bytes read from PORT.         | +     The first byte read is stored at index BTS.  `subbytes-read!'            | +     returns the number of bytes read.                                        |       PORT may be omitted, in which case it defaults to the value       returned by `current-input-port'. - -- Function: subbytes-write string start end port - -- Function: subbytes-write string start end + -- Function: subbytes-write bts start end port                               | + -- Function: subbytes-write bts start end                                    |       `subbytes-write' writes `(abs (- START END))' bytes to output-port -     PORT.  The first byte written is index START of STRING. +     PORT.  The first byte written is index START of BTS.                     |       `subbytes-write' returns the number of bytes written.       PORT may be omitted, in which case it defaults to the value @@ -12944,7 +12957,7 @@ determines the signedness of the number.       (bytes->ieee-float (bytes #xff #x80 0 0))  => -inf.0       (bytes->ieee-float (bytes #x7f #x80 0 0))  => +inf.0       (bytes->ieee-float (bytes #x7f #x80 0 1))  =>  0/0 -     (bytes->ieee-float (bytes #x7f #xc0 0 0))  =>  0/0                       | +     (bytes->ieee-float (bytes #x7f #xc0 0 0))  =>  0/0   -- Function: bytes->ieee-double bytes       BYTES must be a 8-element byte-array.  `bytes->ieee-double' @@ -13034,7 +13047,7 @@ enables the full range of numbers as keys in       `ieee-byte-collate!' returns BYTE-VECTOR.   -- Procedure: ieee-byte-decollate! byte-vector -     Given BYTE-VECTOR modified by `ieee-byte-collate!', reverses the         | +     Given BYTE-VECTOR modified by `ieee-byte-collate!', reverses the       BYTE-VECTOR modifications.   -- Function: ieee-byte-collate byte-vector @@ -13042,7 +13055,7 @@ enables the full range of numbers as keys in       IEEE floating-point byte-vectors matches numerical order.   -- Function: ieee-byte-decollate byte-vector -     Given BYTE-VECTOR returned by `ieee-byte-collate', reverses the          | +     Given BYTE-VECTOR returned by `ieee-byte-collate', reverses the       BYTE-VECTOR modifications. @@ -13197,7 +13210,7 @@ operations.   -- Function: reduce proc seed collection1 ...       A generalization of the list-based `reduce-init' (*note Lists as -     sequences::) to collections.                                             | +     sequences::) to collections.       Examples:            (reduce + 0 (vector 1 2 3)) @@ -13205,9 +13218,9 @@ operations.            (reduce union '() '((a b c) (b c d) (d a)))               => (c b d a). -     `Reduce' called with two arguments will work as does the procedure       | -     of the same name from *Note Common List Functions::).                    | -                                                                              | +     `Reduce' called with two arguments will work as does the procedure +     of the same name from *Note Common List Functions::).   +   -- Function: any? pred collection1 ...       A generalization of the list-based `some' (*note Lists as       sequences::) to collections. @@ -14439,12 +14452,12 @@ File: slib.info,  Node: Sorting,  Next: Topological Sort,  Prev: Chapter Orderin  7.2.4 Sorting  ------------- -`(require 'sort)' or `(require 'srfi-95)'                                     | +`(require 'sort)' or `(require 'srfi-95)'     [by Richard A. O'Keefe, 1991] -                                                                              | +    I am providing this source code with no restrictions at all on its use -(but please retain D.H.D.Warren's credit for the original idea).              | +(but please retain D.H.D.Warren's credit for the original idea).    The code of `merge' and `merge!' could have been quite a bit simpler,  but they have been coded to reduce the amount of work done per @@ -14456,7 +14469,7 @@ Common LISP's `stable-sort' is our `sort!'; merge sort is _fast_ as  well as stable!) so adapting CL code to Scheme takes a bit of work  anyway.  I did, however, appeal to CL to determine the _order_ of the  arguments. -                                                                              | +    The standard functions `<', `>', `char<?', `char>?', `char-ci<?',  `char-ci>?', `string<?', `string>?', `string-ci<?', and `string-ci>?'  are suitable for use as comparison functions.  Think of `(less? x y)' @@ -14465,13 +14478,13 @@ as saying when `x' must _not_ precede `y'.    [Addendum by Aubrey Jaffer, 2006]    These procedures are stable when called with predicates which return -`#f' when applied to identical arguments.                                     | -                                                                              | -  The `sorted?', `merge', and `merge!' procedures consume asymptotic          | -time and space no larger than O(N), where N is the sum of the lengths         | -of the sequence arguments.  The `sort' and `sort!' procedures consume         | -asymptotic time and space no larger than O(N*log(N)), where N is the          | -length of the sequence argument.                                              | +`#f' when applied to identical arguments. + +  The `sorted?', `merge', and `merge!' procedures consume asymptotic +time and space no larger than O(N), where N is the sum of the lengths +of the sequence arguments.  The `sort' and `sort!' procedures consume +asymptotic time and space no larger than O(N*log(N)), where N is the +length of the sequence argument.    All five functions take an optional KEY argument corresponding to a  CL-style `&key' argument.  A LESS?  predicate with a KEY argument @@ -14479,9 +14492,9 @@ behaves like:       (lambda (x y) (LESS? (KEY x) (KEY y))) -  All five functions will call the KEY argument at most once per              | -element.                                                                      | -                                                                              | +  All five functions will call the KEY argument at most once per +element. +    The `!' variants sort in place; `sort!' returns its SEQUENCE argument.   -- Function: sorted? sequence less? @@ -14502,7 +14515,7 @@ element.                                                                      |   -- Function: merge! list1 list2 less?   -- Function: merge! list1 list2 less? key       Merges two sorted lists, re-using the pairs of LIST1 and LIST2 to -     build the result.  The result will be either LIST1 or LIST2.             | +     build the result.  The result will be either LIST1 or LIST2.   -- Function: sort sequence less?   -- Function: sort sequence less? key @@ -14516,11 +14529,11 @@ element.                                                                      |   -- Function: sort! sequence less?   -- Function: sort! sequence less? key -     Returns list, array, vector, or string SEQUENCE which has been           | -     mutated to order its elements according to LESS?.  Given valid           | -     arguments, it is always the case that:                                   | -                                                                              | -          (sorted? (sort! SEQUENCE LESS?) LESS?) => #t                        | +     Returns list, array, vector, or string SEQUENCE which has been +     mutated to order its elements according to LESS?.  Given valid +     arguments, it is always the case that: + +          (sorted? (sort! SEQUENCE LESS?) LESS?) => #t  File: slib.info,  Node: Topological Sort,  Next: Hashing,  Prev: Sorting,  Up: Sorting and Searching @@ -15768,13 +15781,13 @@ Implements "Scheme Request For Implementation" (SRFI) as described at     * SRFI-9 *Note Define-Record-Type::  -   * SRFI-11 *Note Binding to multiple values::                               | -                                                                              | +   * SRFI-11 *Note Binding to multiple values::  +     * SRFI-23 `(define error slib:error)'  -   * SRFI-28 *Note Format::                                                   | +   * SRFI-28 *Note Format::  -   * SRFI-47 *Note Arrays::                                                   | +   * SRFI-47 *Note Arrays::      * SRFI-59 *Note Vicinity::  @@ -15782,12 +15795,14 @@ Implements "Scheme Request For Implementation" (SRFI) as described at     * SRFI-61 *Note Guarded COND Clause::  -   * SRFI-63 *Note Arrays::                                                   | -                                                                              | +   * SRFI-63 *Note Arrays::  +     * SRFI-94 *Note Irrational Integer Functions:: and *Note Irrational -     Real Functions::                                                         | -                                                                              | -   * SRFI-95 *Note Sorting::                                                  | +     Real Functions::  + +   * SRFI-95 *Note Sorting::  + +   * SRFI-96 *Note Universal SLIB Procedures::                                |                                                                                |  File: slib.info,  Node: SRFI-1,  Prev: SRFI,  Up: SRFI @@ -15907,7 +15922,7 @@ Fold and Unfold   -- Function: pair-fold-right kons knil clist1 clist2 ... - -- Function: reduce arg ...                                                  | + -- Function: reduce arg ...   -- Procedure: map! f clist1 clist2 ... @@ -16299,19 +16314,25 @@ File: slib.info,  Node: System Interface,  Next: Extra-SLIB Packages,  Prev: Ses  7.6 System Interface  ==================== -If `(provided? 'getenv)': +If `(provided? 'getenv)':    -- 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)': +If `(provided? 'system)':    -- Function: system command-string       Executes the COMMAND-STRING on the computer and returns the       integer status code. +If `(provided? 'program-arguments)':                                          | +                                                                              | + -- Function: program-arguments                                               | +     Returns a list of strings, the first of which is the program name        | +     followed by the command-line arguments.                                  | +                                                                              |  * Menu:  * Directories:: @@ -16429,6 +16450,18 @@ maintain and check both Emacs and Word certificates.       the locks and returns `#t'.  Otherwise, `file-unlock!' leaves the       file system unaltered and returns `#f'. + -- Function: describe-file-lock path prefix                                  | + -- Function: describe-file-lock path                                         | +     PATH must be a string naming a file.  Optional argument PREFIX is        | +     a string printed before each line of the message.                        | +     `describe-file-lock' prints to `(current-error-port)' that PATH is       | +     locked for writing and lists its lock-files.                             | +                                                                              | +          (describe-file-lock "my.txt" ">> ")                                 | +          -|                                                                  | +          >> "my.txt" is locked for writing by 'luser@no.com.4829:1200536423' | +          >> (lock files are "~$my.txt" and ".#my.txt")                       | +                                                                              |  File Transactions  ................. @@ -16555,9 +16588,9 @@ reasons why a package might not be included in the SLIB distribution:     * Because I have been too busy to integrate it.    Once an optional package is installed (and an entry added to -`*catalog*', the `require' mechanism allows it to be called up and used -as easily as any other SLIB package.  Some optional packages (for which -`*catalog*' already has entries) available from SLIB sites are: +`*catalog*'), the `require' mechanism allows it to be called up and           | +used as easily as any other SLIB package.  Some optional packages (for        | +which `*catalog*' already has entries) available from SLIB sites are:         |  SLIB-PSD       is a portable debugger for Scheme (requires emacs editor). @@ -16600,13 +16633,15 @@ File: slib.info,  Node: About SLIB,  Next: Index,  Prev: Other Packages,  Up: To  More people than I can name have contributed to SLIB.  Thanks to all of  you! -     SLIB 3a5, released November 2007.                                        | +     SLIB 3b1, released February 2008.                                        |       Aubrey Jaffer <agj @ alum.mit.edu>    Current information about SLIB can be found on SLIB's "WWW" home page:                 `http://swiss.csail.mit.edu/~jaffer/SLIB' +  SLIB is part of the GNU project.                                            | +                                                                              |  * Menu:  * Installation::                How to install SLIB on your system. @@ -16628,8 +16663,8 @@ There are five parts to installation:     * Install documentation and `slib' script. -   * Configure the Scheme implementation(s) to locate the SLIB -     directory. +   * Configure the Scheme implementation(s) to locate the SLIB directory      | +     and implementation directories.                                          |     * Arrange for Scheme implementation to load its SLIB initialization       file. @@ -16639,7 +16674,7 @@ There are five parts to installation:  8.1.1 Unpacking the SLIB Distribution  ------------------------------------- -If the SLIB distribution is a GNU/Linux RPM, it will create the SLIB          | +If the SLIB distribution is a GNU/Linux RPM, it will create the SLIB  directory `/usr/share/slib'.    If the SLIB distribution is a ZIP file, unzip the distribution to @@ -16661,13 +16696,36 @@ please inform agj @ alum.mit.edu.  If the Scheme implementation supports `getenv', then the value of the  shell environment variable SCHEME_LIBRARY_PATH will be used for -`(library-vicinity)' if it is defined.  Currently, Chez, Elk, -MITScheme, scheme->c, VSCM, and SCM support `getenv'.  Scheme48 -supports `getenv' but does not use it for determining -`library-vicinity'.  (That is done from the Makefile.) - -  The `(library-vicinity)' can also be specified from the SLIB -initialization file or by implementation-specific means. +`(library-vicinity)' if it is defined.  Currently, Bigloo, Chez, Elk,         | +Gambit, Guile, Jscheme, Larceny, MITScheme, MzScheme, RScheme, STk,           | +VSCM, and SCM support `getenv'.  Scheme48 supports `getenv' but does          | +not use it for determining `library-vicinity'.  (That is done from the        | +Makefile.)                                                                    | + +  The `(library-vicinity)' can also be set from the SLIB initialization       | +file or by implementation-specific means.                                     | +                                                                              | +  Support for locating an implementation's auxiliary directory is uneven      | +among implementations.  Also, the person installing SLIB may not have         | +write permission to some of these directories (necessary for writing          | +slibcat).  Therefore, those implementations supporting `getenv' (except       | +SCM and Scheme48) provide a means for specifying the                          | +`implementation-vicinity' through environment variables.  Define the          | +indicated environment variable to the pathname (with trailing slash or        | +backslash) of the desired directory.  Do not use `slib/' as an                | +implementation-vicinity!                                                      | +                                                                              | +Bigloo                 BIGLOO_IMPLEMENTATION_PATH                             | +Chez                   CHEZ_IMPLEMENTATION_PATH                               | +ELK                    ELK_IMPLEMENTATION_PATH                                | +Gambit                 GAMBIT_IMPLEMENTATION_PATH                             | +Guile                  GUILE_IMPLEMENTATION_PATH                              | +Jscheme                JSCHEME_IMPLEMENTATION_PATH                            | +MIT-Scheme             MITSCHEME_IMPLEMENTATION_PATH                          | +MzScheme               MZSCHEME_IMPLEMENTATION_PATH                           | +RScheme                RSCHEME_IMPLEMENTATION_PATH                            | +STk                    STK_IMPLEMENTATION_PATH                                | +Vscm                   VSCM_IMPLEMENTATION_PATH                               |  8.1.4 Loading SLIB Initialization File  -------------------------------------- @@ -16717,22 +16775,37 @@ above.       SLIB support is already built into SCM.  See the documentation       with SCM for installation instructions. + -- Implementation: Larceny                                                   | +     Starting with version 0.96, Larceny contains its own SLIB                | +     initialization file, loaded by `(require 'srfi-96)'.  If                 | +     SCHEME_LIBRARY_PATH is not set, then Larceny looks for an `slib'         | +     subdirectory of a directory in the list returned by                      | +     `(current-require-path)'                                                 | +                                                                              | +          larceny -- -e "(require 'srfi-96)"                                  | +                                                                              | + -- Implementation: ELK                                                       | +          elk -i -l ${SCHEME_LIBRARY_PATH}elk.init                            | +                                                                              |   -- Implementation: PLT Scheme   -- Implementation: DrScheme   -- Implementation: MzScheme       The `init.ss' file in the _slibinit_ collection is an SLIB -     initialization file. +     initialization file.  To run SLIB in MzScheme:                           | -     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' +          mzscheme -f ${SCHEME_LIBRARY_PATH}mzscheme.init                     |   -- Implementation: MIT Scheme -     `scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init' +          scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init                   |   -- Implementation: Gambit-C 3.0 -     `$command -:s ${SCHEME_LIBRARY_PATH}gambit.init -' +          gsi -:s ${SCHEME_LIBRARY_PATH}gambit.init -                         | +                                                                              | + -- Implementation: SISC                                                      | +          sisc -e "(load \"${SCHEME_LIBRARY_PATH}sisc.init\")" --             | +                                                                              | + -- Implementation: Kawa                                                      | +          kawa -f ${SCHEME_LIBRARY_PATH}kawa.init --                          |   -- Implementation: Guile       Guile versions 1.6 and earlier link to an archaic SLIB version.  In @@ -16750,7 +16823,7 @@ above.       Guile with SLIB can then be started thus: -     `guile -l ${SCHEME_LIBRARY_PATH}guile.init' +          guile -l ${SCHEME_LIBRARY_PATH}guile.init                           |   -- Implementation: Scheme48       To make a Scheme48 image for an installation under `<prefix>', @@ -16780,12 +16853,16 @@ above.         3. `(slib:dump "dumpfile")' -       4. mv dumpfile place-where-vscm-standard-bootfile-resides e.g. -          mv dumpfile /usr/local/vscm/lib/scheme-boot (In this case -          vscm should have been compiled with flag -          -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"'.  See -          Makefile (definition of DDP) for details.) +       4. mv dumpfile place-where-vscm-standard-bootfile-resides.  For        | +          example:                                                            | +          `mv dumpfile /usr/local/vscm/lib/scheme-boot'                       | +                                                                              | +          In this case vscm should have been compiled with flag:              | +                                                                              | +          -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"'              | +                                                                              | +          See Makefile (definition of DDP) for details.                       |  File: slib.info,  Node: The SLIB script,  Next: Porting,  Prev: Installation,  Up: About SLIB @@ -16795,8 +16872,8 @@ File: slib.info,  Node: The SLIB script,  Next: Porting,  Prev: Installation,  U  SLIB comes with shell script for Unix platforms. -      slib  [ scheme | scm | gsi | mzscheme | guile                           | -            | scheme48 | scmlit | elk | sisc | kawa ]                         | +      slib  [ scheme | scm | gsi | mzscheme | guile +            | scheme48 | scmlit | elk | sisc | kawa ]  Starts an interactive Scheme-with-SLIB session. @@ -16984,12 +17061,7 @@ File: slib.info,  Node: About this manual,  Prev: Copyrights,  Up: About SLIB  8.6 About this manual  ===================== - -* Menu: - -* Copying This Manual:: -* How to use this License for your documents:: - +                                                                              |     * Entries that are labeled as Functions are called for their return       values.  Entries that are labeled as Procedures are called       primarily for their side effects. @@ -16997,20 +17069,24 @@ File: slib.info,  Node: About this manual,  Prev: Copyrights,  Up: About SLIB     * Examples in this text were produced using the `scm' Scheme       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. +   * 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.               | +                                                                              | +* Menu: +                                                                              | +* GNU Free Documentation License:: -File: slib.info,  Node: Copying This Manual,  Next: How to use this License for your documents,  Prev: About this manual,  Up: About this manual - -8.6.1 Copying This Manual -------------------------- +File: slib.info,  Node: GNU Free Documentation License,  Prev: About this manual,  Up: About this manual +                                                                              | +8.6.1 GNU Free Documentation License                                          | +------------------------------------                                          |                        Version 1.2, November 2002       Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. -     59 Temple Place, Suite 330, Boston, MA  02111-1307, USA +     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA                 |       Everyone is permitted to copy and distribute verbatim copies       of this license document, but changing it is not allowed. @@ -17402,11 +17478,8 @@ File: slib.info,  Node: Copying This Manual,  Next: How to use this License for       you may choose any version ever published (not as a draft) by the       Free Software Foundation. - -File: slib.info,  Node: How to use this License for your documents,  Prev: Copying This Manual,  Up: About this manual - -8.6.2 How to use this License for your documents ------------------------------------------------- +ADDENDUM: How to use this License for your documents                          | +====================================================                          |  To use this License in a document you have written, include a copy of  the License in the document and put the following copyright and license @@ -17561,7 +17634,7 @@ Procedure and Macro Index  * bitwise-merge:                         Bit-Twiddling.       (line  57)  * bitwise-not:                           Bit-Twiddling.       (line  46)  * bitwise-xor:                           Bit-Twiddling.       (line  37) -* blackbody-spectrum:                    Spectra.             (line 125) +* blackbody-spectrum:                    Spectra.             (line 128)  * booleans->integer:                     Bit-Twiddling.       (line 239)  * break <1>:                             Breakpoints.         (line  28)  * break:                                 SRFI-1.              (line 151) @@ -17577,16 +17650,17 @@ Procedure and Macro Index  * byte-set!:                             Byte.                (line  18)  * bytes:                                 Byte.                (line  32)  * bytes->ieee-double:                    Byte/Number Conversions. -                                                              (line  61)      | +                                                              (line  61)  * bytes->ieee-float:                     Byte/Number Conversions.                                                                (line  41)  * bytes->integer:                        Byte/Number Conversions.                                                                (line  17) -* bytes->list:                           Byte.                (line  36) -* bytes-copy:                            Byte.                (line  47) +* bytes->list:                           Byte.                (line  40) +* bytes->string:                         Byte.                (line  47) +* bytes-copy:                            Byte.                (line  57)  * bytes-length:                          Byte.                (line  29) -* bytes-reverse:                         Byte.                (line  63) -* bytes-reverse!:                        Byte.                (line  60) +* bytes-reverse:                         Byte.                (line  73) +* bytes-reverse!:                        Byte.                (line  70)  * 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) @@ -17609,8 +17683,8 @@ Procedure and Macro Index  * 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) +* chromaticity->CIEXYZ:                  Spectra.             (line 172) +* chromaticity->whitepoint:              Spectra.             (line 175)  * CIE:DE*:                               Color Difference Metrics.                                                                (line  20)  * CIE:DE*94:                             Color Difference Metrics. @@ -17708,10 +17782,10 @@ Procedure and Macro Index  * ctime:                                 Posix Time.          (line  68)  * current-directory:                     Directories.         (line   9)  * current-error-port:                    Input/Output.        (line  70) -* current-input-port <1>:                Byte.                (line  84) +* current-input-port <1>:                Byte.                (line  94)  * current-input-port:                    Ruleset Definition and Use.                                                                (line  57) -* current-output-port:                   Byte.                (line  76) +* current-output-port:                   Byte.                (line  86)  * current-time:                          Time and Date.       (line  20)  * cvs-directories:                       CVS.                 (line  14)  * cvs-files:                             CVS.                 (line   9) @@ -17761,6 +17835,7 @@ Procedure and Macro Index  * delete-table on relational-database:   Database Operations. (line  59)  * dequeue!:                              Queues.              (line  28)  * dequeue-all!:                          Queues.              (line  36) +* describe-file-lock:                    Transactions.        (line  70)  * determinant:                           Matrix Algebra.      (line  18)  * dft:                                   Discrete Fourier Transform.                                                                (line  44) @@ -17787,7 +17862,7 @@ Procedure and Macro Index  * 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) +* emacs:backup-name:                     Transactions.        (line  85)  * empty?:                                Collections.         (line 100)  * encode-universal-time:                 Common-Lisp Time.    (line  40)  * enqueue!:                              Queues.              (line  25) @@ -17797,7 +17872,7 @@ Procedure and Macro Index  * every:                                 Lists as sets.       (line  91)  * every?:                                Collections.         (line  92)  * exports<-info-index:                   Top-level Variable References. -                                                              (line  35)      | +                                                              (line  35)  * extended-euclid:                       Modular Arithmetic.  (line   9)  * factor:                                Prime Numbers.       (line  41)  * feature->export-alist:                 Module Manifests.    (line 100) @@ -17952,19 +18027,19 @@ Procedure and Macro Index  * identifier?:                           Syntactic Closures.  (line 334)  * identity:                              Miscellany.          (line   9)  * ieee-byte-collate:                     Byte/Number Conversions. -                                                              (line 152)      | +                                                              (line 152)  * ieee-byte-collate!:                    Byte/Number Conversions. -                                                              (line 143)      | +                                                              (line 143)  * ieee-byte-decollate:                   Byte/Number Conversions. -                                                              (line 156)      | +                                                              (line 156)  * ieee-byte-decollate!:                  Byte/Number Conversions. -                                                              (line 148)      | +                                                              (line 148)  * ieee-double->bytes:                    Byte/Number Conversions. -                                                              (line  98)      | +                                                              (line  98)  * ieee-float->bytes:                     Byte/Number Conversions. -                                                              (line  80)      | -* illuminant-map:                        Spectra.             (line  77) -* illuminant-map->XYZ:                   Spectra.             (line  82) +                                                              (line  80) +* illuminant-map:                        Spectra.             (line  80) +* illuminant-map->XYZ:                   Spectra.             (line  85)  * implementation-vicinity:               Vicinity.            (line  42)  * in-graphic-context:                    Graphics Context.    (line   7)  * in-vicinity:                           Vicinity.            (line  62) @@ -17979,14 +18054,14 @@ Procedure and Macro Index  * integer->peano-coordinates:            Peano Space-Filling Curve.                                                                (line  19)  * integer-byte-collate:                  Byte/Number Conversions. -                                                              (line 137)      | +                                                              (line 137)  * integer-byte-collate!:                 Byte/Number Conversions. -                                                              (line 131)      | +                                                              (line 131)  * integer-expt:                          Irrational Integer Functions.                                                                (line   9)  * integer-length:                        Bit-Twiddling.       (line  98)  * integer-log:                           Irrational Integer Functions. -                                                              (line  18)      | +                                                              (line  18)  * integer-sqrt:                          Irrational Integer Functions.                                                                (line  23)  * interaction-environment:               Eval.                (line  51) @@ -18020,9 +18095,9 @@ Procedure and Macro Index  * last-pair:                             Miscellany.          (line  64)  * length+:                               SRFI-1.              (line  88)  * let-values:                            Binding to multiple values. -                                                              (line  14)      | +                                                              (line  14)  * let-values*:                           Binding to multiple values. -                                                              (line  15)      | +                                                              (line  15)  * library-vicinity:                      Vicinity.            (line  39)  * light:ambient:                         Solid Modeling.      (line 110)  * light:beam:                            Solid Modeling.      (line 144) @@ -18032,7 +18107,7 @@ Procedure and Macro Index  * limit:                                 The Limit.           (line   7)  * list*:                                 List construction.   (line  18)  * list->array:                           Arrays.              (line  88) -* list->bytes:                           Byte.                (line  40) +* list->bytes:                           Byte.                (line  36)  * list->integer:                         Bit-Twiddling.       (line 231)  * list-copy:                             SRFI-1.              (line  24)  * list-index:                            SRFI-1.              (line 157) @@ -18045,7 +18120,7 @@ Procedure and Macro Index  * ln:                                    Irrational Real Functions.                                                                (line  77)  * load->path:                            Module Manifests.    (line  63) -* load-ciexyz:                           Spectra.             (line  37) +* load-ciexyz:                           Spectra.             (line  40)  * load-color-dictionary:                 Color Names.         (line  52)  * localtime:                             Posix Time.          (line  39)  * log2-binary-factors:                   Bit-Twiddling.       (line 109) @@ -18205,7 +18280,7 @@ Procedure and Macro Index  * open-database on relational-system:    Relational Database Objects.                                                                (line  45)  * open-database!:                        Using Databases.     (line  68) -* open-file <1>:                         Byte.                (line  67) +* open-file <1>:                         Byte.                (line  77)  * open-file:                             Input/Output.        (line  18)  * open-table:                            Using Databases.     (line 107)  * open-table on base-table:              Base Tables.         (line  16) @@ -18296,6 +18371,7 @@ Procedure and Macro Index  * printf:                                Standard Formatted Output.                                                                (line   9)  * process:schedule!:                     Multi-Processing.    (line  20) +* program-arguments:                     System Interface.    (line  22)  * program-vicinity:                      Vicinity.            (line  30)  * project-table on relational-database:  Database Operations. (line  76)  * proper-list?:                          SRFI-1.              (line  38) @@ -18328,13 +18404,13 @@ Procedure and Macro Index  * random:uniform:                        Inexact Random Numbers.                                                                (line   9)  * rationalize:                           Rationalize.         (line   9) -* read-byte:                             Byte.                (line  79) -* read-bytes:                            Byte.                (line  97) -* read-cie-illuminant:                   Spectra.             (line  43) +* read-byte:                             Byte.                (line  89) +* read-bytes:                            Byte.                (line 107) +* read-cie-illuminant:                   Spectra.             (line  46)  * 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-normalized-illuminant:            Spectra.             (line  57)  * read-options-file:                     Command Line.        (line  65)  * real-acos:                             Irrational Real Functions.                                                                (line  20) @@ -18505,8 +18581,8 @@ Procedure and Macro Index  * soundex:                               Soundex.             (line   9)  * span:                                  SRFI-1.              (line 147)  * span!:                                 SRFI-1.              (line 149) -* spectrum->chromaticity:                Spectra.             (line 111) -* spectrum->XYZ:                         Spectra.             (line  85) +* spectrum->chromaticity:                Spectra.             (line 114) +* spectrum->XYZ:                         Spectra.             (line  88)  * split-at:                              SRFI-1.              (line  80)  * split-at!:                             SRFI-1.              (line  81)  * sprintf:                               Standard Formatted Output. @@ -18549,6 +18625,7 @@ Procedure and Macro Index  * stack:                                 Trace.               (line  49)  * stack-all:                             Debug.               (line  27)  * stackf:                                Trace.               (line  85) +* string->bytes:                         Byte.                (line  52)  * string->color:                         Color Data-Type.     (line  98)  * string-capitalize:                     String-Case.         (line  11)  * string-capitalize!:                    String-Case.         (line  16) @@ -18571,9 +18648,9 @@ Procedure and Macro Index  * StudlyCapsExpand:                      String-Case.         (line  29)  * sub-vicinity:                          Vicinity.            (line  73)  * subarray:                              Subarrays.           (line   9) -* subbytes:                              Byte.                (line  50) -* subbytes-read!:                        Byte.                (line 122) -* subbytes-write:                        Byte.                (line 131) +* subbytes:                              Byte.                (line  60) +* subbytes-read!:                        Byte.                (line 132) +* subbytes-write:                        Byte.                (line 141)  * subset?:                               Lists as sets.       (line  52)  * subst:                                 Tree Operations.     (line  11)  * substq:                                Tree Operations.     (line  12) @@ -18609,8 +18686,8 @@ Procedure and Macro Index  * 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) +* temperature->chromaticity:             Spectra.             (line 153) +* temperature->XYZ:                      Spectra.             (line 138)  * tenth:                                 SRFI-1.              (line  66)  * third:                                 SRFI-1.              (line  57)  * time-zone:                             Time Zone.           (line  68) @@ -18633,7 +18710,7 @@ Procedure and Macro Index  * track:                                 Trace.               (line  41)  * track-all:                             Debug.               (line  23)  * trackf:                                Trace.               (line  83) -* transact-file-replacement:             Transactions.        (line  98) +* transact-file-replacement:             Transactions.        (line 110)  * transcript-off:                        Transcripts.         (line  10)  * transcript-on:                         Transcripts.         (line   9)  * transformer:                           Syntactic Closures.  (line 113) @@ -18666,7 +18743,7 @@ Procedure and Macro Index  * uric:decode:                           URI.                 (line  81)  * uric:encode:                           URI.                 (line  76)  * url->color-dictionary:                 Color Names.         (line  77) -* user-email-address:                    Transactions.        (line 133) +* user-email-address:                    Transactions.        (line 145)  * user-vicinity:                         Vicinity.            (line  47)  * values:                                Values.              (line   9)  * vector->array:                         Arrays.              (line 111) @@ -18677,8 +18754,8 @@ Procedure and Macro Index  * 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) +* wavelength->chromaticity:              Spectra.             (line 123) +* wavelength->XYZ:                       Spectra.             (line 118)  * whole-page <1>:                        Rectangles.          (line  11)  * whole-page:                            PostScript Graphing. (line  37)  * with-input-from-file:                  With-File.           (line   9) @@ -18688,8 +18765,8 @@ Procedure and Macro Index  * world:info:                            Solid Modeling.      (line  24)  * wrap-command-interface:                Database Extension.  (line   7)  * write-base on base-table:              The Base.            (line  43) -* write-byte:                            Byte.                (line  72) -* write-bytes:                           Byte.                (line 108) +* write-byte:                            Byte.                (line  82) +* write-bytes:                           Byte.                (line 118)  * write-database:                        Using Databases.     (line  79)  * write-database on relational-database: Database Operations. (line  26)  * write-line:                            Line I/O.            (line  29) @@ -18751,10 +18828,10 @@ Procedure and Macro Index  * 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) +* xyY->XYZ:                              Spectra.             (line 191) +* xyY:normalize-colors:                  Spectra.             (line 193) +* XYZ->chromaticity:                     Spectra.             (line 168) +* XYZ->xyY:                              Spectra.             (line 187)  * y-axis:                                Legending.           (line  48)  * zenith-xyy:                            Daylight.            (line  70)  * zip:                                   SRFI-1.              (line  98) @@ -18873,7 +18950,7 @@ Concept and Feature Index  * base-table:                            Base Table.          (line   6)  * batch:                                 Batch.               (line   6)  * bignum:                                Feature.             (line  13) -* binary:                                Byte.                (line  66) +* binary:                                Byte.                (line  76)  * binary trees:                          Weight-Balanced Trees.                                                                (line   8)  * binary trees, as discrete maps:        Weight-Balanced Trees. @@ -18899,9 +18976,9 @@ Concept and Feature Index  * chapter-order:                         Chapter Ordering.    (line   6)  * charplot:                              Character Plotting.  (line   6)  * Chroma:                                Color Spaces.        (line 141) -* cie1931:                               Spectra.             (line  31) +* cie1931:                               Spectra.             (line  32)  * cie1964:                               Spectra.             (line  27) -* ciexyz:                                Spectra.             (line  35) +* ciexyz:                                Spectra.             (line  37)  * CIEXYZ:                                Color Spaces.        (line  18)  * cksum-string:                          Cyclic Checksum.     (line 160)  * coerce:                                Type Coercion.       (line   6) @@ -18946,10 +19023,11 @@ Concept and Feature Index                                                                (line  18)  * discrete maps, using binary trees:     Weight-Balanced Trees.                                                                (line  52) -* DrScheme:                              Installation.        (line 103) +* DrScheme:                              Installation.        (line 138)  * dynamic:                               Dynamic Data Type.   (line   6)  * dynamic-wind:                          Dynamic-Wind.        (line   6)  * e-sRGB:                                Color Spaces.        (line 218) +* ELK:                                   Installation.        (line 134)  * emacs:                                 Transactions.        (line  33)  * Encapsulated-PostScript:               PostScript Graphing. (line  23)  * escaped:                               URI.                 (line  77) @@ -18958,32 +19036,32 @@ Concept and Feature Index  * eval:                                  Eval.                (line   6)  * exchanger:                             Miscellany.          (line  22)  * factor:                                Prime Numbers.       (line   6) -* FDL, GNU Free Documentation License:   Copying This Manual. (line   6) -* feature <1>:                           About this manual.   (line  18) +* feature <1>:                           About this manual.   (line  13)  * feature <2>:                           Require.             (line  18)  * feature:                               Feature.             (line   6)  * File Transfer Protocol:                URI.                 (line 113)  * file-lock:                             Transactions.        (line  32) +* filename <1>:                          Batch.               (line 148)  * filename:                              Filenames.           (line   6)  * fluid-let:                             Fluid-Let.           (line   6)  * fold:                                  Parsing XML.         (line 400)  * form:                                  HTML.                (line  63)  * format:                                Format.              (line   6) -* Gambit-C:                              Installation.        (line 116) +* Gambit-C 3.0:                          Installation.        (line 148)  * gamut:                                 Color Spaces.        (line  18)  * generic-write:                         Generic-Write.       (line   6) +* getenv:                                System Interface.    (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) +                                                              (line   6)      |  * glob:                                  Filenames.           (line   6)  * Gray code:                             Hilbert Space-Filling Curve.                                                                (line  52)  * guarded-cond-clause:                   Guarded COND Clause. (line   6) -* Guile:                                 Installation.        (line 119) +* Guile:                                 Installation.        (line 157)  * hash:                                  Hashing.             (line   6)  * hash-table:                            Hash Tables.         (line   6)  * Hilbert:                               Hilbert Space-Filling Curve. @@ -19002,7 +19080,7 @@ Concept and Feature Index  * ICC Profile:                           Color Spaces.        (line 191)  * implcat:                               Catalog Vicinities.  (line  23)  * indexed-sequential-access-method:      Byte/Number Conversions. -                                                              (line 128)      | +                                                              (line 128)  * inexact:                               Feature.             (line  13)  * infix:                                 Rule Types.          (line  19)  * Info:                                  Top-level Variable References. @@ -19016,15 +19094,17 @@ Concept and Feature Index  * Japanese:                              Extra-SLIB Packages. (line  53)  * JFILTER:                               Extra-SLIB Packages. (line  53)  * JIS:                                   Extra-SLIB Packages. (line  53) +* Kawa:                                  Installation.        (line 154)  * 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) +* Larceny:                               Installation.        (line 125)  * Left Denotation, led:                  Nud and Led Definition.                                                                (line  13)  * let-values:                            Binding to multiple values. -                                                              (line  11)      | +                                                              (line  11)  * Lightness:                             Color Spaces.        (line  71)  * line-i:                                Line I/O.            (line   6)  * list-processing library:               SRFI-1.              (line   8) @@ -19053,7 +19133,7 @@ Concept and Feature Index  * minimize:                              Minimizing.          (line   6)  * minimum field width (printf):          Standard Formatted Output.                                                                (line  88) -* MIT Scheme:                            Installation.        (line 113) +* MIT Scheme:                            Installation.        (line 145)  * mkimpcat.scm:                          Catalog Vicinities.  (line  28)  * mklibcat.scm:                          Catalog Vicinities.  (line  16)  * modular:                               Modular Arithmetic.  (line   6) @@ -19061,7 +19141,7 @@ Concept and Feature Index                                                                (line   6)  * multiarg-apply:                        Multi-argument Apply.                                                                (line   6) -* MzScheme:                              Installation.        (line 104) +* MzScheme:                              Installation.        (line 139)  * nary:                                  Rule Types.          (line  23)  * ncbi-dma:                              NCBI-DNA.            (line   6)  * new-catalog:                           Catalog Creation.    (line  48) @@ -19090,7 +19170,7 @@ Concept and Feature Index  * pgm-raw:                               Portable Image Files.                                                                (line  26)  * plain-text:                            HTML.                (line  14) -* PLT Scheme:                            Installation.        (line 102) +* PLT Scheme:                            Installation.        (line 137)  * pnm:                                   Portable Image Files.                                                                (line   6)  * portable bitmap graphics:              Portable Image Files. @@ -19115,6 +19195,8 @@ Concept and Feature Index  * priority-queue:                        Priority Queues.     (line   6)  * PRNG:                                  Random Numbers.      (line   6)  * process:                               Multi-Processing.    (line   6) +* program-arguments <1>:                 System Interface.    (line  19) +* program-arguments:                     Getopt.              (line 102)  * Prolog:                                Extra-SLIB Packages. (line  49)  * promise:                               Promises.            (line   6)  * PSD:                                   Extra-SLIB Packages. (line  26) @@ -19163,9 +19245,9 @@ Concept and Feature Index  * SCHELOG:                               Extra-SLIB Packages. (line  49)  * scheme:                                URI.                 (line  99)  * Scheme Request For Implementation:     SRFI.                (line   8) -* Scheme48:                              Installation.        (line 137) +* Scheme48:                              Installation.        (line 175)  * schmooz:                               Schmooz.             (line   6) -* SCM:                                   Installation.        (line  97) +* SCM:                                   Installation.        (line 120)  * script:                                Installation.        (line  37)  * self-set:                              Commutative Rings.   (line  17)  * Sequence Comparison:                   Sequence Comparison. (line   6) @@ -19175,6 +19257,7 @@ Concept and Feature Index                                                                (line  52)  * shell:                                 Command Line.        (line  12)  * sierpinski:                            Sierpinski Curve.    (line   6) +* SISC:                                  Installation.        (line 151)  * sitecat:                               Catalog Vicinities.  (line  19)  * sky:                                   Daylight.            (line   6)  * slib:                                  Installation.        (line  37) @@ -19195,7 +19278,7 @@ Concept and Feature Index  * srfi-1:                                SRFI-1.              (line   6)  * srfi-11 <1>:                           SRFI.                (line  37)  * srfi-11:                               Binding to multiple values. -                                                              (line  11)      | +                                                              (line  11)  * srfi-2 <1>:                            SRFI.                (line  33)  * srfi-2:                                Guarded LET* special form.                                                                (line   6) @@ -19216,6 +19299,7 @@ Concept and Feature Index  * srfi-94:                               SRFI.                (line  53)  * srfi-95 <1>:                           SRFI.                (line  56)  * srfi-95:                               Sorting.             (line   6) +* srfi-96:                               SRFI.                (line  58)  * sRGB:                                  Color Spaces.        (line 189)  * stdio:                                 Standard Formatted I/O.                                                                (line  14) @@ -19232,6 +19316,7 @@ Concept and Feature Index                                                                (line  32)  * syntax-case <1>:                       Syntax-Case Macros.  (line   6)  * syntax-case:                           Library Catalogs.    (line  43) +* system:                                System Interface.    (line  13)  * time:                                  Time and Date.       (line  16)  * time-zone:                             Time Zone.           (line  63)  * top-level variable references:         Top-level Variable References. @@ -19262,7 +19347,7 @@ Concept and Feature Index  * variable references:                   Top-level Variable References.                                                                (line   6)  * vet:                                   Module Analysis.     (line   6) -* VSCM:                                  Installation.        (line 148) +* VSCM:                                  Installation.        (line 186)  * WB:                                    Base Table.          (line  34)  * wb-table:                              Base Table.          (line  32)  * weight-balanced binary trees:          Weight-Balanced Trees. @@ -19275,249 +19360,248 @@ Concept and Feature Index  * wt-tree:                               Weight-Balanced Trees.                                                                (line   6)  * xRGB:                                  Color Spaces.        (line 204) -* xyY:                                   Spectra.             (line 175) +* xyY:                                   Spectra.             (line 178)  * yasos:                                 Yasos.               (line   6)  Tag Table: -Node: Top889 -Node: The Library System2001 -Node: Feature2668 -Ref: Feature-Footnote-14767 -Node: Require5277 -Node: Library Catalogs7690 -Node: Catalog Creation9121 -Node: Catalog Vicinities11496 -Node: Compiling Scheme14256 -Node: Module Conventions14906 -Ref: Module Conventions-Footnote-116211 -Node: Module Manifests16577 -Node: Module Semantics22049 -Node: Top-level Variable References23667 -Ref: Top-level Variable References-Footnote-125626 -Node: Module Analysis26067 -Node: Universal SLIB Procedures27172 -Node: Vicinity27787 -Node: Configuration31642 -Node: Input/Output34614 -Node: System39059 -Node: Miscellany42321 -Node: Scheme Syntax Extension Packages44303 -Node: Defmacro45241 -Node: R4RS Macros47217 -Node: Macro by Example48481 -Node: Macros That Work51379 -Node: Syntactic Closures57373 -Node: Syntax-Case Macros74901 -Node: Define-Structure78832 -Node: Define-Record-Type80808 -Node: Fluid-Let81441 -Node: Binding to multiple values82411 -Node: Guarded LET* special form83253 -Node: Guarded COND Clause83605 -Node: Yasos85390 -Node: Yasos terms86202 -Node: Yasos interface87240 -Node: Setters89336 -Node: Yasos examples91995 -Node: Textual Conversion Packages94953 -Node: Precedence Parsing95806 -Node: Precedence Parsing Overview96491 -Ref: Precedence Parsing Overview-Footnote-196872 -Node: Rule Types98121 -Node: Ruleset Definition and Use99576 -Node: Token definition101959 -Node: Nud and Led Definition104567 -Node: Grammar Rule Definition107028 -Node: Format114624 -Node: Format Interface114938 -Node: Format Specification116688 -Node: Standard Formatted I/O127633 -Node: Standard Formatted Output128221 -Node: Standard Formatted Input137679 -Node: Programs and Arguments144356 -Node: Getopt144864 -Node: Command Line151411 -Node: Parameter lists154609 -Node: Getopt Parameter lists158515 -Node: Filenames161756 -Node: Batch165666 -Node: HTML173574 -Node: HTML Tables180016 -Node: HTTP and CGI186548 -Node: Parsing HTML191097 -Node: URI193604 -Node: Parsing XML198351 -Node: Printing Scheme263178 -Node: Generic-Write263643 -Node: Object-To-String265118 -Node: Pretty-Print265593 -Node: Time and Date268638 -Node: Time Zone269756 -Node: Posix Time274561 -Node: Common-Lisp Time276791 -Node: Time Infrastructure278473 -Node: NCBI-DNA278877 -Node: Schmooz280451 -Node: Mathematical Packages284754 -Node: Bit-Twiddling285509 -Node: Modular Arithmetic294513 -Node: Irrational Integer Functions296944 -Node: Irrational Real Functions297973 -Node: Prime Numbers301577 -Node: Random Numbers303281 -Node: Exact Random Numbers304123 -Node: Inexact Random Numbers306395 -Node: Discrete Fourier Transform308229 -Node: Cyclic Checksum310664 -Node: Graphing318294 -Node: Character Plotting318489 -Node: PostScript Graphing324001 -Node: Column Ranges325780 -Node: Drawing the Graph327259 -Node: Graphics Context328354 -Node: Rectangles330173 -Node: Legending331620 -Node: Legacy Plotting333849 -Node: Example Graph334861 -Node: Solid Modeling339228 -Node: Color358737 -Node: Color Data-Type359573 -Ref: Color Data-Type-Footnote-1328920 -Node: Color Spaces363964 -Ref: Color Spaces-Footnote-1338921 -Node: Spectra373883 -Node: Color Difference Metrics382648 -Node: Color Conversions385330 -Node: Color Names387474 -Node: Daylight394410 -Node: Root Finding399099 -Node: Minimizing403058 -Ref: Minimizing-Footnote-1370311 -Node: The Limit405100 -Node: Commutative Rings409970 -Node: Matrix Algebra421381 -Node: Database Packages423487 -Node: Relational Database423770 -Node: Using Databases424637 -Node: Table Operations431143 -Node: Single Row Operations432354 -Node: Match-Keys434601 -Node: Multi-Row Operations436680 -Node: Indexed Sequential Access Methods439071 -Node: Sequential Index Operations440079 -Node: Table Administration442435 -Node: Database Interpolation443302 -Node: Embedded Commands444404 -Node: Database Extension445978 -Node: Command Intrinsics448103 -Node: Define-tables Example449665 -Node: The *commands* Table451315 -Node: Command Service453593 -Node: Command Example455555 -Node: Database Macros460108 -Node: Within-database460993 -Node: Within-database Example463900 -Node: Database Browser465687 -Node: Relational Infrastructure466763 -Node: Base Table467067 -Node: The Base469575 -Node: Base Tables472693 -Node: Base Field Types474169 -Node: Composite Keys474952 -Node: Base Record Operations477006 -Node: Match Keys478734 -Node: Aggregate Base Operations479615 -Node: Base ISAM Operations480680 -Node: Catalog Representation481998 -Node: Relational Database Objects484667 -Node: Database Operations487311 -Node: Weight-Balanced Trees491020 -Node: Construction of Weight-Balanced Trees494906 -Node: Basic Operations on Weight-Balanced Trees498372 -Node: Advanced Operations on Weight-Balanced Trees501239 -Node: Indexing Operations on Weight-Balanced Trees507280 -Node: Other Packages511121 -Node: Data Structures511650 -Node: Arrays512491 -Node: Subarrays523379 -Node: Array Mapping525621 -Node: Array Interpolation528831 -Node: Association Lists530095 -Node: Byte532371 -Node: Byte/Number Conversions537964 -Node: MAT-File Format545535 -Node: Portable Image Files546814 -Node: Collections548444 -Node: Dynamic Data Type554710 -Node: Hash Tables555989 -Node: Object558577 -Node: Priority Queues566860 -Node: Queues567715 -Node: Records568960 -Node: Sorting and Searching572470 -Node: Common List Functions573163 -Node: List construction573620 -Node: Lists as sets575335 -Node: Lists as sequences581873 -Node: Destructive list operations587100 -Node: Non-List functions589778 -Node: Tree Operations590867 -Node: Chapter Ordering592560 -Node: Sorting594207 -Node: Topological Sort598492 -Node: Hashing600200 -Node: Space-Filling Curves601217 -Node: Hilbert Space-Filling Curve601521 -Node: Peano Space-Filling Curve605411 -Node: Sierpinski Curve606517 -Node: Soundex608981 -Node: String Search610579 -Node: Sequence Comparison613152 -Node: Procedures616282 -Node: Type Coercion616810 -Node: String-Case617242 -Node: String Ports619069 -Node: Line I/O619841 -Node: Multi-Processing621890 -Node: Metric Units623008 -Node: Standards Support631287 -Node: RnRS632083 -Node: With-File633306 -Node: Transcripts633582 -Node: Rev2 Procedures633916 -Node: Rev4 Optional Procedures635649 -Node: Multi-argument / and -636118 -Node: Multi-argument Apply636528 -Node: Rationalize636865 -Node: Promises638027 -Node: Dynamic-Wind638473 -Node: Eval639741 -Node: Values643086 -Node: SRFI643901 -Node: SRFI-1645988 -Node: Session Support650546 -Node: Repl651120 -Node: Quick Print652416 -Node: Debug653722 -Node: Breakpoints654629 -Node: Trace656671 -Node: System Interface659897 -Node: Directories660468 -Node: Transactions661961 -Node: CVS667472 -Node: Extra-SLIB Packages668639 -Node: About SLIB670948 -Node: Installation671733 -Node: The SLIB script677640 -Node: Porting678193 -Ref: Porting-Footnote-1639950 -Node: Coding Guidelines679757 -Node: Copyrights682171 -Node: About this manual685540 -Node: Copying This Manual686172 -Node: How to use this License for your documents707206 -Node: Index708724 +Node: Top844 +Node: The Library System1911 +Node: Feature2578 +Ref: Feature-Footnote-14779 +Node: Require5169 +Node: Library Catalogs7582 +Node: Catalog Creation9013 +Node: Catalog Vicinities11388 +Node: Compiling Scheme14148 +Node: Module Conventions14798 +Ref: Module Conventions-Footnote-116223 +Node: Module Manifests16469 +Node: Module Semantics21941 +Node: Top-level Variable References23559 +Ref: Top-level Variable References-Footnote-125638 +Node: Module Analysis25959 +Node: Universal SLIB Procedures27064 +Node: Vicinity27679 +Node: Configuration31534 +Node: Input/Output34506 +Node: System38461 +Node: Miscellany41631 +Node: Scheme Syntax Extension Packages43534 +Node: Defmacro44472 +Node: R4RS Macros46448 +Node: Macro by Example47712 +Node: Macros That Work50610 +Node: Syntactic Closures56604 +Node: Syntax-Case Macros74132 +Node: Define-Structure78063 +Node: Define-Record-Type80039 +Node: Fluid-Let80672 +Node: Binding to multiple values81642 +Node: Guarded LET* special form82241 +Node: Guarded COND Clause82593 +Node: Yasos84378 +Node: Yasos terms85190 +Node: Yasos interface86228 +Node: Setters88324 +Node: Yasos examples90983 +Node: Textual Conversion Packages93941 +Node: Precedence Parsing94794 +Node: Precedence Parsing Overview95479 +Ref: Precedence Parsing Overview-Footnote-196884 +Node: Rule Types97109 +Node: Ruleset Definition and Use98564 +Node: Token definition100947 +Node: Nud and Led Definition103555 +Node: Grammar Rule Definition106016 +Node: Format113612 +Node: Format Interface113891 +Node: Format Specification115641 +Node: Standard Formatted I/O126586 +Node: Standard Formatted Output127174 +Node: Standard Formatted Input136632 +Node: Programs and Arguments143309 +Node: Getopt143808 +Node: Command Line150431 +Node: Parameter lists153629 +Node: Getopt Parameter lists157535 +Node: Filenames160776 +Node: Batch164722 +Node: HTML172612 +Node: HTML Tables179054 +Node: HTTP and CGI185586 +Node: Parsing HTML190135 +Node: URI192642 +Node: Parsing XML197310 +Node: Printing Scheme230196 +Node: Generic-Write230523 +Node: Object-To-String231939 +Node: Pretty-Print232358 +Node: Time and Date235343 +Node: Time Zone236400 +Node: Posix Time241142 +Node: Common-Lisp Time243310 +Node: Time Infrastructure244936 +Node: NCBI-DNA245287 +Node: Schmooz246659 +Node: Mathematical Packages250895 +Node: Bit-Twiddling251650 +Node: Modular Arithmetic260195 +Node: Irrational Integer Functions262626 +Node: Irrational Real Functions263655 +Node: Prime Numbers267259 +Node: Random Numbers268963 +Node: Exact Random Numbers269805 +Node: Inexact Random Numbers272077 +Node: Discrete Fourier Transform273911 +Node: Cyclic Checksum276346 +Node: Graphing283976 +Node: Character Plotting284171 +Node: PostScript Graphing289683 +Node: Column Ranges291462 +Node: Drawing the Graph292941 +Node: Graphics Context294036 +Node: Rectangles295855 +Node: Legending297302 +Node: Legacy Plotting299531 +Node: Example Graph300543 +Node: Solid Modeling304910 +Node: Color324419 +Node: Color Data-Type325255 +Ref: Color Data-Type-Footnote-1328905 +Node: Color Spaces329646 +Ref: Color Spaces-Footnote-1338906 +Node: Spectra339565 +Node: Color Difference Metrics348676 +Node: Color Conversions351358 +Node: Color Names353502 +Node: Daylight360438 +Node: Root Finding365127 +Node: Minimizing369007 +Ref: Minimizing-Footnote-1370431 +Node: The Limit371049 +Node: Commutative Rings375919 +Node: Matrix Algebra387330 +Node: Database Packages388861 +Node: Relational Database389144 +Node: Using Databases390011 +Node: Table Operations396517 +Node: Single Row Operations397728 +Node: Match-Keys399975 +Node: Multi-Row Operations402054 +Node: Indexed Sequential Access Methods404445 +Node: Sequential Index Operations405453 +Node: Table Administration407809 +Node: Database Interpolation408676 +Node: Embedded Commands409778 +Node: Database Extension411352 +Node: Command Intrinsics413477 +Node: Define-tables Example415039 +Node: The *commands* Table416689 +Node: Command Service418967 +Node: Command Example420929 +Node: Database Macros425482 +Node: Within-database426367 +Node: Within-database Example429274 +Node: Database Browser431061 +Node: Relational Infrastructure432137 +Node: Base Table432441 +Node: The Base434949 +Node: Base Tables438067 +Node: Base Field Types439543 +Node: Composite Keys440326 +Node: Base Record Operations442380 +Node: Match Keys444108 +Node: Aggregate Base Operations444989 +Node: Base ISAM Operations446054 +Node: Catalog Representation447372 +Node: Relational Database Objects450041 +Node: Database Operations452685 +Node: Weight-Balanced Trees456394 +Node: Construction of Weight-Balanced Trees460280 +Node: Basic Operations on Weight-Balanced Trees463746 +Node: Advanced Operations on Weight-Balanced Trees466613 +Node: Indexing Operations on Weight-Balanced Trees472654 +Node: Other Packages476495 +Node: Data Structures477024 +Node: Arrays477865 +Node: Subarrays486552 +Node: Array Mapping488794 +Node: Array Interpolation491594 +Node: Association Lists492858 +Node: Byte495134 +Node: Byte/Number Conversions502020 +Node: MAT-File Format509546 +Node: Portable Image Files510825 +Node: Collections512455 +Node: Dynamic Data Type518569 +Node: Hash Tables519848 +Node: Object522436 +Node: Priority Queues530719 +Node: Queues531574 +Node: Records532819 +Node: Sorting and Searching536329 +Node: Common List Functions537022 +Node: List construction537479 +Node: Lists as sets539194 +Node: Lists as sequences545732 +Node: Destructive list operations550959 +Node: Non-List functions553637 +Node: Tree Operations554726 +Node: Chapter Ordering556419 +Node: Sorting558066 +Node: Topological Sort561592 +Node: Hashing563300 +Node: Space-Filling Curves564317 +Node: Hilbert Space-Filling Curve564621 +Node: Peano Space-Filling Curve568511 +Node: Sierpinski Curve569617 +Node: Soundex572081 +Node: String Search573679 +Node: Sequence Comparison576252 +Node: Procedures579382 +Node: Type Coercion579910 +Node: String-Case580342 +Node: String Ports582169 +Node: Line I/O582941 +Node: Multi-Processing584990 +Node: Metric Units586108 +Node: Standards Support594387 +Node: RnRS595183 +Node: With-File596406 +Node: Transcripts596682 +Node: Rev2 Procedures597016 +Node: Rev4 Optional Procedures598749 +Node: Multi-argument / and -599218 +Node: Multi-argument Apply599628 +Node: Rationalize599965 +Node: Promises601127 +Node: Dynamic-Wind601573 +Node: Eval602841 +Node: Values606186 +Node: SRFI607001 +Node: SRFI-1608641 +Node: Session Support613148 +Node: Repl613722 +Node: Quick Print615018 +Node: Debug616324 +Node: Breakpoints617231 +Node: Trace619273 +Node: System Interface622499 +Node: Directories623552 +Node: Transactions625045 +Node: CVS631516 +Node: Extra-SLIB Packages632683 +Node: About SLIB635024 +Node: Installation635969 +Node: The SLIB script645771 +Node: Porting646270 +Ref: Porting-Footnote-1642993 +Node: Coding Guidelines647834 +Node: Copyrights650248 +Node: About this manual653617 +Node: GNU Free Documentation License654527 +Node: Index677185  End Tag Table @@ -4,7 +4,7 @@  ; placed in the public domain
  ; *** version numbers ***
 -!define PRODUCT_VERSION "3a5-1"
 +!define PRODUCT_VERSION "3b1-1"
  ; ----------------[ NO CHANGES BELOW ]----------------
 @@ -33,7 +33,7 @@  ; MUI Settings
  !define MUI_ABORTWARNING
 -!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
 +!define MUI_ICON "SLIB.ico"
  !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
  ; Welcome page
 @@ -69,7 +69,7 @@ var ICONS_GROUP  ; MUI end ------
  Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
 -OutFile "SLIB-${PRODUCT_VERSION}.exe"
 +OutFile "slib-${PRODUCT_VERSION}.exe"
  InstallDir "$PROGRAMFILES\slib"
  InstallDirRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" ""
  ShowInstDetails show
 @@ -264,7 +264,27 @@ Section "MainSection" SEC01    File "scaoutp.scm"
    File "schmooz.scm"
    File "schmooz.texi"
 +  File "bigloo.init"
 +  File "chez.init"
 +  File "elk.init"
 +  File "gambit.init"
 +  File "guile.init"
 +  File "jscheme.init"
 +  File "kawa.init"
 +  File "macscheme.init"
 +  File "mitscheme.init"
 +  File "mzscheme.init"
 +  File "pscheme.init"
 +  File "RScheme.init"
 +  File "scheme2c.init"
 +  File "scheme48.init"
    File "scm.init"
 +  File "scsh.init"
 +  File "sisc.init"
 +  File "STk.init"
 +  File "t3.init"
 +  File "umbscheme.init"
 +  File "vscm.init"
    File "scmacro.scm"
    File "selfset.scm"
    File "sierpinski.scm"
 @@ -434,7 +454,27 @@ Section Uninstall    Delete "$INSTDIR\sierpinski.scm"
    Delete "$INSTDIR\selfset.scm"
    Delete "$INSTDIR\scmacro.scm"
 +  Delete "$INSTDIR\bigloo.init"
 +  Delete "$INSTDIR\chez.init"
 +  Delete "$INSTDIR\elk.init"
 +  Delete "$INSTDIR\gambit.init"
 +  Delete "$INSTDIR\guile.init"
 +  Delete "$INSTDIR\jscheme.init"
 +  Delete "$INSTDIR\kawa.init"
 +  Delete "$INSTDIR\macscheme.init"
 +  Delete "$INSTDIR\mitscheme.init"
 +  Delete "$INSTDIR\mzscheme.init"
 +  Delete "$INSTDIR\pscheme.init"
 +  Delete "$INSTDIR\RScheme.init"
 +  Delete "$INSTDIR\scheme2c.init"
 +  Delete "$INSTDIR\scheme48.init"
    Delete "$INSTDIR\scm.init"
 +  Delete "$INSTDIR\scsh.init"
 +  Delete "$INSTDIR\sisc.init"
 +  Delete "$INSTDIR\STk.init"
 +  Delete "$INSTDIR\t3.init"
 +  Delete "$INSTDIR\umbscheme.init"
 +  Delete "$INSTDIR\vscm.init"
    Delete "$INSTDIR\schmooz.texi"
    Delete "$INSTDIR\schmooz.scm"
    Delete "$INSTDIR\scaoutp.scm"
 @@ -29,8 +29,8 @@ Usage: slib SCHEME  Usage: slib    Initialize SLIB session using executable (MIT) 'scheme', 'scm', -  'gsi', 'mzscheme', 'guile', 'slib48', 'scmlit', 'elk', 'sisc', or -  'kawa'." +  'gsi', 'mzscheme', 'guile', 'slib48', 'larceny', 'scmlit', 'elk', +  'sisc', or 'kawa'."  case "$1" in      -v | --ver*) echo slib "$VERSION"; exit 0;; @@ -57,6 +57,8 @@ if [ -z "$command" ]; then  	command=guile; implementation=gui      elif type slib48>/dev/null 2>&1; then  	command=slib48; implementation=s48 +    elif type larceny>/dev/null 2>&1; then +	command=larceny; implementation=lar      elif type scmlit>/dev/null 2>&1; then  	command=scmlit; implementation=scm      elif type elk>/dev/null 2>&1; then @@ -79,6 +81,7 @@ elif type $command>/dev/null 2>&1; then    elif echo ${SPEW} | grep 'UMB Scheme'>/dev/null 2>&1; then implementation=umb    elif echo ${SPEW} | grep 'scheme48'  >/dev/null 2>&1; then implementation=s48    elif echo ${SPEW} | grep 'MzScheme'  >/dev/null 2>&1; then implementation=plt +  elif echo ${SPEW} | grep 'larceny'   >/dev/null 2>&1; then implementation=lar    elif echo ${SPEW} | grep 'Guile'     >/dev/null 2>&1; then implementation=gui    elif echo ${SPEW} | grep 'SCM'       >/dev/null 2>&1; then implementation=scm    elif echo ${SPEW} | grep 'SISC'      >/dev/null 2>&1; then implementation=ssc @@ -123,8 +126,9 @@ case $implementation in      gam) exec $command -:s ${SCHEME_LIBRARY_PATH}gambit.init - "$@";;      ssc) exec $command -e "(load \"${SCHEME_LIBRARY_PATH}sisc.init\")" -- "$@";;      kwa) exec $command -f ${SCHEME_LIBRARY_PATH}kawa.init -- "$@";; -    plt) exec $command -f ${SCHEME_LIBRARY_PATH}DrScheme.init "$@";; +    plt) exec $command -f ${SCHEME_LIBRARY_PATH}mzscheme.init "$@";;      gui) exec $command -l ${SCHEME_LIBRARY_PATH}guile.init "$@";; +    lar) exec $command -- -e "(require 'srfi-96)" "$@";;      mit) exec $command -load ${SCHEME_LIBRARY_PATH}mitscheme.init "$@";;      s48) if [ -f "${S48_VICINITY}slib.image" ]; then  	exec scheme48 -h 4000000 -i ${S48_VICINITY}slib.image @@ -1,6 +1,6 @@  Summary:      platform independent library for scheme  Name:         slib -Version:      3a5 +Version:      3b1  Release:      1  Group:        Development/Languages  BuildArch:    noarch @@ -10,7 +10,7 @@ License:      distributable, see individual files for copyright  Vendor:       Aubrey Jaffer <agj @ alum.mit.edu>  Provides:     slib -Source:       ftp://swiss.csail.mit.edu/pub/scm/slib%{version}.zip +Source:       ftp://swiss.csail.mit.edu/pub/scm/slib-%{version}.zip  URL:          http://swiss.csail.mit.edu/~jaffer/SLIB.html  BuildRoot:    %{_tmppath}/%{name}-%{version}-root @@ -92,10 +92,9 @@ rm -f slib.image  %{_datadir}/slib/saturate.txt  %{_datadir}/slib/resenecolours.txt  %{_datadir}/slib/grapheps.ps -%{_infodir}/slib.info.gz -# The Makefile is of limited utility without all the texinfo files.  %{_datadir}/slib/Makefile -%{_mandir}/man1/slib.1.gz +%{_infodir}/slib.info.gz +# %{_mandir}/man1/slib.1.gz  %doc ANNOUNCE README COPYING FAQ ChangeLog  %changelog @@ -19,7 +19,7 @@ the portable Scheme library.  @noindent  @c Copyright (C) 1993 Todd R. Eigenschink@*  Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.  @quotation  Permission is granted to copy, distribute and/or modify this document @@ -3653,7 +3653,7 @@ left unread in the input stream.  * Command Line::                A command line reader for Scheme shells  * Parameter lists::             'parameters  * Getopt Parameter lists::      'getopt-parameters -* Filenames::                   'glob or 'filename +* Filenames::                   'filename  * Batch::                       'batch  @end menu @@ -3766,10 +3766,11 @@ have been parsed.  Example:  @lisp  #! /usr/local/bin/scm -;;;This code is SCM specific. -(define argv (program-arguments)) +(require 'program-arguments)  (require 'getopt) +(define argv (program-arguments))  @ftindex getopt +@ftindex program-arguments  (define opts ":a:b:cd")  (let loop ((opt (getopt (length argv) argv opts))) @@ -3957,6 +3958,7 @@ should appear.  @node Filenames, Batch, Getopt Parameter lists, Programs and Arguments  @subsection Filenames +@ftindex glob  @include glob.txi @@ -4147,8 +4149,8 @@ Here is an example of the use of most of batch's procedures:  @ftindex parameters  (require 'batch)  @ftindex batch -(require 'glob) -@ftindex glob +(require 'filename) +@ftindex filename  (define batch (create-database #f 'alist-table))  (batch:initialize! batch) @@ -5939,15 +5941,20 @@ values.  @deftp {Feature} cie1964  @ftindex cie1964 -Loads the Spectral Tristimulus Values defining @cite{CIE 1964 -Supplementary Standard Colorimetric Observer}. +Loads the Spectral Tristimulus Values +@cite{CIE 1964 Supplementary Standard Colorimetric Observer}, +defining @var{cie:x-bar}, @var{cie:y-bar}, and @var{cie:z-bar}. +  @deftpx {Feature} cie1931  @ftindex cie1931 -Loads the Spectral Tristimulus Values defining @cite{CIE 1931 -Supplementary Standard Colorimetric Observer}. +Loads the Spectral Tristimulus Values +@cite{CIE 1931 Supplementary Standard Colorimetric Observer}, +defining @var{cie:x-bar}, @var{cie:y-bar}, and @var{cie:z-bar}. +  @deftpx {Feature} ciexyz  @ftindex ciexyz -Requires Spectral Tristimulus Values, defaulting to cie1931. +Requires Spectral Tristimulus Values, defaulting to cie1931, +defining @var{cie:x-bar}, @var{cie:y-bar}, and @var{cie:z-bar}.  @end deftp  @noindent @@ -11415,6 +11422,8 @@ unspecified.  @item SRFI-94 @ref{Irrational Integer Functions} and @ref{Irrational Real Functions}  @ftindex srfi-95  @item SRFI-95 @ref{Sorting} +@ftindex srfi-96 +@item SRFI-96 @ref{Universal SLIB Procedures}  @end itemize @@ -11767,6 +11776,7 @@ To untrace, type  @noindent  If @code{(provided? 'getenv)}: +@ftindex getenv  @defun getenv name  Looks up @var{name}, a string, in the program environment.  If @var{name} is @@ -11775,12 +11785,22 @@ found a string of its value is returned.  Otherwise, @code{#f} is returned.  @noindent  If @code{(provided? 'system)}: +@ftindex system  @defun system command-string  Executes the @var{command-string} on the computer and returns the  integer status code.  @end defun +@noindent +If @code{(provided? 'program-arguments)}: +@ftindex program-arguments + +@defun program-arguments +Returns a list of strings, the first of which is the program name +followed by the command-line arguments. +@end defun +  @menu  * Directories::                  @@ -11837,10 +11857,10 @@ Because I have been too busy to integrate it.  @end itemize  Once an optional package is installed (and an entry added to -@code{*catalog*}, the @code{require} mechanism allows it to be called up -and used as easily as any other SLIB package.  Some optional packages -(for which @code{*catalog*} already has entries) available from SLIB -sites are: +@code{*catalog*}), the @code{require} mechanism allows it to be called +up and used as easily as any other SLIB package.  Some optional +packages (for which @code{*catalog*} already has entries) available +from SLIB sites are:  @table @asis  @item SLIB-PSD @@ -11928,6 +11948,8 @@ page:  @center @url{http://swiss.csail.mit.edu/~jaffer/SLIB} +SLIB is part of the GNU project. +  @menu  * Installation::                How to install SLIB on your system.  * The SLIB script::             Run interactive SLIB sessions. @@ -11941,10 +11963,7 @@ page:  @section Installation  @ifset html -<A NAME="Installation"> -@end ifset -@ifset html -</A> +<A NAME="Installation"></A>  @end ifset  @cindex install @@ -11957,7 +11976,8 @@ Unpack the SLIB distribution.  @item  Install documentation and @code{slib} script.  @item -Configure the Scheme implementation(s) to locate the SLIB directory. +Configure the Scheme implementation(s) to locate the SLIB directory +and implementation directories.  @item  Arrange for Scheme implementation to load its SLIB initialization file.  @item @@ -11990,14 +12010,39 @@ make install  If the Scheme implementation supports @code{getenv}, then the value of  the shell environment variable @var{SCHEME_LIBRARY_PATH} will be used -for @code{(library-vicinity)} if it is defined.  Currently, Chez, Elk, -MITScheme, scheme->c, VSCM, and SCM support @code{getenv}.  Scheme48 -supports @code{getenv} but does not use it for determining +for @code{(library-vicinity)} if it is defined.  Currently, Bigloo, +Chez, Elk, Gambit, Guile, Jscheme, Larceny, MITScheme, MzScheme, +RScheme, STk, VSCM, and SCM support @code{getenv}.  Scheme48 supports +@code{getenv} but does not use it for determining  @code{library-vicinity}.  (That is done from the Makefile.) -The @code{(library-vicinity)} can also be specified from the SLIB +The @code{(library-vicinity)} can also be set from the SLIB  initialization file or by implementation-specific means. +Support for locating an implementation's auxiliary directory is uneven +among implementations.  Also, the person installing SLIB may not have +write permission to some of these directories (necessary for writing +slibcat).  Therefore, those implementations supporting @code{getenv} +(except SCM and Scheme48) provide a means for specifying the +@code{implementation-vicinity} through environment variables.  Define +the indicated environment variable to the pathname (with trailing +slash or backslash) of the desired directory.  Do not use @file{slib/} +as an implementation-vicinity! + +@multitable @columnfractions .3 .7 +@item Bigloo     @tab BIGLOO_IMPLEMENTATION_PATH +@item Chez       @tab CHEZ_IMPLEMENTATION_PATH +@item ELK        @tab ELK_IMPLEMENTATION_PATH +@item Gambit     @tab GAMBIT_IMPLEMENTATION_PATH +@item Guile      @tab GUILE_IMPLEMENTATION_PATH +@item Jscheme    @tab JSCHEME_IMPLEMENTATION_PATH +@item MIT-Scheme @tab MITSCHEME_IMPLEMENTATION_PATH +@item MzScheme   @tab MZSCHEME_IMPLEMENTATION_PATH +@item RScheme    @tab RSCHEME_IMPLEMENTATION_PATH +@item STk        @tab STK_IMPLEMENTATION_PATH +@item Vscm       @tab VSCM_IMPLEMENTATION_PATH +@end multitable +  @subsection Loading SLIB Initialization File  Check the manifest in @file{README} to find a configuration file for @@ -12046,34 +12091,73 @@ Multiple implementations of Scheme can all use the same SLIB directory.  Simply configure each implementation's initialization file as outlined  above. +  @deftp 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.  @end deftp +@deftp Implementation Larceny +Starting with version 0.96, Larceny contains its own SLIB +initialization file, loaded by @code{(require 'srfi-96)}.  If +SCHEME_LIBRARY_PATH is not set, then Larceny looks for an @file{slib} +subdirectory of a directory in the list returned by +@code{(current-require-path)} + +@example +larceny -- -e "(require 'srfi-96)" +@end example +@end deftp + +@deftp Implementation {ELK} +@example +elk -i -l $@{SCHEME_LIBRARY_PATH@}elk.init +@end example +@end deftp + +  @deftp Implementation {PLT Scheme}  @deftpx Implementation {DrScheme}  @deftpx Implementation {MzScheme}  The @file{init.ss} file in the _slibinit_ collection is an SLIB -initialization file. - -To use SLIB in MzScheme, set the @var{SCHEME_LIBRARY_PATH} environment -variable to the installed SLIB location; then invoke MzScheme thus: +initialization file.  To run SLIB in MzScheme: -@code{mzscheme -f $@{SCHEME_LIBRARY_PATH@}DrScheme.init} +@example +mzscheme -f $@{SCHEME_LIBRARY_PATH@}mzscheme.init +@end example  @end deftp +  @deftp Implementation {MIT Scheme} -@code{scheme -load $@{SCHEME_LIBRARY_PATH@}mitscheme.init} +@example +scheme -load $@{SCHEME_LIBRARY_PATH@}mitscheme.init +@end example  @end deftp -@deftp Implementation Gambit-C 3.0 -@code{$command -:s $@{SCHEME_LIBRARY_PATH@}gambit.init -} +@deftp Implementation {Gambit-C 3.0} +@example +gsi -:s $@{SCHEME_LIBRARY_PATH@}gambit.init - +@end example  @end deftp + +@deftp Implementation SISC +@example +sisc -e "(load \"$@{SCHEME_LIBRARY_PATH@}sisc.init\")" -- +@end example +@end deftp + + +@deftp Implementation Kawa +@example +kawa -f $@{SCHEME_LIBRARY_PATH@}kawa.init -- +@end example +@end deftp + +  @deftp Implementation {Guile}  Guile versions 1.6 and earlier link to an archaic SLIB version.  In  RedHat or Fedora installations: @@ -12094,9 +12178,12 @@ ln -s $@{SCHEME_LIBRARY_PATH@} /usr/share/guile/1.6/slib  Guile with SLIB can then be started thus: -@code{guile -l $@{SCHEME_LIBRARY_PATH@}guile.init} +@example +guile -l $@{SCHEME_LIBRARY_PATH@}guile.init +@end example  @end deftp +  @deftp Implementation Scheme48  To make a Scheme48 image for an installation under @code{<prefix>}, @@ -12118,8 +12205,8 @@ From: Matthias Blume <blume @@ cs.Princeton.EDU>  Date: Tue, 1 Mar 1994 11:42:31 -0500  @end format -Disclaimer: The code below is only a quick hack.  If I find some time to -spare I might get around to make some more things work. +Disclaimer: The code below is only a quick hack.  If I find some time +to spare I might get around to make some more things work.  You have to provide @file{vscm.init} as an explicit command line  argument.  Since this is not very nice I would recommend the following @@ -12133,15 +12220,17 @@ run scheme  @item  @code{(slib:dump "dumpfile")}  @item -mv dumpfile place-where-vscm-standard-bootfile-resides -e.g. mv dumpfile /usr/local/vscm/lib/scheme-boot -(In this case vscm should have been compiled with flag --DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"'.  See Makefile -(definition of DDP) for details.) -@end enumerate +mv dumpfile place-where-vscm-standard-bootfile-resides.  For example: -@end deftp +@code{mv dumpfile /usr/local/vscm/lib/scheme-boot} +In this case vscm should have been compiled with flag: + +-DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"' + +See Makefile (definition of DDP) for details. +@end enumerate +@end deftp  @node The SLIB script, Porting, Installation, About SLIB  @section The SLIB script @@ -12260,10 +12349,7 @@ not have the time to fish through 10000 diffs to find your 10 real fixes.  @section Copyrights  @ifset html -<A NAME="Copyrights"> -@end ifset -@ifset html -</A> +<A NAME="Copyrights"></A>  @end ifset  This section has instructions for SLIB authors regarding copyrights. @@ -12356,11 +12442,6 @@ nothing to undermine it in the future.  @node About this manual,  , Copyrights, About SLIB  @section About this manual -@menu -* Copying This Manual::          -* How to use this License for your documents::   -@end menu -  @itemize @bullet  @item  Entries that are labeled as Functions are called for their return @@ -12372,12 +12453,21 @@ Examples in this text were produced using the @code{scm} Scheme  implementation.  @item -At the beginning of each section, there is a line that looks like +At the beginning of each section, there is a line that looks like:  @ftindex feature -@code{(require 'feature)}.  Include this line in your code prior to -using the package. +@example +(require 'feature) +@end example +Include this line in your code prior to using the package.  @end itemize +@menu +* GNU Free Documentation License::   +@end menu + +@node GNU Free Documentation License,  , About this manual, About this manual +@subsection GNU Free Documentation License +  @include fdl.texi  @ifinfo @@ -487,15 +487,25 @@    (define nargs (length args))    (let ((color       (and (>= nargs 1) (color->vrml-field (car args))))  	(intensity   (and (>= nargs 2) (cadr args))) -	(attenuation (and (>= nargs 3) (cadr (caddr args)))) -	(radius      (and (>= nargs 3) (caddr (caddr args))))) +	(beamwidth   (and (>= nargs 3) (car (caddr args)))) +	(cutoffangle (and (>= nargs 3) (cadr (caddr args)))) +	(attenuation (and (>= nargs 3) (caddr (caddr args)))) +	(radius      (and (>= nargs 3) (cadddr (caddr args)))))      (replicate-for-strength       (or intensity 1)       (lambda (inten)         (sprintf #f -		"PointLight {location %s color %s intensity %g attenuation %s radius %g}\\n" +		"PointLight {location %s color %s intensity %g%s}\\n"  		(coordinates3string location) -		color intensity attenuation radius))))) +		color +		inten +		(if attenuation +		    (sprintf #f +			     "\\n +		attenuation %s radius %g" +			     attenuation +			     radius) +		    ""))))))  ;;@args location direction color intensity beam  ;;@args location direction color intensity @@ -535,17 +545,20 @@       (or intensity 1)       (lambda (inten)         (sprintf #f -		"SpotLight {\\n -    location %s direction %s beamWidth %g cutOffAngle %g\\n -    color %s intensity %s attenuation %s radius %g}\\n" +		"SpotLight {location %s direction %s color %s intensity %g%s}\\n"  		(coordinates3string location)  		direction  		color -		intensity -		(and beamwidth (* pi/180 beamwidth)) -		(and cutoffangle (* pi/180 cutoffangle)) -		attenuation -		radius))))) +		inten +		(if beamwidth +		    (sprintf #f +			     "\\n  +		beamWidth %g cutOffAngle %g attenuation %s radius %g" +			     (* pi/180 beamwidth) +			     (* pi/180 cutoffangle) +			     attenuation +			     radius) +		    ""))))))  ;;@subheading Object Primitives @@ -497,7 +497,7 @@    (or (null? l)        (letrec ((subset? (lambda (l1 l2)  			  (or (eq? l1 l2) -			      (every (lambda (x) (member x l2)) l1))))) +			      (every (lambda (x) (member x l2 =?)) l1)))))  	(let loop ((l1 (car l)) (l (cdr l)))  	  (or (null? l)  	      (let ((l2 (car l))) diff --git a/strsrch.scm b/strsrch.scm index 13edb65..a730234 100644 --- a/strsrch.scm +++ b/strsrch.scm @@ -1,4 +1,4 @@ -;;; "MISCIO" Search for string from port. +;;; "strsrch.scm" Search for string from port.  ; Written 1995, 1996 by Oleg Kiselyov (oleg@acm.org)  ; Modified 1996, 1997, 1998, 2001 by A. Jaffer (agj@alum.mit.edu)  ; Modified 2003 by Steve VanDevender (stevev@hexadecimal.uoregon.edu) @@ -89,8 +89,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -130,6 +129,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -173,11 +173,11 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. -;;;	defmacro			;has Common Lisp DEFMACRO +	defmacro			;has Common Lisp DEFMACRO  ;;;	record				;has user defined data structures  ;;;	string-port			;has CALL-WITH-INPUT-STRING and  					;CALL-WITH-OUTPUT-STRING @@ -314,10 +314,6 @@  ;;; SLIB:EVAL is single argument eval using the top-level (user) environment.  (define (slib:eval form) (eval form scheme-env)) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -354,7 +350,6 @@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args diff --git a/transact.scm b/transact.scm index 3533aa3..5dfbeb6 100644 --- a/transact.scm +++ b/transact.scm @@ -1,5 +1,5 @@  ;;; "transact.scm" Interface to programs. -; Copyright 1997, 1998, 2002 Aubrey Jaffer +; Copyright 1997, 1998, 2002, 2008 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 @@ -90,7 +90,7 @@  	  "~$" (substring file (min 2 (max 0 (- filen 10))) filen)))))  (define (word-lock:certificate lockpath) -  (define iport (and (file-exists? lockpath) (open-file lockpath 'rb))) +  (define iport (open-file lockpath 'rb))    (and     iport     (call-with-open-ports @@ -121,6 +121,7 @@  	       (string-set! name idx (read-char iport))  	       (set! pos (+ 1 pos)))  ;;; read expanded names (interleaved with nul) +;;; I think this is probably UTF-16.  	     (let* ((name2 (and (discard (- 54 pos)) (read-field)))  		    (company (and (discard 6) (read-field)))  		    (name3 (and (discard 8) (read-field)))) @@ -167,36 +168,38 @@  	(hostname (substring email (+ 1 at) (string-length email)))  	(oport (open-file lockpath 'wb)))      (define userlen (string-length user)) -    (and oport (call-with-open-ports -		oport (lambda (oport) -			(define pos 1) -			(define (nulls cnt) -			  (write-bytes (make-bytes cnt 0) cnt oport) -			  (set! pos (+ cnt pos))) -			(define (write-field field) -			  (define len (string-length field)) -			  (write-byte len oport) -			  (write-byte 0 oport) -			  (set! pos (+ 2 pos)) -			  (do ((idx 0 (+ 1 idx))) -			      ((>= idx len)) -			    (write-char (string-ref field idx) oport) -			    (write-byte 0 oport) -			    (set! pos (+ 2 pos)))) -			(write-byte userlen oport) -			(display user oport) (set! pos (+ userlen pos)) +    (and oport +	 (call-with-open-ports +	  oport (lambda (oport) +		  (define pos 1) +		  (define (nulls cnt) +		    (write-bytes (make-bytes cnt 0) cnt oport) +		    (set! pos (+ cnt pos))) +		  (define (write-field field) +		    (define len (string-length field)) +		    (write-byte len oport) +		    (write-byte 0 oport) +		    (set! pos (+ 2 pos)) +		    (do ((idx 0 (+ 1 idx))) +			((>= idx len)) +		      (write-char (string-ref field idx) oport) +		      (write-byte 0 oport) +		      (set! pos (+ 2 pos)))) +		  (write-byte userlen oport) +		  (display user oport) (set! pos (+ userlen pos))  ;;; write expanded names (interleaved with nul) -			(nulls (- 54 pos)) -			(write-field user) -			(nulls 6) -			(write-field hostname) -			(nulls 8) -			(write-field user) -			(nulls (- 162 pos)) -			(and (not (eqv? 162 pos)) -			     (slib:error lockpath 'length pos '(not = 162))) -			(let ((certificate (word-lock:certificate lockpath))) -			  (and (equal? email certificate) email))))))) +		  (nulls (- 54 pos)) +		  (write-field user) +		  (nulls 6) +		  (write-field hostname) +		  (nulls 8) +		  (write-field user) +		  (nulls (- 162 pos)) +		  (if (not (eqv? 162 pos)) +		      (slib:error lockpath 'length pos '(not = 162))) +		  #t)) +	 (let ((certificate (word-lock:certificate lockpath))) +	   (and (equal? email certificate) email)))))  (define (emacs:lock! path email)    (define lockpath (emacs-lock:path path)) @@ -243,7 +246,8 @@    (let ((w-cert (word-lock:certificate w-path)))      (cond ((not w-cert) #f)  	  ((not certificate) #f) -	  ((equal? w-cert certificate)	; my word certificate +	  ((equal? w-cert certificate)	; word certificate only +					; (emacs certificate is longer)  	   (delete-file w-path))  	  ((not (eqv? 0 (substring? w-cert certificate)))  	   ;; word certificate doesn't match emacs certificate @@ -260,6 +264,44 @@  				 (delete-file w-path)))))  	       (else (delete-file w-path)))))))) +;;@args path prefix +;;@args path +;;@1 must be a string naming a file.  Optional argument @2 is a string +;;printed before each line of the message.  @0 prints to +;;@code{(current-error-port)} that @1 is locked for writing and lists +;;its lock-files. +;; +;;@example +;;(describe-file-lock "my.txt" ">> ") +;;@print{} +;;>> "my.txt" is locked for writing by 'luser@@no.com.4829:1200536423' +;;>> (lock files are "~$my.txt" and ".#my.txt") +;;@end example +(define (describe-file-lock path . prefix) +  (define cep (current-error-port)) +  (define w-path (word-lock:path path)) +  (define e-path (emacs-lock:path path)) +  (set! prefix (if (null? prefix) "" (car prefix))) +  (let ((w-cert (word-lock:certificate w-path)) +	(e-cert (emacs-lock:certificate e-path))) +    (cond ((or (file-exists? w-path) (file-exists? e-path)) +	   (fprintf cep +		    "%s\"%s\" is locked for writing by '%s'\\n" +		    prefix +		    path +		    (or e-cert w-cert '??))) +	  (else +	   (fprintf cep +		    "%s\"%s\" is not locked for writing\\n" +		    prefix +		    path))) +    (if e-cert +	(fprintf cep "%s(lock files are \"%s\" and \"%s\")\\n" +		 prefix w-path e-path) +	(fprintf cep "%s(lock file is \"%s\")\\n" +		 prefix w-path)) +    (force-output cep))) +  ;;;@subsubheading File Transactions  (define (emacs:backup-number path) @@ -395,67 +437,19 @@  (define (windows:user-email-address user hostname)    (define compname (getenv "COMPUTERNAME")) ;without domain    (define workgroup #f) -  (define netdir -    (or (getenv "windir") -	(getenv "winbootdir") -	(and (getenv "SYSTEMROOT") -	     (string-append (getenv "SYSTEMROOT") "\\system32")) -	"C:\\windows"))    (call-with-tmpnam     (lambda (tmp) -     (define (net . cmd) -       (zero? (system (apply string-append -			     (or netdir "") -			     (if netdir "\\" "") -			     "NET " cmd)))) -     (and (zero? (system (string-append -			  (or netdir "") -			  (if netdir "\\" "") -			  "IPCONFIG /ALL > " tmp " "))) -	  (file-exists? tmp)	    ;(print tmp '=) (display-file tmp) -	  (call-with-input-file tmp -	    (lambda (port) -	      (find-string-from-port? "Host Name" port) -	      (fscanf port " %*[. ]: %s" hostname))) -	  (delete-file tmp)) -     (and (net "START /LIST >" tmp) +     (and (zero? (system (string-append "net config workstation >" tmp)))  	  (file-exists? tmp)  	  (not (eof-object? (call-with-input-file tmp read-char))) -	  (cond ((call-with-input-file tmp -		   (lambda (port) -		     (find-string-from-port? "o network servic" port))) -		 (and (net "CONFIG /YES >" tmp) (net "STOP /YES"))) -		(else (net "CONFIG /YES >" tmp)))  	  (call-with-input-file tmp  	    (lambda (port)  	      (do ((line (read-line port) (read-line port)))  		  ((eof-object? line)) -		(sscanf line " Workstation root directory %s" netdir) +		(sscanf line " User name %s" user)  		(sscanf line " Computer name \\\\%s" compname) -		(sscanf line " Workstation Domain %s" workgroup) -		(sscanf line " Workgroup %s" workgroup) -		(sscanf line " User name %s" user))))))) - -  (and netdir (not (and user hostname)) -       (set! netdir (string-append netdir "\\system.ini")) -       (file-exists? netdir) -       (call-with-input-file netdir -	 (lambda (port) (and (find-string-from-port? "[DNS]" port) -			     (read-line port) ;past newline -			     (do ((line (read-line port) (read-line port))) -				 ((not (and (string? line) -					    (string-index line #\=)))) -			       (sscanf line "HostName=%s" compname) -			       (sscanf line "DomainName=%s" workgroup))))) -       (not user) -       (call-with-input-file netdir -	 (lambda (port) (and (find-string-from-port? "[Network]" port) -			     (read-line port) ;past newline -			     (do ((line (read-line port) (read-line port))) -				 ((not (and (string? line) -					    (string-index line #\=)))) -			       (sscanf line "UserName=%s" user)))))) - +		;; Don't want "DNS" from "Workstation Domain DNS Name" +		(sscanf line " Workstation domain %s" workgroup)))))))    (string-append (or user "John_Doe") "@"  		 (if (and compname (not hostname))  		     (string-append compname "." (or workgroup "localnet")) diff --git a/transact.txi b/transact.txi index 4dec378..10de2ca 100644 --- a/transact.txi +++ b/transact.txi @@ -81,6 +81,24 @@ If @var{path} is locked with @var{certificate}, then @code{file-unlock!} removes  @samp{#f}.  @end deffn + +@defun describe-file-lock path prefix + + +@defunx describe-file-lock path +@var{path} must be a string naming a file.  Optional argument @var{prefix} is a string +printed before each line of the message.  @code{describe-file-lock} prints to +@code{(current-error-port)} that @var{path} is locked for writing and lists +its lock-files. + +@example +(describe-file-lock "my.txt" ">> ") +@print{} +>> "my.txt" is locked for writing by 'luser@@no.com.4829:1200536423' +>> (lock files are "~$my.txt" and ".#my.txt") +@end example +@end defun +  @subsubheading File Transactions diff --git a/umbscheme.init b/umbscheme.init index 37cd4f2..b2f6891 100644 --- a/umbscheme.init +++ b/umbscheme.init @@ -28,11 +28,13 @@  ;;; (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) -  (case (software-type) -    ((unix)	 "/usr/lib/umb-scheme/") -    ((vms)	"scheme$src:") -    ((ms-dos)	"C:\\scheme\\"))) +(define implementation-vicinity +  (let ((impl-path +	 (case (software-type) +	   ((unix) "/usr/lib/umb-scheme/") +	   ((vms) "scheme$src:") +	   ((ms-dos) "C:\\scheme\\")))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -91,8 +93,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -132,6 +133,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -175,7 +177,7 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -306,11 +308,7 @@         (string-append "slib:G" (number->string *gensym-counter*))))))  (define defmacro:eval slib:eval) -(define defmacro:load load) - -(define (defmacro:load <pathname>) -  (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" +(define defmacro:load slib:load-source)  (define slib:warn    (lambda args diff --git a/version.txi b/version.txi index 065b02c..29ac912 100644 --- a/version.txi +++ b/version.txi @@ -1,2 +1,2 @@ -@set SLIBVERSION 3a5 -@set SLIBDATE November 2007 +@set SLIBVERSION 3b1 +@set SLIBDATE February 2008 @@ -55,11 +55,15 @@  ;;; (implementation-vicinity) should be defined to be the pathname of  ;;; the directory where any auxillary files to your Scheme  ;;; implementation reside. -(define (implementation-vicinity) -  (case (software-type) -    ((unix)	 "/usr/local/src/scheme/") -    ((vms)	"scheme$src:") -    ((ms-dos)	"C:\\scheme\\"))) +(define implementation-vicinity +  (let ((impl-path +	 (or (getenv "VSCM_IMPLEMENTATION_PATH") +	     (case (software-type) +	       ((unix) "/usr/local/src/scheme/") +	       ((vms) "scheme$src:") +	       ((ms-dos) "C:\\scheme\\") +	       (else ""))))) +    (lambda () impl-path)))  ;;; (library-vicinity) should be defined to be the pathname of the  ;;; directory where files of Scheme library functions reside. @@ -123,8 +127,7 @@  ;@  (define sub-vicinity    (case (software-type) -    ((vms) (lambda -	       (vic name) +    ((vms) (lambda (vic name)  	     (let ((l (string-length vic)))  	       (if (or (zero? (string-length vic))  		       (not (char=? #\] (string-ref vic (- l 1))))) @@ -164,6 +167,7 @@  					;(SLIB:LOAD-COMPILED "filename")  	vicinity  	srfi-59 +	srfi-96  		       ;; Scheme report features     ;; R5RS-compliant implementations should provide all 9 features. @@ -171,7 +175,7 @@  ;;;	eval				;R5RS two-argument eval  	values				;R5RS multiple values  ;;;	dynamic-wind			;R5RS dynamic-wind -;;;	macro				;R5RS high level macros +	macro				;R5RS high level macros  	delay				;has DELAY and FORCE  	multiarg-apply			;APPLY can take more than 2 args.  ;;;	char-ready? @@ -206,7 +210,7 @@  			;; Other common features -;;;	srfi				;srfi-0, COND-EXPAND finds all srfi-* +;;;	srfi-0				;srfi-0, COND-EXPAND finds all srfi-*  ;;;	sicp				;runs code from Structure and  					;Interpretation of Computer  					;Programs by Abelson and Sussman. @@ -387,10 +391,6 @@  ;;; SLIB:EVAL is single argument eval using the top-level (user) environment.  (define slib:eval eval) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -(define macro:load load) -  (define *defmacros*    (list (cons 'defmacro  	      (lambda (name parms . body) @@ -427,7 +427,6 @@  (define (defmacro:load <pathname>)    (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm"  (define slib:warn    (lambda args @@ -486,4 +485,12 @@  ;;; At this point SLIB:LOAD must be able to load SLIB files.  (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) +  (slib:load (in-vicinity (library-vicinity) "require")) @@ -1,4 +1,4 @@ -;;;  "wttrtst.scm" Test Weight balanced trees		-*-Scheme-*- +;;;  "wttest.scm" Test Weight balanced trees		-*-Scheme-*-  ;;;  Copyright (c) 1993-1994 Stephen Adams  ;;;  ;;; Copyright (c) 1993-94 Massachusetts Institute of Technology diff --git a/xml-parse.scm b/xml-parse.scm index 6056220..3c02942 100644 --- a/xml-parse.scm +++ b/xml-parse.scm @@ -1,4 +1,4 @@ -;;;;"xml-parse" XML parsing and conversion to SXML (Scheme-XML) +;;;;"xml-parse.scm" XML parsing and conversion to SXML (Scheme-XML)  ;;; Copyright (C) 2007 Aubrey Jaffer  ;;; 2007-04 jaffer: demacrofied from public-domain SSAX 5.1  ;  | 
