178 lines
6.0 KiB
Plaintext
178 lines
6.0 KiB
Plaintext
PLT Scheme support for _SRFIs_ (`surfies')
|
|
==========================================
|
|
|
|
This is an implementation of (some) SRFIs to the PLT Scheme
|
|
system. It is intended for PLT Scheme v300+.
|
|
|
|
If you need more information on SRFI, please visit:
|
|
|
|
http://srfi.schemers.org/
|
|
|
|
Loading
|
|
-------
|
|
|
|
To load a SRFI with name conflicts (currently SRFIs 1, 5,
|
|
13, 17, 19, 43, 45, 48, 61, 63, 69 and 87) in a module,
|
|
please see the note below.
|
|
|
|
To load a SRFI, use the following form:
|
|
|
|
(require srfi/N)
|
|
|
|
if you know the number of the SRFI you want to load. This
|
|
is the preferred method, or this one:
|
|
|
|
(require srfi/N/NAME)
|
|
|
|
if you know the `informative name' of the SRFI.
|
|
|
|
N, is a number corresponding to the sub-collection that
|
|
holds a particular SRFI, and NAME is a more descriptive
|
|
name we assigned to the main file in which the SRFI is
|
|
defined. For instance, to load SRFI-34 you have to do
|
|
either one of:
|
|
|
|
(require srfi/34)
|
|
|
|
or,
|
|
|
|
(require srfi/34/exception)
|
|
|
|
NOTE on SRFIs with name conflicts
|
|
---------------------------------
|
|
|
|
Certain SRFIs (currently SRFIs 1, 5, 13, 17, 19, 43, 45,
|
|
48, 61, 63, 69 and 87) provide names which conflict with
|
|
names provided by the 'mzscheme' language. Attempting to
|
|
require one of these SRFIs in a module written in the
|
|
'mzscheme' language will result in an error.
|
|
|
|
To address this problem, the PLT implementations of these
|
|
SRFIs provide a different module which renames the
|
|
problematic exports to avoid these conflicts. For SRFI 1,
|
|
this library is called list.ss, and should be required like
|
|
this:
|
|
|
|
(require srfi/1/list)
|
|
|
|
which supplies the colliding names with a prefix of 's:'
|
|
(e.g. "s:map", "s:reverse!") and is therefore suitable for
|
|
requires in a module.
|
|
|
|
For SRFI 19, this library is called time.ss, and should be
|
|
required like this:
|
|
|
|
(require srfi/19/time)
|
|
|
|
which supplies the colliding names with a prefix of 'srfi:'
|
|
(e.g. "srfi:date?", "srfi:date-second") and is therefore
|
|
suitable for requires in a module.
|
|
|
|
Supported SRFIs
|
|
---------------
|
|
|
|
Here is a table that has an SRFI, file name, and the
|
|
sub-collection number of the already ported SRFIs:
|
|
|
|
SRFI File name Sub-collection
|
|
======== =========== ==============
|
|
|
|
SRFI-1 list.ss 1
|
|
SRFI-2 and-let.ss 2
|
|
SRFI-4(*1) 4.ss
|
|
SRFI-5 let.ss 5
|
|
SRFI-6(+) 6.ss
|
|
SRFI-7 program.ss 7
|
|
SRFI-8 receive.ss 8
|
|
SRFI-9 record.ss 9
|
|
SRFI-11(+) 11.ss
|
|
SRFI-13 string.ss 13
|
|
SRFI-14 char-set.ss 14
|
|
SRFI-16(+) 16.ss
|
|
SRFI-17 set.ss 17
|
|
SRFI-18(++) 18.ss
|
|
SRFI-19(*2) time.ss 19
|
|
SRFI-23(+) 23.ss
|
|
SRFI-25 array.ss 25
|
|
SRFI-26 cut.ss 26
|
|
SRFI-27 random-bits.ss 27
|
|
SRFI-28(+) 28.ss
|
|
SRFI-29 localization.ss 29
|
|
SRFI-30(+) 30.ss
|
|
SRFI-31 rec.ss 31
|
|
SRFI-32 sort.scm 32
|
|
SRFI-34 exception.ss 34
|
|
SRFI-35 condition.ss 35
|
|
SRFI-38(+) 38.ss
|
|
SRFI-39(+) 39.ss
|
|
SRFI-40 stream.ss 40
|
|
SRFI-42 comprehensions.ss 42
|
|
SRFI-43 vector-lib.ss 43
|
|
SRFI-45(*3) lazy.ss 45
|
|
SRFI-48 format.ss 48
|
|
SRFI-54 cat.ss 54
|
|
SRFI-57 records.ss 57
|
|
SRFI-59 vicinity.ss 59
|
|
SRFI-60 60.ss 60
|
|
SRFI-61(+) 61.ss
|
|
SRFI-63 63.ss 63
|
|
SRFI-64 testing.ss 64
|
|
SRFI-66 66.ss 66
|
|
SRFI-67 compare.ss 67
|
|
SRFI-69 hash.ss 69
|
|
SRFI-71 letvalues.ss 71
|
|
SRFI-74 74.ss 74
|
|
SRFI-78 check.ss 78
|
|
SRFI-86 86.ss 86
|
|
SRFI-87 case.ss 87
|
|
|
|
|
|
Notes:
|
|
,--------------------
|
|
| + Supported by the core of PLT Scheme
|
|
`--------------------
|
|
|
|
,--------------------
|
|
| ++ Partially supported by the core of PLT Scheme
|
|
`--------------------
|
|
|
|
,--------------------
|
|
| *1 The functionality is all part of mzscheme available
|
|
| via (lib"foreign.ss"), the only missing part is the i/o
|
|
| syntax.
|
|
`--------------------
|
|
|
|
,--------------------
|
|
| *2 The time module does not export its time structure
|
|
| (you have to use the time-* procedures.) It renames all
|
|
| the date-* accessors to tm:date-* so that you won't get
|
|
| errors when including this code in other modules. Care
|
|
| most be taken NOT to confuse the internal date structure
|
|
| with the PLT Scheme one, they are not the same, and all
|
|
| procedures from this library expect the former.
|
|
`--------------------
|
|
|
|
,--------------------
|
|
| *3 This port also provides promise? / srfi-45-promise?.
|
|
`--------------------
|
|
|
|
|
|
That's it for now. If you have ported other SRFIs, and
|
|
want them added to this library, please let us know:
|
|
|
|
+ the main PLT Scheme discussion list:
|
|
|
|
PLT Scheme <users@racket-lang.org>
|
|
|
|
+ the Schematics-people @ sourceforge.net. We are NOT members
|
|
of the PLT group, the Schematics project is devoted to create
|
|
code for PLT Scheme ONLY, though. This SRFI port effort will
|
|
try to be developed, tested, and debugged @ sourceforge, and
|
|
periodically inserted to PLT Scheme. Please, do join us!:
|
|
|
|
http://schematics.sourceforge.net
|
|
|
|
(we don't have separate mailing lists @ sourceforge. We have a
|
|
couple of forums there, though. Of course, you can send us mail
|
|
directly, or... well, we read the PLT Scheme mailing list.)
|