source: project/release/3/procedure-surface/tags/1.2.0/procedure-surface.html @ 12014

Last change on this file since 12014 was 12014, checked in by Kon Lovett, 11 years ago

Chgd to "new" arg order for 'make-dict'.

File size: 22.2 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<!-- Generated by eggdoc Revision: 1.20  -->
3<html>
4<head>
5<title>Eggs Unlimited - procedure-surface</title><style type="text/css"> <!--
6      CODE {
7            color: #666666;
8          }
9/*   DT.definition EM { font-weight: bold; font-style: normal; } */
10
11     DT.definition { 
12                   background: #eee;
13                   color: black;
14                   padding: 0.2em 1em 0.2em 0.7em;
15                   margin-left: 0.2em;
16border: 1px solid #bbc;
17                   font-family: "Andale Mono", monospace;
18                   /* font-size: 1.2em; */
19                   
20                 }
21     DD {
22                   margin-top: 0.8em;
23                   margin-bottom: 0.8em;
24     }
25     DIV.subsection {
26                    border-top: 1px solid #448;
27                    padding-left: 1em;
28                    margin-bottom: 1.2em;
29     }
30     DIV.subsubsection {
31                    border-top: 1px dotted #99c;
32                    /* border-left: 1px solid #99c; */
33                    padding-left: 1em;
34                    margin-bottom: 1.2em;
35     }
36     DIV.subsubsubsection {
37                    border-top: 1px solid #ddf;
38                    padding-left: 1em;
39                    margin-bottom: 1.2em;
40     }
41
42         DIV.section {
43                 margin-bottom: 1.5em;
44         }
45         a:link {
46                 color: #336;
47         }
48         a:visited { color: #666; }
49         a:active  { color: #966; }
50         a:hover   { color: #669; }
51         body { margin: 0; padding: 0; background: #fff; color: #000; font: 9pt "Lucida Grande", "Verdana", sans-serif; }
52         H2 {
53                 background: #336;
54                 color: #fff;
55                 padding-top: 0.5em;
56                 padding-bottom: 0.5em;
57                 padding-left: 16px;
58                 margin: 0 0 1em 0;
59        }
60        UL LI {
61                list-style: none;
62        }
63        TT {
64                font-family: "Andale Mono", monospace;
65                /* font-size: 1.2em; */
66        }
67        H3 {
68                color: #113;
69                margin-bottom: 0.5em;
70        }
71        H4, H5, H6 {
72                color: #113;
73                margin-bottom: 1.0em;
74        }
75        H5 {
76                font-weight: normal;
77                font-style: italic;
78                font-size: 100%;
79                margin-top: 1.2em;
80        }
81        H6 {
82                font-weight: bold;
83                font-size: 85%;
84                margin-top: 1.2em;
85        }
86     DIV#eggheader {
87         text-align: center;
88                 float: right;
89                 margin-right: 2em;
90     }
91     DIV#header IMG {
92            /* display: block; margin-left: auto; margin-right: auto;  */
93            /* float: right; */
94            border: none;  /* firefox */
95     }
96     DIV#footer {
97                background: #bbd;
98                padding: 0.7em ;
99                border-top: 1px solid #cce;
100     }
101     DIV#footer hr {
102                display: none;
103     }
104     DIV#footer a {
105                float: left;
106     }
107     DIV#revision-history {
108         float: right;
109     }
110     
111     DIV#body {
112                 margin: 1em 1em 1em 16px;
113         }
114
115     DIV#examples PRE {
116       background: #eef;
117       padding: 0.1em;
118       border: 1px solid #aac;
119     }
120     PRE#license, DIV#examples PRE {
121       padding: 0.5em;
122     }
123     DIV#examples PRE {
124       /* font-size: 85%; */
125     }
126     PRE { font-family: "Andale Mono", monospace; }
127     TABLE {
128       background: #eef;
129       padding: 0.2em;
130       border: 1px solid #aac;
131       border-collapse: collapse;
132       width: 100%;
133     }
134     TABLE.symbol-table TD.symbol {
135          width: 15em;
136          font-family: "Andale Mono", monospace;
137          /* font-size: 1.2em; */
138     }
139     TH {
140       text-align: left;
141       border-bottom: 1px solid #aac;
142       padding: 0.25em 0.5em 0.25em 0.5em;
143     } 
144     TD { padding: 0.25em 0.5em 0.25em 0.5em; }
145     --></style></head>
146<body>
147<div id="header">
148<h2>procedure-surface</h2>
149<div id="eggheader"><a href="index.html">
150<img src="egg.jpg" alt="[Picture of an egg]" /></a></div></div>
151<div id="body">
152<div class="section">
153<h3>Description</h3>
154<p>Generic Programming Support</p></div>
155<div class="section">
156<h3>Author</h3>Kon Lovett</div>
157<div class="section">
158<h3>Requires</h3>
159<ul>
160<li><a href="lookup-table.html">lookup-table</a></li>
161<li><a href="misc-extn.html">misc-extn</a></li></ul></div>
162<div class="section">
163<h3>Usage</h3><tt>(require-extension procedure-surface)</tt></div>
164<div class="section">
165<h3>Download</h3><a href="procedure-surface.egg">procedure-surface.egg</a></div>
166<div class="section">
167<h3>Documentation</h3>
168<p>Warning - procedure surface is experimental!</p>
169<p>The procedure-surface egg provides a facility for generic programming in Scheme, similar in purpose to the &quot;structures&quot; egg. Unlike the normal pattern of use for &quot;structures&quot; this facility will delay loading of any library or extension until an actual binding is required. The use of a 'define' form as a procedure reference with 'make-procedure-means' is not supported, unlike the analogous 'structure' from &quot;structures&quot;.</p>
170<p>Odd names are used for parsimony. Read 'interface' for 'surface', and 'implementation' for 'means'.</p>
171<div class="subsection">
172<h4>Syntax Interface</h4>
173<dt class="definition"><strong>macro:</strong> (define-procedure-surface NAME PROC-SYM CONTRACT ... [KEY-ARG ...])</dt>
174<dd>
175<p>Sets the symbol <tt>NAME</tt> to the described procedure surface. Uses <tt>NAME</tt> as the keyword argument #:name for the surface. See 'make-procedure-surface' for argument descriptions.</p></dd>
176<dt class="definition"><strong>macro:</strong> (declare-procedure-means NAME SURFACE PROC-SYM PROC-REF ... [KEY-ARG ...])</dt>
177<dd>
178<p>Sets the symbol <tt>NAME</tt> to the described procedure surface means. See 'make-procedure-means' for argument descriptions.</p></dd>
179<dt class="definition"><strong>macro:</strong> (call-thru-procedure-means MEANS PROC-SYM [ARG ...])</dt>
180<dd>
181<p>Invoke the procedure identified by <tt>PROC-SYM</tt> in the <tt>MEANS</tt> with the <tt>ARG ...</tt> list.</p></dd>
182<dt class="definition"><strong>macro:</strong> (apply-thru-procedure-means MEANS PROC-SYM ARG ...)</dt>
183<dd>
184<p>Apply the procedure identified by <tt>PROC-SYM</tt> in the <tt>MEANS</tt> to the <tt>ARG ...</tt> list.</p></dd>
185<dt class="definition"><strong>macro:</strong> (let-procedure-means ([(PROC-SYM ...) MEANS] ...) BODY ...)</dt>
186<dd>
187<p>Bind the local symbol(s) <tt>PROC-SYM ...</tt> to the corresponding procedure(s) in the <tt>MEANS</tt> and evaluate the <tt>BODY</tt>.</p></dd>
188<dt class="definition"><strong>macro:</strong> (call/means MEANS PROC-SYM [ARG ...])</dt>
189<dd>
190<p>Abbreviation of 'call-thru-procedure-means'.</p></dd>
191<dt class="definition"><strong>macro:</strong> (apply/means MEANS PROC-SYM ARG ...)</dt>
192<dd>
193<p>Abbreviation of 'apply-thru-procedure-means'.</p></dd>
194<dt class="definition"><strong>macro:</strong> (let/means ([(PROC-SYM ...) MEANS] ...) BODY ...)</dt>
195<dd>
196<p>Abbreviation of 'let-procedure-means'.</p></dd></div>
197<div class="subsection">
198<h4>Direct Call Interface</h4>
199<dt class="definition"><strong>procedure:</strong> (make-procedure-signature IDENTIFIER CONTRACT)</dt>
200<dd>
201<p>Returns a procedure signature for <tt>IDENTIFIER</tt> with <tt>CONTRACT</tt>.</p>
202<p>The contract grammar is described below. Can be null, '(), for no contract.</p></dd>
203<dt class="definition"><strong>procedure:</strong> (procedure-signature? OBJECT)</dt>
204<dd>
205<p>Is <tt>OBJECT</tt> a procedure signature?</p></dd>
206<dt class="definition"><strong>procedure:</strong> (procedure-signature-identifier SIGNATURE)</dt>
207<dd>
208<p>Returns the procedure signature identifier of the <tt>SIGNATURE</tt>.</p></dd>
209<dt class="definition"><strong>procedure:</strong> (procedure-signature-contract SIGNATURE)</dt>
210<dd>
211<p>Returns the procedure signature contract of the <tt>SIGNATURE</tt>.</p></dd>
212<dt class="definition"><strong>procedure:</strong> (make-procedure-surface PROC-SYM CONTRACT ... [#:immutable #f] [#:name #f])</dt>
213<dd>
214<p>Creates and returns a procedure surface. A collection of procedure identifiers and contracts.</p><table class="symbol-table">
215<tr>
216<td class="symbol">immutable:</td>
217<td>A boolean. Immutable (#t) or mutable (#f).</td></tr>
218<tr>
219<td class="symbol">name:</td>
220<td>A symbol or string. The name of the surface. When missing a name of the form &quot;ps#&quot; will be created.</td></tr>
221<tr>
222<td class="symbol">PROC-SYM</td>
223<td>A symbol. The procedure identifier.</td></tr>
224<tr>
225<td class="symbol">CONTRACT</td>
226<td>A list. The source form of a procedure signature. The contract grammar is described below. null, '(), for no contract.</td></tr></table></dd>
227<dt class="definition"><strong>procedure:</strong> (procedure-surface? OBJECT)</dt>
228<dd>
229<p>Is the <tt>OBJECT</tt> a procedure surface?</p></dd>
230<dt class="definition"><strong>procedure:</strong> (procedure-surface-name SURFACE)</dt>
231<dd>
232<p>Returns the name, or names as list if composite, of the <tt>SURFACE</tt>.</p></dd>
233<dt class="definition"><strong>procedure:</strong> (procedure-surface-immutable? SURFACE)</dt>
234<dd>
235<p>Is the <tt>SURFACE</tt> immutable?</p></dd>
236<dt class="definition"><strong>procedure:</strong> (procedure-surface-mutable? SURFACE)</dt>
237<dd>
238<p>Is the <tt>SURFACE</tt> mutable?</p></dd>
239<dt class="definition"><strong>procedure:</strong> (procedure-surface-ref SURFACE PROC-SYM)</dt>
240<dd>
241<p>Returns the procedure signature of the <tt>SURFACE</tt>.</p></dd>
242<dt class="definition"><strong>procedure:</strong> (procedure-surface-set! SURFACE PROC-SYM CONTRACT ...)</dt>
243<dd>
244<p>Adds or updates procedure signatures in <tt>SURFACE</tt>.</p></dd>
245<dt class="definition"><strong>procedure:</strong> (procedure-surface-delete! SURFACE PROC-SYM)</dt>
246<dd>
247<p>Removes the procedure signature for <tt>PROC-SYM</tt> from <tt>SURFACE</tt>.</p></dd>
248<dt class="definition"><strong>procedure:</strong> (procedure-surface-&gt;alist SURFACE)</dt>
249<dd>
250<p>Returns a alist, (&lt;procedure-symbol&gt; . &lt;procedure-signature&gt;), from <tt>SURFACE</tt>.</p></dd>
251<dt class="definition"><strong>procedure:</strong> (make-composite-procedure-surface SURFACE ...)</dt>
252<dd>
253<p>Returns a procedure surface, the combination of <tt>SURFACE ...</tt> set. Should any surface be immutable then the composite is immutable.</p></dd>
254<dt class="definition"><strong>procedure:</strong> (composite-procedure-surface? SURFACE)</dt>
255<dd>
256<p>Is the <tt>SURFACE</tt> a composite?</p></dd>
257<dt class="definition"><strong>procedure:</strong> (make-procedure-means SURFACE PROC-SYM PROC-REF ... [#:immutable #f] [#:extension #f] [#:library #f] [#:pathname #f])</dt>
258<dd>
259<p>Supply procedures for the <tt>SURFACE</tt>.</p><table class="symbol-table">
260<tr>
261<td class="symbol">immutable:</td>
262<td>A boolean. Immutable (#t) or mutable (#f).</td></tr>
263<tr>
264<td class="symbol">extension:</td>
265<td>A symbol or string. The name of the extension.</td></tr>
266<tr>
267<td class="symbol">library:</td>
268<td>A symbol or string. The name of the library.</td></tr>
269<tr>
270<td class="symbol">pathname:</td>
271<td>A string. The absolute pathname of the extension or library. Required when the extension or library is not in the Chicken repository.</td></tr>
272<tr>
273<td class="symbol">PROC-SYM</td>
274<td>A symbol. The procedure identifier. Must match a procedure identifier from SURFACE.</td></tr>
275<tr>
276<td class="symbol">PROC-REF</td>
277<td>A boolean, symbol, or procedure. The procedure alias when a symbol. When boolean use the procedure identifier as the alias. Otherwise this should be a procedure.</td></tr></table></dd>
278<dt class="definition"><strong>procedure:</strong> (procedure-means? OBJECT)</dt>
279<dd>
280<p>Is the <tt>OBJECT</tt> a procedure surface?</p></dd>
281<dt class="definition"><strong>procedure:</strong> (procedure-means-immutable? MEANS)</dt>
282<dd>
283<p>Are the <tt>MEANS</tt> immutable?</p></dd>
284<dt class="definition"><strong>procedure:</strong> (procedure-means-mutable? MEANS)</dt>
285<dd>
286<p>Are the <tt>MEANS</tt> mutable?</p></dd>
287<dt class="definition"><strong>procedure:</strong> (procedure-means-alias MEANS PROC-SYM)</dt>
288<dd>
289<p>Returns the alias of <tt>PROC-SYM</tt> in <tt>MEANS</tt>.</p></dd>
290<dt class="definition"><strong>procedure:</strong> (procedure-means-ref MEANS PROC-SYM)</dt>
291<dd>
292<p>Returns the current binding of <tt>PROC-SYM</tt> in the <tt>MEANS</tt>, which maybe the unbound value.</p></dd>
293<dt class="definition"><strong>procedure:</strong> (procedure-means-closure MEANS PROC-SYM)</dt>
294<dd>
295<p>Forces a load, if necessary. Returns the current binding of <tt>PROC-SYM</tt> in the <tt>MEANS</tt>, which maybe the unbound value.</p></dd>
296<dt class="definition"><strong>procedure:</strong> (procedure-means-implements MEANS)</dt>
297<dd>
298<p>Returns the procedure surface, or a list of procedure surface when composite, that the <tt>MEANS</tt> implements.</p></dd>
299<dt class="definition"><strong>procedure:</strong> (procedure-means-complete? MEANS)</dt>
300<dd>
301<p>Are all procedures in the procedure surface(s) of the <tt>MEANS</tt> declared?</p></dd>
302<dt class="definition"><strong>procedure:</strong> (procedure-means-bound? MEANS)</dt>
303<dd>
304<p>Are all the procedures in the <tt>MEANS</tt> bound?</p></dd>
305<dt class="definition"><strong>procedure:</strong> (procedure-means-incompletes MEANS)</dt>
306<dd>
307<p>Returns an alist, (&lt;procedure identifier&gt; . &lt;procedure surface&gt;), of all procedures in the procedure surface(s) of the <tt>MEANS ...</tt> that are undeclared.</p></dd>
308<dt class="definition"><strong>procedure:</strong> (procedure-means-unbounds MEANS)</dt>
309<dd>
310<p>Returns an alist, (&lt;procedure-symbol&gt; . &lt;procedure-surface&gt;), of all the unbound procedures in <tt>MEANS</tt>.</p></dd>
311<dt class="definition"><strong>procedure:</strong> (procedure-means-incomplete-closure? MEANS PROC-SYM)</dt>
312<dd>
313<p>Is the procedure identified by <tt>PROC-SYM</tt> without a declaration in the <tt>MEANS</tt>?</p></dd>
314<dt class="definition"><strong>procedure:</strong> (procedure-means-&gt;alist MEANS)</dt>
315<dd>
316<p>Returns an alist, (&lt;procedure-symbol&gt; . &lt;procedure-alias/closure), from the <tt>MEANS</tt>.</p></dd>
317<dt class="definition"><strong>procedure:</strong> (procedure-means-set! MEANS PROC-SYM PROC-REF ...)</dt>
318<dd>
319<p>Adds or updates procedures for an existing <tt>MEANS</tt>.</p></dd>
320<dt class="definition"><strong>procedure:</strong> (procedure-means-delete! MEANS PROC-SYM)</dt>
321<dd>
322<p>Removes the procedure <tt>PROC-SYM</tt> from the <tt>MEANS</tt>.</p></dd>
323<dt class="definition"><strong>procedure:</strong> (procedure-means-load! MEANS)</dt>
324<dd>
325<p>Load of any libraries and extensions required by the <tt>MEANS</tt>.</p></dd>
326<dt class="definition"><strong>procedure:</strong> (make-composite-procedure-means MEANS ...)</dt>
327<dd>
328<p>Returns a procedure means, the combination of <tt>MEANS ...</tt> set. Should any means be immutable then the composite is immutable.</p></dd>
329<dt class="definition"><strong>procedure:</strong> (composite-procedure-means? MEANS)</dt>
330<dd>
331<p>Are the <tt>MEANS</tt> a composite?</p></dd>
332<dt class="definition"><strong>procedure:</strong> (procedure-unbound? PROCEDURE)</dt>
333<dd>
334<p>Is this surface means procedure loaded?</p></dd>
335<dt class="definition"><strong>procedure:</strong> (procedure-identifier-&gt;closure SYMBOL)</dt>
336<dd>
337<p>Returns the top level binding, if any, for the procedure named <tt>SYMBOL</tt>.</p></dd></div>
338<div class="subsection">
339<h4>Signature Types</h4>
340<p>The signature type system supports multiple-inheritance, via the 'extends' property.</p>
341<dt class="definition"><strong>procedure:</strong> (build-signature-type-builtins)</dt>
342<dd>
343<p>Creates all the builtin types.</p></dd>
344<dt class="definition"><strong>procedure:</strong> (make-signature-type NAME #!optional (EXTENDS #f) (PREDICATE #f) (SPECIALIZER #f))</dt>
345<dd>
346<p>Creates a new signature type object.</p><table class="symbol-table">
347<tr>
348<td class="symbol">NAME</td>
349<td>A symbol. The name of the new type.</td></tr>
350<tr>
351<td class="symbol">EXTENDS</td>
352<td>A symbol or list. The type(s) that the new type is extending.</td></tr>
353<tr>
354<td class="symbol">PREDICATE</td>
355<td>A procedure. Determines whether an arbitrary object is a value of the new type.</td></tr>
356<tr>
357<td class="symbol">SPECIALIZER</td>
358<td>A procedure. Determines whether a specialization for the new type is valid.</td></tr></table></dd>
359<dt class="definition"><strong>procedure:</strong> (signature-type? OBJECT)</dt>
360<dd>
361<p>Is <tt>OBJECT</tt> a signature type?</p></dd>
362<dt class="definition"><strong>procedure:</strong> (signature-extended-type? TYPE/NAME)</dt>
363<dd>
364<p>Does a type extend <tt>TYPE/NAME</tt>.</p></dd>
365<dt class="definition"><strong>procedure:</strong> (signature-leaf-type? TYPE/NAME)</dt>
366<dd>
367<p>Does <tt>TYPE/NAME</tt> not extend a type?</p></dd>
368<dt class="definition"><strong>procedure:</strong> (signature-type-a-kind-of? TYPE/NAME-SUB TYPE/NAME-SUPER)</dt>
369<dd>
370<p>Does <tt>TYPE/NAME-SUB</tt> extend <tt>TYPE/NAME-SUPER</tt>?</p>
371<p>The most distant ancestor of all Scheme types is 'object'. However, roots are not considered when determining the kind of relationship from an intermediate type. So to check if a type is a kind of 'object' do so directly.</p></dd>
372<dt class="definition"><strong>procedure:</strong> (signature-type-ref NAME)</dt>
373<dd>
374<p>Returns the signature type for <tt>NAME</tt>.</p></dd>
375<dt class="definition"><strong>procedure:</strong> (signature-type-name TYPE)</dt>
376<dd>
377<p>Returns the name of <tt>TYPE</tt>.</p></dd>
378<dt class="definition"><strong>procedure:</strong> (signature-type-predicate TYPE/NAME)</dt>
379<dd>
380<p>Returns the predicate for <tt>TYPE/NAME</tt>.</p></dd>
381<dt class="definition"><strong>procedure:</strong> (signature-type-specializer TYPE/NAME)</dt>
382<dd>
383<p>Returns the specializer for <tt>TYPE/NAME</tt>.</p></dd>
384<dt class="definition"><strong>procedure:</strong> (signature-type-extends TYPE/NAME)</dt>
385<dd>
386<p>Return a list of the types that <tt>TYPE/NAME</tt> extends.</p></dd>
387<dt class="definition"><strong>procedure:</strong> (signature-type-extension TYPE/NAME)</dt>
388<dd>
389<p>Return a list of the types that extend <tt>TYPE/NAME</tt>.</p></dd>
390<dt class="definition"><strong>procedure:</strong> (signature-type-delete! TYPE/NAME)</dt>
391<dd>
392<p>Remove the <tt>TYPE/NAME</tt>.</p></dd>
393<dt class="definition"><strong>procedure:</strong> (signature-type-replace! TYPE/NAME #!optional (NEW-NAME #f) (EXTENDS #f) (PREDICATE #f) (SPECIALIZER #f))</dt>
394<dd>
395<p>Replace the existing <tt>TYPE/NAME</tt> with a new definition.</p></dd>
396<dt class="definition"><strong>procedure:</strong> (make-signature-contract CONTRACT)</dt>
397<dd>
398<p>Validates the source form of a contract and returns the internal form.</p></dd></div>
399<div class="subsection">
400<h4>Procedure Signature Grammar</h4><table class="symbol-table">
401<tr>
402<td class="symbol">contract</td>
403<td>&lt;map&gt; | (or &lt;map&gt; ...)</td></tr>
404<tr>
405<td class="symbol">type</td>
406<td>&lt;symbol&gt; | &lt;specialization&gt;</td></tr>
407<tr>
408<td class="symbol">specialization</td>
409<td>&lt;map&gt; | (&lt;type&gt; [&lt;parameter&gt; ...]) | (or &lt;type&gt; ...)</td></tr>
410<tr>
411<td class="symbol">parameter</td>
412<td>&lt;object&gt;</td></tr>
413<tr>
414<td class="symbol">domain</td>
415<td>[&lt;type&gt; ...] [#!optional &lt;type&gt; ...] [#!rest list | (list &lt;type&gt; ...)] [#!key (&lt;keyword&gt; &lt;type&gt;) ...]</td></tr>
416<tr>
417<td class="symbol">range</td>
418<td>&lt;type&gt; | (values &lt;type&gt; ...)</td></tr>
419<tr>
420<td class="symbol">map</td>
421<td>(-&gt; &lt;domain&gt; &lt;range&gt; [&lt;throw&gt; ...])</td></tr>
422<tr>
423<td class="symbol">throw</td>
424<td>(signals &lt;exception&gt; ...) | (aborts &lt;exception&gt; ...)</td></tr>
425<tr>
426<td class="symbol">exception</td>
427<td>&lt;symbol&gt; | (&lt;symbol&gt; ...)</td></tr></table>
428<p>A &lt;map&gt; is a specialization of '-&gt;', the type of a procedure.</p>
429<p>'()' is a synonym of 'null' for this grammar.</p>
430<p>Example: (-&gt; (array (rank 2)) object (values integer complex vector object)) - a procedure (&lt;map&gt;) taking a matrix &amp; any object, returning 4 multiple values.</p>
431<div class="subsubsection">
432<h5>Builtin Types</h5>
433<ul>
434<li>object</li>
435<li>void</li>
436<li>structure</li>
437<li>boolean</li>
438<li>symbol</li>
439<li>keyword</li>
440<li>char</li>
441<li>string</li>
442<li>vector</li>
443<li>list</li>
444<li>pair</li>
445<li>null</li>
446<li>port</li>
447<li>input-port</li>
448<li>output-port</li>
449<li>eof</li>
450<li>procedure</li>
451<li>macro</li>
452<li>continuation</li>
453<li>promise</li>
454<li>environment</li>
455<li>read-table</li>
456<li>hash-table</li>
457<li>queue</li>
458<li>condition</li>
459<li>number</li>
460<li>exact</li>
461<li>inexact</li>
462<li>real</li>
463<li>integer</li>
464<li>fixnum</li>
465<li>flonum</li>
466<li>rational</li>
467<li>complex</li>
468<li>u8vector</li>
469<li>s8vector</li>
470<li>u16vector</li>
471<li>s16vector</li>
472<li>u32vector</li>
473<li>s32vector</li>
474<li>f32vector</li>
475<li>f64vector</li>
476<li>char-set</li>
477<li>mmap</li>
478<li>terminal-port</li>
479<li>tcp-listener</li>
480<li>thread</li>
481<li>lock</li>
482<li>mutex</li>
483<li>condition-variable</li>
484<li>time</li>
485<li>regexp</li>
486<li>pointer</li>
487<li>tagged-pointer</li>
488<li>swig-pointer</li>
489<li>locative</li>
490<li>byte-vector</li>
491<li>extended-procedure</li>
492<li>object-evicted</li>
493<li>record</li>
494<li>clos-object</li>
495<li>class</li>
496<li>method</li>
497<li>generic</li>
498<li>c++-object</li>
499<li>date</li>
500<li>array</li>
501<li>future</li></ul></div></div></div>
502<div class="section">
503<h3>Version</h3>
504<ul>
505<li>1.2.0 Needs new Egg lookup-table.</li>
506<li>1.1.0 Full low-level macro support.</li>
507<li>1.0.0 Use of &quot;fixup-extended-lambda-list-rest&quot;.</li>
508<li>0.301 Needs lookup-table</li>
509<li>0.3 Added support for explicit library pathname</li>
510<li>0.2 Needs misc-extn &gt; 2.0</li>
511<li>0.1 Initial release</li></ul></div>
512<div class="section">
513<h3>License</h3>
514<pre>Copyright (c) 2006, Kon Lovett.  All rights reserved.
515
516Permission is hereby granted, free of charge, to any person obtaining a
517copy of this software and associated documentation files (the Software),
518to deal in the Software without restriction, including without limitation
519the rights to use, copy, modify, merge, publish, distribute, sublicense,
520and/or sell copies of the Software, and to permit persons to whom the
521Software is furnished to do so, subject to the following conditions:
522
523The above copyright notice and this permission notice shall be included
524in all copies or substantial portions of the Software.
525
526THE SOFTWARE IS PROVIDED ASIS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
527IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
528FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
529THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
530OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
531ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
532OTHER DEALINGS IN THE SOFTWARE.</pre></div></div>
533<div id="footer">
534<hr /><a href="index.html">&lt; Egg index</a>
535<div id="revision-history">$Revision$ $Date$</div>&nbsp;</div></body></html>
Note: See TracBrowser for help on using the repository browser.