259 lines
14 KiB
HTML
259 lines
14 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<title>SRFI documents inside PLT</title>
|
|
</head>
|
|
|
|
<body>
|
|
<h1>SRFI documents inside PLT</h1>
|
|
|
|
<h1>Scheme Requests for Implementation</h1>
|
|
|
|
<p>The "Scheme Requests for Implementation" (<em>SRFI</em>) process
|
|
is a new approach to helping Scheme users to write portable and
|
|
yet useful code. It is a forum for people interested in
|
|
coordinating libraries and other additions to the Scheme language
|
|
between implementations.</p>
|
|
|
|
<p>This manual includes the <em style="font-style: normal">original</em> documentation of all
|
|
the SRFIs already ported to PLT Scheme. For more information on
|
|
the SRFI process, please <a href="http://srfi.schemers.org">follow
|
|
this link</a>.</p>
|
|
|
|
|
|
<h2>Loading</h2>
|
|
|
|
<p>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,<br>
|
|
please see the note below.<br>
|
|
<br>
|
|
To load a SRFI, use the following form:<br>
|
|
<br>
|
|
(require (lib "N.ss" "srfi"))<br>
|
|
<br>
|
|
if you know the number of the SRFI you want to load. This is the preferred
|
|
method, or this one:<br>
|
|
<br>
|
|
(require (lib "NAME.ss" "srfi" "N"))<br>
|
|
<br>
|
|
if you know the `informative name' of the SRFI.<br>
|
|
<br>
|
|
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:<br>
|
|
<br>
|
|
(require (lib "34.ss" "srfi"))<br>
|
|
<br>
|
|
or,<br>
|
|
<br>
|
|
(require (lib "exception.ss" "srfi" "34"))<br>
|
|
<br>
|
|
¡¡</p>
|
|
|
|
|
|
<p>
|
|
<b><font color="#FF0000">NOTE on SRFIs with name conflicts</font><br>
|
|
</b><br>
|
|
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.<br>
|
|
<br>
|
|
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:<br>
|
|
<br>
|
|
(require (lib "list.ss" "srfi" "1"))<br>
|
|
<br>
|
|
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.<br>
|
|
<br>
|
|
For SRFI 19, this library is called time.ss, and should be required like
|
|
this:<br>
|
|
<br>
|
|
(require (lib "time.ss" "srfi" "19"))<br>
|
|
<br>
|
|
which supplies the colliding names with a prefix of 'srfi:' (e.g.
|
|
"srfi:date?", "srfi:date-second") and is therefore<br>
|
|
suitable for requires in a module.<br>
|
|
<br>
|
|
¡¡</p>
|
|
|
|
|
|
<p>
|
|
<b>Supported SRFIs</b><br>
|
|
¡¡</p>
|
|
|
|
|
|
<p>SRFI File
|
|
name
|
|
Sub-collection<br>
|
|
SRFI-1 list.ss
|
|
1<br>
|
|
SRFI-2 and-let.ss
|
|
2<br>
|
|
SRFI-4(*1) 4.ss<br>
|
|
SRFI-5 let.ss
|
|
5<br>
|
|
SRFI-6(+) 6.ss<br>
|
|
SRFI-7 program.ss
|
|
7<br>
|
|
SRFI-8 receive.ss
|
|
8<br>
|
|
SRFI-9 record.ss
|
|
9<br>
|
|
SRFI-11(+) 11.ss<br>
|
|
SRFI-13 string.ss
|
|
13<br>
|
|
SRFI-14 char-set.ss
|
|
14<br>
|
|
SRFI-16(+) 16.ss<br>
|
|
SRFI-17 set.ss
|
|
17<br>
|
|
SRFI-19(*2) time.ss
|
|
19<br>
|
|
SRFI-23(+) 23.ss<br>
|
|
SRFI-25 array.ss
|
|
25<br>
|
|
SRFI-26 cut.ss
|
|
26<br>
|
|
SRFI-27 random-bits.ss
|
|
27<br>
|
|
SRFI-28(+) 28.ss<br>
|
|
SRFI-29 localization.ss
|
|
29<br>
|
|
SRFI-30(+) 30.ss<br>
|
|
SRFI-31 rec.ss
|
|
31<br>
|
|
SRFI-32 sort.scm
|
|
32<br>
|
|
SRFI-34 exception.ss
|
|
34<br>
|
|
SRFI-35 condition.ss
|
|
35<br>
|
|
SRFI-38(+) 38.ss<br>
|
|
SRFI-39(+) 39.ss<br>
|
|
SRFI-40 stream.ss
|
|
40<br>
|
|
SRFI-42 comprehensions.ss
|
|
42<br>
|
|
SRFI-43 vector-lib.ss
|
|
43<br>
|
|
SRFI-45(*3) lazy.ss
|
|
45<br>
|
|
SRFI-48 format.ss
|
|
48<br>
|
|
SRFI-54 cat.ss
|
|
54<br>
|
|
SRFI-57 records.ss
|
|
57<br>
|
|
SRFI-59 vicinity.ss
|
|
59<br>
|
|
SRFI-60 60.ss
|
|
60<br>
|
|
SRFI-61 cond.ss
|
|
61<br>
|
|
SRFI-62(+)<br>
|
|
SRFI-63 63.ss
|
|
63<br>
|
|
SRFI-64 testing.ss
|
|
64<br>
|
|
SRFI-66 66.ss
|
|
66<br>
|
|
SRFI-67 compare.ss
|
|
67<br>
|
|
SRFI-69 hash.ss
|
|
69<br>
|
|
SRFI-71 letvalues.ss
|
|
71<br>
|
|
SRFI-74 74.ss
|
|
74<br>
|
|
SRFI-78 check.ss
|
|
78<br>
|
|
SRFI-86 86.ss
|
|
86<br>
|
|
SRFI-87 case.ss
|
|
87<br>
|
|
¡¡</p>
|
|
|
|
|
|
<p><b>Notes:</b></p>
|
|
|
|
|
|
<p>+ Supported by the core of PLT Scheme<br>
|
|
<br>
|
|
*1 The functionality is all part of mzscheme available
|
|
via (lib"foreign.ss"), the only missing part is the i/o
|
|
syntax.<br>
|
|
<br>
|
|
*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.<br>
|
|
<br>
|
|
*3 This port also provides promise? / srfi-45-promise?.<br>
|
|
¡¡</p>
|
|
|
|
|
|
<h2>Ported SRFIs: original documents</h2>
|
|
|
|
<ul>
|
|
<li><a href="srfi-1.html">SRFI 1: List Library</a></li>
|
|
<li><a href="srfi-2.html">SRFI 2: AND-LET*: an AND with local bindings, a guarded LET* special form</a></li>
|
|
<li><a href="srfi-4.html">SRFI 4: Homogeneous numeric vector datatypes</a></li>
|
|
<li><a href="srfi-5.html">SRFI 5: A compatible let form with signatures and rest arguments</a></li>
|
|
<li><a href="srfi-6.html">SRFI 6: Basic String Ports</a></li>
|
|
<li><a href="srfi-7.html">SRFI 7: Feature-based program configuration language</a></li>
|
|
<li><a href="srfi-8.html">SRFI 8: RECEIVE: Binding to multiple values</a></li>
|
|
<li><a href="srfi-9.html">SRFI 9: Defining Record Types</a></li>
|
|
<li><a href="srfi-11.html">SRFI 11: Syntax for receiving multiple values</a></li>
|
|
<li><a href="srfi-13.html">SRFI 13: String Libraries</a></li>
|
|
<li><a href="srfi-14.html">SRFI 14: Character-set Library</a></li>
|
|
<li><a href="srfi-16.html">SRFI 16: Syntax for procedures of variable arity</a></li>
|
|
<li><a href="srfi-17.html">SRFI 17: Generalized set!</a></li>
|
|
<!-- SRFI 18 is partially supported. I'm not moving the document so as not to give false hopes! -->
|
|
<li><a href="srfi-19.html">SRFI 19: Time Data Types and Procedures</a></li>
|
|
<li><a href="srfi-23.html">SRFI 23: Error reporting mechanism</a></li>
|
|
<li><a href="srfi-25.html">SRFI 25: Multi-dimensional Array Primitives</a></li>
|
|
<li><a href="srfi-26.html">SRFI 26: Notation for Specializing Parameters without Currying</a></li>
|
|
<li><a href="srfi-27.html">SRFI 27: Sources of Random Bits</a></li>
|
|
<li><a href="srfi-28.html">SRFI 28: Basic Format Strings</a></li>
|
|
<li><a href="srfi-29.html">SRFI 29: Localization</a></li>
|
|
<li><a href="srfi-30.html">SRFI 30: Nested Multi-line Comments</a></li>
|
|
<li><a href="srfi-31.html">SRFI 31: A special form rec for recursive evaluation</a></li>
|
|
<li><a href="srfi-34.html">SRFI 34: Exception Handling for Programs</a></li>
|
|
<li><a href="srfi-35.html">SRFI 35: Conditions</a></li>
|
|
<li><a href="srfi-38.html">SRFI 38: External Representation for Data With Shared Structure</a></li>
|
|
<li><a href="srfi-39.html">SRFI 39: Parameter objects</a></li>
|
|
<li><a href="srfi-40.html">SRFI 40: A Library of Streams</a></li>
|
|
<li><a href="srfi-42.html">SRFI 42: Eager Comprehensions</a></li>
|
|
<li><a href="srfi-43.html">SRFI 43: Vector Library</a></li>
|
|
<li><a href="srfi-45.html">SRFI 45: Primitives for Expressing Iterative Lazy Algorithms</a></li>
|
|
<li><a href="srfi-48.html">SRFI 48: Intermediate Format Strings</a></li>
|
|
<li><a href="srfi-54.html">SRFI 54: Formatting</a></li>
|
|
<li><a href="srfi-57.html">SRFI 57: Records</a></li>
|
|
<li><a href="srfi-59.html">SRFI 59: Vicinity</a></li>
|
|
<li><a href="srfi-60.html">SRFI 60: Integers as Bits</a></li>
|
|
<li><a href="srfi-61.html">SRFI 61: A more general cond clause</a></li>
|
|
<li><a href="srfi-62.html">SRFI 62: S-expression comments</a></li>
|
|
<li><a href="srfi-63.html">SRFI 63: Homogeneous and Heterogeneous Arrays</a></li>
|
|
<li><a href="srfi-64.html">SRFI 64: A Scheme API for test suites</a></li>
|
|
<li><a href="srfi-66.html">SRFI 66: Octet Vectors</a></li>
|
|
<li><a href="srfi-67/srfi-67.html">SRFI 67: Compare Procedures</a></li>
|
|
<li><a href="srfi-69.html">SRFI 69: Basic hash tables</a></li>
|
|
<li><a href="srfi-71.html">SRFI 71: Extended LET-syntax for multiple values</a></li>
|
|
<li><a href="srfi-74.html">SRFI 74: Octet-Addressed Binary Blocks</a></li>
|
|
<li><a href="srfi-78.html">SRFI 78: Lightweight testing</a></li>
|
|
<li><a href="srfi-86.html">SRFI 86: MU and NU simulating VALUES &
|
|
CALL-WITH-VALUES, and their related LET-syntax</a></li>
|
|
<li><a href="srfi-87.html">SRFI 87: => in case clauses</a></li>
|
|
</ul>
|
|
|
|
</body>
|
|
</html>
|