Commit 77befc1f authored by Erick's avatar Erick

Commit version stklos-1.10

parent a27ab980
This diff is collapsed.
......@@ -4,6 +4,32 @@
| NEWS |
+======+
* version 1.10
This version brings the support of UTF-8 encoding and begins to support some (future) R7RS traits:
* Added full support for UTF-8 strings and symbols
* Added support for Win32 support under Cygwin
* Added some support for R7RS traits:
o bytesvectors
o hexadecimal chars in strings and symbols
o continuations lines in strings
o New primitives
- char-foldcase
- string-foldcase
- string-foldcase!
- make-list
- string-map
- string-for-each
- vector-for-each
- vector-map
* Added support for MacOs X Lion
* Added back support for Win32 using Cygwin (this support has still rough
edges. See the file PORTING-NOTES in the distribution directory for
details)
* Bug Fixes
* version 1.01 (2010 12 29)
This is mainly a maintenance version.
......
Version 1.0 is known to compile with the standard invocation
Version 1.x is known to compile with the standard invocation
configure && make && sudo make install
on the following architectures
- Linux 2.6 (gcc-4.x 32 and 64 bits)
- MacOS 10.5+ (gcc-4.x 32 and 64 bits)
- FreeBSD 8.x (gcc-4.x 32 bits)
- Win32 (cygwin 1.7.x)
MacOs X Lion
To compile stklos on MacOs X Lion, you the following
To compile stklos on MacOs X Lion, the following
configuration line is known to work:
$ CFLAGS="-Wl,-no_pie,-no_compact_unwind" ./configure \
--with-provided-gc --with-provided-regexp \
--with-provided-ffi --with-provided-bignum
--with-provided-ffi --with-provided-bignum
Win32
The Cygwin version of Boehm GC doesn't work with STklos. Consequently,
you need at least a configuration such as
$ ./configure --with-provided-gc
to have a working version of STklos.
Note that the current version is a rather direct port of STklos and
has rough edges (in particular thers is no real support for the DOS
drives and the functions using pathnames use a Unixy syntax, rather
than the more conventional DOS one). Dynamic loading works, but GTK
support has not been tested.
======================================================================
======================================================================
......
-*- outline -*-
S T k l o s ( v e r s i o n 1 . 0 1 )
S T k l o s ( v e r s i o n 1 . 1 0 )
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
Erick Gallesio
......@@ -64,6 +64,7 @@ STklos is known to work on the following architectures:
* Linux 1.6.x (i386/gcc 32 and 64bits)
* Mac OS X 10.5+ (i386/gcc 32 and 64 bits)
* FreeBSD 8.x (i386/gcc 32 bits and 64 bits)
* Win32 (using Cygwin 1.7.x)
Previous versions of STklos have run on various architectures. All
......
/*
* CSS for STklos Documentation
*
*
* Author: Erick Gallesio [eg@essi.fr]
* Creation date: 13-Oct-2004 11:42 (eg)
* Last file update: 10-Aug-2010 00:13 (eg)
*/
html {
html {
background: #F1EEE0;
}
h3 {
h3 {
font-size: 150%;
}
h4 {
h4 {
font-size: 120%;
}
......@@ -33,18 +33,18 @@ h4 {
.code {
border: 1px solid;
border: 1px solid;
border-bottom: 2px solid;
border-right: 2px solid;
}
A:link, A:visited {
color: #0B4796 ;
text-decoration: none;
text-decoration: none;
}
A:hover {
background: #aaaaff;
text-decoration: none;
background: #aaaaff;
text-decoration: none;
}
......@@ -15,10 +15,10 @@
<td align="left" valign="top" width="20%" bgcolor="#8A8983">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr><th align="center" colspan="2" bgcolor="#ACE919"><font color="darkolivegreen">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-43510">*Top*</a></td></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-44516">*Top*</a></td></tr>
<tr class="navsel"><td width="8%" align="left" valign="top">1&nbsp;</td><td align="left"><a href="stklos-ref-1.html#Introduction">Introduction</a><br /><table cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr><td valign="top" align="left">1.1</td><td colspan="4" width="100%"><a href="stklos-ref-1.html#-section-5038">Overview of <span style="font-variant: small-caps">STklos</span></td></tr>
<tr><td valign="top" align="left">1.1</td><td colspan="4" width="100%"><a href="stklos-ref-1.html#-section-5059">Overview of <span style="font-variant: small-caps">STklos</span></td></tr>
<tr><td valign="top" align="left">1.2</td><td colspan="4" width="100%"><a href="stklos-ref-1.html#-Lexical-Conventions"> Lexical Conventions</td></tr>
<tr><td valign="top" align="left">1.3</td><td colspan="4" width="100%"><a href="stklos-ref-1.html#Basic-Concepts">Basic Concepts</td></tr>
</tbody>
......@@ -42,9 +42,9 @@
</tbody></table>
</td>
<td align="left" valign="top">
<a name="-section-5038"></a>
<a name="-section-5059"></a>
<h3><font color="darkolivegreen">1.1 Overview of <span style="font-variant: small-caps">STklos</span></font></h3>
<a name="--index-entry-4994"></a><a name="--index-entry-4999"></a><p> <span style="font-variant: small-caps">STklos</span> is the successor of <span style="font-variant: small-caps">STk</span>
<a name="--index-entry-5015"></a><a name="--index-entry-5020"></a><p> <span style="font-variant: small-caps">STklos</span> is the successor of <span style="font-variant: small-caps">STk</span>
[<a href="stklos-ref-16.html#Gallesio95-1a">6</a>], a Scheme interpreter which was tightly
connected to the Tk graphical toolkit [<a href="stklos-ref-16.html#Ouster-Tk">11</a>].
<span style="font-variant: small-caps">STk</span> had an object layer which was called <span style="font-variant: small-caps">STklos</span>. At this
......@@ -54,7 +54,7 @@ extension. For instance, when programming a GUI application,
a user could access the widgets at the (low) Tk level, or access
them using a neat hierarchy of classes wrapped in <span style="font-variant: small-caps">STklos</span>.</p><p> Since the object layer is now more closely integrated with
the language, the new system has been renamed <span style="font-variant: small-caps">STklos</span> and
<span style="font-variant: small-caps">STk</span> is now used to designate the old system. </p><a name="--index-entry-5022"></a><p> <strong>Compatibility with <span style="font-variant: small-caps">STk</span></strong>: <span style="font-variant: small-caps">STklos</span> has been
<span style="font-variant: small-caps">STk</span> is now used to designate the old system. </p><a name="--index-entry-5043"></a><p> <strong>Compatibility with <span style="font-variant: small-caps">STk</span></strong>: <span style="font-variant: small-caps">STklos</span> has been
completely rewritten and as a consequence, due to new
implementation choices, old <span style="font-variant: small-caps">STk</span> programs are not fully
compatible with the new system. However, these changes are very
......@@ -68,13 +68,13 @@ identical in every points, share the same philosophy.</p><a name="-Lexical-Conve
<h3 id="-Lexical-Conventions"><font color="darkolivegreen">1.2 Lexical Conventions</font></h3>
<a name="Identifiers"></a>
<h4 id="Identifiers"><font color="darkolivegreen">1.2.1 Identifiers</font></h4>
<a name="--index-entry-5041"></a><p>In <span style="font-variant: small-caps">STklos</span>, identifiers which start (or end) with a colon
<a name="--index-entry-5062"></a><p>In <span style="font-variant: small-caps">STklos</span>, identifiers which start (or end) with a colon
"<code>:</code>" are considered as keywords. For instance
<code>:foo</code> and <code>bar:</code> are <span style="font-variant: small-caps">STklos</span> keywords, but
<code>not:key</code> is not a keyword. See
section&nbsp;<a href="stklos-ref-4.html#Keywords">Keywords</a> for more information</p><a name="Comments"></a>
<h4 id="Comments"><font color="darkolivegreen">1.2.2 Comments</font></h4>
<a name="--index-entry-5059"></a><a name="--index-entry-5063"></a><a name="--index-entry-5067"></a><a name="--index-entry-5071"></a><a name="--index-entry-5075"></a><p>There are four types of comments in <span style="font-variant: small-caps">STklos</span>:</p><ul><li>a semicolon "<code>;</code>" indicates the start of a
<a name="--index-entry-5080"></a><a name="--index-entry-5084"></a><a name="--index-entry-5088"></a><a name="--index-entry-5092"></a><a name="--index-entry-5096"></a><p>There are four types of comments in <span style="font-variant: small-caps">STklos</span>:</p><ul><li>a semicolon "<code>;</code>" indicates the start of a
comment. This kind of comment extends to the end of the line (as
described in <span style="font-variant: small-caps">R<sup>5</sup>RS</span>).</li>
<li> multi-lines comment use the classical Lisp convention:
......@@ -82,17 +82,17 @@ a comment begins with "<code>#|</code>" and ends with "<code>|#</code>".
This form of comment is now defined by <strong><a href="http://srfi.schemers.org/srfi-30/srfi-30.html">SRFI-30</a></strong>
(<em>Nested Multi-line Comments</em>).</li>
<li>a sharp sign followed by a semicolon "<code>#;</code>"
comments the next Scheme expression. This is useful to comment
comments the next Scheme expression. This is useful to comment
a piece of code which spans multiple lines</li>
<li>comments can also be introduced by "<code>#!</code>"''.
Such a comment extends to the end of the line which introduces
it. This extension is particularly useful for building <span style="font-variant: small-caps">STklos</span>
scripts. On most Unix implementations, if the first line of a
script looks like this:
script looks like this:
<pre> #!/usr/local/bin/stklos -file </pre>
then the script can be started directly as if it was a binary
program. <span style="font-variant: small-caps">STklos</span> is loaded behind the scene and
executes the script as a Scheme program. This form is compatible with
executes the script as a Scheme program. This form is compatible with
the notation introduced in <strong><a href="http://srfi.schemers.org/srfi-22/srfi-22.html">SRFI-22</a></strong>
(<em>Running Scheme Scripts on Unix</em>)<p>Note that, as a special case, that the sequences
"<code>#!key</code>", "<code>#!optional</code>" and
......@@ -103,10 +103,10 @@ accepts keywords and optional arguments, to be compatible with
DSSSL lambdas [<a href="stklos-ref-16.html#dsssl-96">10</a>].</p></li>
</ul><a name="Here-Strings"></a>
<h4 id="Here-Strings"><font color="darkolivegreen">1.2.3 Here Strings</font></h4>
<a name="--index-entry-5130"></a><a name="--index-entry-5134"></a><p>Here strings permit to easily enter multilines strings in programs.
The sequence of characters <em>#&lt;&lt;</em> starts a here string. The characters
<a name="--index-entry-5151"></a><a name="--index-entry-5155"></a><p>Here strings permit to easily enter multilines strings in programs.
The sequence of characters <em>#&lt;&lt;</em> starts a here string. The characters
following this sequence #&lt;&lt; until a newline character define a terminator for
the here string. The content of the string includes all characters between
the here string. The content of the string includes all characters between
the <em>#&lt;&lt;</em> line and a line whose only content is the specified terminator.
No escape sequences are recognized between the starting and terminating lines.</p><p><strong>Example: </strong>the sequence</p><pre>
#&lt;&lt;EOF
......@@ -132,7 +132,7 @@ outermost <code>read</code>.</li>
previously labeled by a <code>#n=</code> notation; that is,
<code>#n#</code> represents a pointer to the object labeled exactly
by <code>#n=</code>. For instance, the object returned by the
following expression
following expression
<pre>
(let* ((a (list 1 2))
......@@ -149,6 +149,6 @@ can also be represented in this way:
See the original <span style="font-variant: small-caps">R<sup>5</sup>RS</span> document for more informations on
the basic concepts of the Scheme Programming Language.<p></p></td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Wed Dec 29 20:20:59 2010</em></small>
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Sat Dec 31 15:49:29 2011</em></small>
</body>
</html>
This diff is collapsed.
......@@ -15,7 +15,7 @@
<td align="left" valign="top" width="20%" bgcolor="#8A8983">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr><th align="center" colspan="2" bgcolor="#ACE919"><font color="darkolivegreen">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-43510">*Top*</a></td></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-44516">*Top*</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">1&nbsp;</td><td align="left"><a href="stklos-ref-1.html#Introduction">Introduction</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">2&nbsp;</td><td align="left"><a href="stklos-ref-2.html#Expressions">Expressions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">3&nbsp;</td><td align="left"><a href="stklos-ref-3.html#Program-structure">Program structure</a></td></tr>
......@@ -28,7 +28,7 @@
<tr class="navnorm"><td width="8%" align="left" valign="top">10&nbsp;</td><td align="left"><a href="stklos-ref-10.html#Customizations">Customizations</a></td></tr>
<tr class="navsel"><td width="8%" align="left" valign="top">11&nbsp;</td><td align="left"><a href="stklos-ref-11.html#The-ScmPkg-Package-System">The ScmPkg Package System</a><br /><table cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr><td valign="top" align="left">11.1</td><td colspan="4" width="100%"><a href="stklos-ref-11.html#-section-41385"><span style="font-variant: small-caps">ScmPkg</span> &quot;tutorial&quot;</td></tr>
<tr><td valign="top" align="left">11.1</td><td colspan="4" width="100%"><a href="stklos-ref-11.html#-section-42393"><span style="font-variant: small-caps">ScmPkg</span> &quot;tutorial&quot;</td></tr>
<tr><td valign="top" align="left">11.2</td><td colspan="4" width="100%"><a href="stklos-ref-11.html#stklos-pkg-options">stklos-pkg options</td></tr>
</tbody>
</table>
......@@ -41,17 +41,17 @@
</tbody></table>
</td>
<td align="left" valign="top">
<a name="--index-entry-41308"></a><p><span style="font-variant: small-caps">ScmPkg</span> is a package distribution system for Scheme. It is
<a name="--index-entry-42316"></a><p><span style="font-variant: small-caps">ScmPkg</span> is a package distribution system for Scheme. It is
currently supported by Bigloo and Stklos. This package system
provides new APIs to Scheme (e.g., network programming,
cryptography, encoding, ...) and it manages automatic package
installation, deinstallation and testing.</p><a name="-section-41385"></a>
installation, deinstallation and testing.</p><a name="-section-42393"></a>
<h3><font color="darkolivegreen">11.1 <span style="font-variant: small-caps">ScmPkg</span> &quot;tutorial&quot;</font></h3>
<p><tt>stklos-pkg</tt> is the command which gives access to
<span style="font-variant: small-caps">ScmPkg</span> in <span style="font-variant: small-caps">STklos</span>. This is the only command necessary to
manage <span style="font-variant: small-caps">ScmPkg</span> packages. For instance, this command manages a
local cache of the <span style="font-variant: small-caps">ScmPkg</span> server, permits (de)installation of
<span style="font-variant: small-caps">ScmPkg</span> packages, the test of packages, ...</p><p>To start, we can synchronize our local repository with the
<span style="font-variant: small-caps">ScmPkg</span> packages, the test of packages, ...</p><p>To start, we can synchronize our local repository with the
<span style="font-variant: small-caps">ScmPkg</span> servers. This can be done by the following command:</p><blockquote><table cellspacing="0" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="ivory"><pre>$ stklos-pkg --sync
</pre></td></tr>
......@@ -70,14 +70,14 @@ srfi1-0.0.1 (tuning)
$
</pre></td></tr>
</tbody></table></blockquote>
<p>Packages whose name start by an underscore are packages needed for
alien language support (e.g. the package &quot;_bigloo&quot; is necessary to
run a package written in the Bigloo Scheme dialect, or the package
<p>Packages whose name start by an underscore are packages needed for
alien language support (e.g. the package &quot;_bigloo&quot; is necessary to
run a package written in the Bigloo Scheme dialect, or the package
&quot;_chicken-net&quot; is necessary for the packages using the network
primitives of the Chicken Scheme dialect). Some packages my offer
a tuning. A tuned package is a package which has been specially
tuned for STklos (e.g. the generic &quot;srfi1&quot; package which
implement SRFI-1 has been tuned to be more efficient in STklos)</p><p>To download a new package (and all its dependencies), one can simply
implement SRFI-1 has been tuned to be more efficient in STklos)</p><p>To download a new package (and all its dependencies), one can simply
issue the following command:</p><blockquote><table cellspacing="0" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="ivory"><pre>$ stklos-pkg --extract PKG --directory /tmp/Test
</pre></td></tr>
......@@ -97,12 +97,12 @@ system wide (privilegied access rights are probably needed)</li>
<tr><td bgcolor="ivory"><pre>$ stklos-pkg --test PKG
</pre></td></tr>
</tbody></table></blockquote>
<p>This downloads the necessary files in a temporary directory,
<p>This downloads the necessary files in a temporary directory,
and launches the tests of the package <em>PKG</em></p><p>To install a package, one can also use the following command:</p><blockquote><table cellspacing="0" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="ivory"><pre>$ stklos-pkg --install PKG
</pre></td></tr>
</tbody></table></blockquote>
<p>This downloads the necessary files in a temporary directory,
<p>This downloads the necessary files in a temporary directory,
and installs the package <em>PKG</em></p><p>This completes the basis <span style="font-variant: small-caps">ScmPkg</span> tutorial. See below for
the list of all <tt>stklos-pkg</tt> options</p><a name="stklos-pkg-options"></a>
<h3 id="stklos-pkg-options"><font color="darkolivegreen">11.2 stklos-pkg options</font></h3>
......@@ -138,6 +138,6 @@ Misc
</tbody></table></blockquote>
</td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Wed Dec 29 20:21:03 2010</em></small>
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Sat Dec 31 15:49:34 2011</em></small>
</body>
</html>
......@@ -15,7 +15,7 @@
<td align="left" valign="top" width="20%" bgcolor="#8A8983">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr><th align="center" colspan="2" bgcolor="#ACE919"><font color="darkolivegreen">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-43510">*Top*</a></td></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-44516">*Top*</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">1&nbsp;</td><td align="left"><a href="stklos-ref-1.html#Introduction">Introduction</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">2&nbsp;</td><td align="left"><a href="stklos-ref-2.html#Expressions">Expressions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">3&nbsp;</td><td align="left"><a href="stklos-ref-3.html#Program-structure">Program structure</a></td></tr>
......@@ -39,7 +39,7 @@
defined to allow an easy access to functions written in C without
needing to build C-wrappers and, consequently, without any need to
write C code. Note that the FFI is very machine dependent and that it
works only on a limited set of architectures/systems <a href="#fn--footnote-41565"><sup><small>1</small></sup></a>. Moreover,
works only on a limited set of architectures/systems <a href="#fn--footnote-42573"><sup><small>1</small></sup></a>. Moreover,
since FFI allows very low level access, it is easy to crash the
<span style="font-variant: small-caps">STklos</span> VM when using an external C function.</p><p><strong>Note that the support for FFI is still minimal and that it will
evolve in future versions.</strong></p><p>The definition of an external function is done with the
......@@ -72,7 +72,7 @@ between the C and the Scheme worlds.</p><br id="FFI-types"><a name="FFI-types"><
<strong>Fig. 2:</strong> FFI types</center>
<br>
<br /><table cellspacing="0" cellpadding="0" width="100%"><tbody>
<tr><td bgcolor="#dddddd"><a name="define-external"></a><a name="--index-entry-41654"></a><table width="100%" style="border-collapse: collapse;" frame="void" rules="none"><tbody>
<tr><td bgcolor="#dddddd"><a name="define-external"></a><a name="--index-entry-42662"></a><table width="100%" style="border-collapse: collapse;" frame="void" rules="none"><tbody>
<tr><td align="left"><code><strong><font color="IndianRed">(define-external name parameters option)</font></strong></code></td><td align="right"><font color="darkolivegreen"><i><span style="font-variant: small-caps">STklos</span> syntax</i></font></td></tr>
</tbody></table>
<br />The form <code>define-external</code> binds a new procedure to <code>name</code>.
......@@ -82,10 +82,10 @@ of keywords (as defined in the previous table) or couples whose first
element is the name of the parameter, and the second one is a type
keyword. All the types defined in the above table, except
<code>:void</code>, are allowed for the parameters of a foreign function.
<br /><br />
<br /><br />inebreak
<code>Define-external</code> accepts several options:
<ul><li>
<code>:return-type</code> is used to define the type of the value returned
<code>:return-type</code> is used to define the type of the value returned
by the foreign function. The type returned must be chosen in the types specified
in the table. For instance:
<blockquote><table cellspacing="0" class="code" cellpadding="4" width="90%"><tbody>
......@@ -103,8 +103,7 @@ type equal to <code>:void</code> (i.e. the returned value is <em>undefined</em>)
function in the C world. If this option is omitted, the entry-name is
supposed to be <code>name</code>. For instance:
<blockquote><table cellspacing="0" class="code" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="ivory"><pre>
(define-external minimum((a <font color="#00cf00">:int</font>) (b <font color="#00cf00">:int</font>))
<tr><td bgcolor="ivory"><pre>(define-external minimum((a <font color="#00cf00">:int</font>) (b <font color="#00cf00">:int</font>))
<font color="#00cf00">:return-type</font> <font color="#00cf00">:int</font>
<font color="#00cf00">:entry-name</font> <font color="red">&quot;min&quot;</font>)
</pre></td></tr>
......@@ -114,25 +113,24 @@ defines the Scheme function <code>minimum</code> whose application
executes the C function called <code>min</code>.
</li>
<li>
<code>:library-name</code> is used to specify the library which contains the
foreign-function. If necessary, the library is loaded before calling the
C function. So,
<code>:library-name</code> is used to specify the library which contains the
foreign-function. If necessary, the library is loaded before calling the
C function. So,
<blockquote><table cellspacing="0" class="code" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="ivory"><pre>
(define-external minimum((a <font color="#00cf00">:int</font>) (b <font color="#00cf00">:int</font>))
<tr><td bgcolor="ivory"><pre>(define-external minimum((a <font color="#00cf00">:int</font>) (b <font color="#00cf00">:int</font>))
<font color="#00cf00">:return-type</font> <font color="#00cf00">:int</font>
<font color="#00cf00">:entry-name</font> <font color="red">&quot;min&quot;</font>
<font color="#00cf00">:library-name</font> <font color="red">&quot;libminmax&quot;</font>)
</pre></td></tr>
</tbody></table></blockquote>
defines a function which will execute the function <code>min</code>
located in the library <code>libminmax.xx</code> (where <code>xx</code> is the suffix used
for shared libraries on the running system (generally <code>so</code>))
</li>
</ul></td></tr>
</tbody></table><p>Hereafter, there are some commented definitions of external functions:</p><blockquote><table cellspacing="0" class="code" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="ivory"><pre> (define-external isatty ((fd <font color="#00cf00">:int</font>))
<tr><td bgcolor="ivory"><pre> (define-external isatty ((fd <font color="#00cf00">:int</font>))
<font color="#00cf00">:return-type</font> <font color="#00cf00">:boolean</font>)
(define-external system ((cmd <font color="#00cf00">:string</font>))
......@@ -150,17 +148,17 @@ system to translate this result as a boolean value in the Scheme
world).</li>
<li><em>system</em> is a function which takes a string as parameter
and returns an <em>int</em>.</li>
<li><em>ttyname</em> is a function whih takes an int and returns a string.
Note that in this function the name of the parameter has been omitted
<li><em>ttyname</em> is a function whih takes an int and returns a string.
Note that in this function the name of the parameter has been omitted
as within C prototypes.</li>
</ul><strong>TODO: describe malloc and malloc_atomic and their
interaction with the GC</strong><br><br><hr width='20%' size='2' align='left'>
<a name="fn--footnote-41565"><sup><small>1</small></sup></a>: FFI
<a name="fn--footnote-42573"><sup><small>1</small></sup></a>: FFI
system should works on the following architectures/systems:
gcc_ppc_osx, gcc_sparc_unix, gcc_x64_unix, gcc_x86_unix.
<br>
</td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Wed Dec 29 20:21:03 2010</em></small>
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Sat Dec 31 15:49:35 2011</em></small>
</body>
</html>
......@@ -15,7 +15,7 @@
<td align="left" valign="top" width="20%" bgcolor="#8A8983">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr><th align="center" colspan="2" bgcolor="#ACE919"><font color="darkolivegreen">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-43510">*Top*</a></td></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-44516">*Top*</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">1&nbsp;</td><td align="left"><a href="stklos-ref-1.html#Introduction">Introduction</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">2&nbsp;</td><td align="left"><a href="stklos-ref-2.html#Expressions">Expressions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">3&nbsp;</td><td align="left"><a href="stklos-ref-3.html#Program-structure">Program structure</a></td></tr>
......@@ -35,7 +35,7 @@
</tbody></table>
</td>
<td align="left" valign="top">
<a name="--index-entry-41907"></a><a name="--index-entry-41911"></a><p>Aubrey Jaffer maintains a package called
<a name="--index-entry-42913"></a><a name="--index-entry-42917"></a><p>Aubrey Jaffer maintains a package called
<em><a href="http://swiss.csail.mit.edu/~jaffer/SLIB">SLIB</a></em>
which is a portable Scheme library which provides compatibility
and utility functions for all standard Scheme implementations. To
......@@ -52,6 +52,6 @@ such as if their parameter is a string this is the old <span style="font-variant
procedure which is called, and if their parameter is a symbol,
this is the <em>SLIB</em> one which is called.</p></td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Wed Dec 29 20:21:04 2010</em></small>
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Sat Dec 31 15:49:35 2011</em></small>
</body>
</html>
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -15,7 +15,7 @@
<td align="left" valign="top" width="20%" bgcolor="#8A8983">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr><th align="center" colspan="2" bgcolor="#ACE919"><font color="darkolivegreen">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-43510">*Top*</a></td></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-44516">*Top*</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">1&nbsp;</td><td align="left"><a href="stklos-ref-1.html#Introduction">Introduction</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">2&nbsp;</td><td align="left"><a href="stklos-ref-2.html#Expressions">Expressions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">3&nbsp;</td><td align="left"><a href="stklos-ref-3.html#Program-structure">Program structure</a></td></tr>
......@@ -35,9 +35,9 @@
</tbody></table>
</td>
<td align="left" valign="top">
<table><tbody><tr><td valign="top" align="right">[1] </td><td valign="top" align="left"> -- <a title="http://www-sop.inria.fr/mimosa/fp/Bigloo/" href="http://www-sop.inria.fr/mimosa/fp/Bigloo/"><strong>Bigloo Home Page</strong></a>.</td></tr><tr><td valign="top" align="right">[2] </td><td valign="top" align="left"> -- <a title="http://gtk.org/" href="http://gtk.org/"><strong>The GTK+ Toolkit Home Page</strong></a>.</td></tr><tr><td valign="top" align="right">[3] </td><td valign="top" align="left">Apple Computer -- <strong>Dylan: an Object Oriented Dynamic Language</strong> -- <i>Apple</i>, April, 1992.</td></tr><tr><td valign="top" align="right">[4] </td><td valign="top" align="left">C. Queinnec and J-M. Geffroy -- <strong>Partial Evaluation Applied to Symbolic Pattern Matching with Intelligent Backtrack</strong> -- Workshop in Static Analysis, Bigre, (81--82), Bordeaux (France), September, 1992.</td></tr><tr><td valign="top" align="right">[5] </td><td valign="top" align="left">Chris Hanson -- <a title="http://www.swiss.ai.mit.edu/projects/scheme/documentation/sos.html" href="http://www.swiss.ai.mit.edu/projects/scheme/documentation/sos.html"><strong>The SOS Reference Manual, version 1.5</strong></a> -- March, 1993.</td></tr><tr><td valign="top" align="right">[6] </td><td valign="top" align="left">Erick Gallesio -- <strong>Reference Manual</strong> -- RT 95-31a, I3S CNRS / Universit de Nice - Sophia Antipolis, juillet, 1995, pp. 82.</td></tr><tr><td valign="top" align="right">[7] </td><td valign="top" align="left">Gregor Kickzales -- <a title="ftp://parcftp.xerox.com/pub/openimplementations/tiny" href="ftp://parcftp.xerox.com/pub/openimplementations/tiny"><strong>Tiny-Clos</strong></a> -- December, 1992.</td></tr><tr><td valign="top" align="right">[8] </td><td valign="top" align="left">Gregor Kickzales, Jim de Rivires and Daniel G. Bobrow -- <strong>The Art of Meta Object Protocol</strong> -- <i>MIT Press</i>, 1991.</td></tr><tr><td valign="top" align="right">[9] </td><td valign="top" align="left">Guy L. Steele Jr. -- <strong>Common Lisp: the Language, 2nd Edition</strong> -- <i>Digital Press</i>, 12 Crosby Drive, Bedford, MA 01730, USA, 1990.</td></tr><tr><td valign="top" align="right">[10] </td><td valign="top" align="left">ISO/IEC -- <strong>Information technology, Processing Languages, Document Style Semantics and Specification Languages (DSSSL)</strong> -- 10179:1996(E), ISO, , 1996.</td></tr><tr><td valign="top" align="right">[11] </td><td valign="top" align="left">John K. Ousterhout -- <strong>An X11 toolkit based on the Tcl Language</strong> -- USENIX Winter Conference, January, 1991, pp. 105--115.</td></tr><tr><td valign="top" align="right">[12] </td><td valign="top" align="left">Kelsey, R. and Clinger, W. and Rees, J. -- <a title="http://www.schemers.org/Documents/Standards/R5RS/HTML" href="http://www.schemers.org/Documents/Standards/R5RS/HTML"><strong>The Revised5 Report on the Algorithmic Language Scheme</strong></a> -- Higher-Order and Symbolic Computation, 11(1), Sep, 1998.</td></tr><tr><td valign="top" align="right">[13] </td><td valign="top" align="left">Philip Hazel -- <a title="http://pcre.org/" href="http://pcre.org/"><strong>PCRE (Perl Compatible Regular Expressions) Home page</strong></a>.</td></tr><tr><td valign="top" align="right">[14] </td><td valign="top" align="left">Sho-Huan Simon Tung and R. Kent Dybvig -- <strong>Reliable Interactive Programming with Modules</strong> -- LISP and Symbolic Computation, 91996, pp. 343--358.</td></tr></tbody></table>
<table><tbody><tr><td valign="top" align="right">[1] </td><td valign="top" align="left"> -- <a title="http://www-sop.inria.fr/mimosa/fp/Bigloo/" href="http://www-sop.inria.fr/mimosa/fp/Bigloo/"><strong>Bigloo Home Page</strong></a>.</td></tr><tr><td valign="top" align="right">[2] </td><td valign="top" align="left"> -- <a title="http://gtk.org/" href="http://gtk.org/"><strong>The GTK+ Toolkit Home Page</strong></a>.</td></tr><tr><td valign="top" align="right">[3] </td><td valign="top" align="left">Apple Computer -- <strong>Dylan: an Object Oriented Dynamic Language</strong> -- <i>Apple</i>, April, 1992.</td></tr><tr><td valign="top" align="right">[4] </td><td valign="top" align="left">C. Queinnec and J-M. Geffroy -- <strong>Partial Evaluation Applied to Symbolic Pattern Matching with Intelligent Backtrack</strong> -- Workshop in Static Analysis, Bigre, (81--82), Bordeaux (France), September, 1992.</td></tr><tr><td valign="top" align="right">[5] </td><td valign="top" align="left">Chris Hanson -- <a title="http://www.swiss.ai.mit.edu/projects/scheme/documentation/sos.html" href="http://www.swiss.ai.mit.edu/projects/scheme/documentation/sos.html"><strong>The SOS Reference Manual, version 1.5</strong></a> -- March, 1993.</td></tr><tr><td valign="top" align="right">[6] </td><td valign="top" align="left">Erick Gallesio -- <strong>Reference Manual</strong> -- RT 95-31a, I3S CNRS / Universit頤e Nice - Sophia Antipolis, juillet, 1995, pp. 82.</td></tr><tr><td valign="top" align="right">[7] </td><td valign="top" align="left">Gregor Kickzales -- <a title="ftp://parcftp.xerox.com/pub/openimplementations/tiny" href="ftp://parcftp.xerox.com/pub/openimplementations/tiny"><strong>Tiny-Clos</strong></a> -- December, 1992.</td></tr><tr><td valign="top" align="right">[8] </td><td valign="top" align="left">Gregor Kickzales, Jim de Rivi貥s and Daniel G. Bobrow -- <strong>The Art of Meta Object Protocol</strong> -- <i>MIT Press</i>, 1991.</td></tr><tr><td valign="top" align="right">[9] </td><td valign="top" align="left">Guy L. Steele Jr. -- <strong>Common Lisp: the Language, 2nd Edition</strong> -- <i>Digital Press</i>, 12 Crosby Drive, Bedford, MA 01730, USA, 1990.</td></tr><tr><td valign="top" align="right">[10] </td><td valign="top" align="left">ISO/IEC -- <strong>Information technology, Processing Languages, Document Style Semantics and Specification Languages (DSSSL)</strong> -- 10179:1996(E), ISO, , 1996.</td></tr><tr><td valign="top" align="right">[11] </td><td valign="top" align="left">John K. Ousterhout -- <strong>An X11 toolkit based on the Tcl Language</strong> -- USENIX Winter Conference, January, 1991, pp. 105--115.</td></tr><tr><td valign="top" align="right">[12] </td><td valign="top" align="left">Kelsey, R. and Clinger, W. and Rees, J. -- <a title="http://www.schemers.org/Documents/Standards/R5RS/HTML" href="http://www.schemers.org/Documents/Standards/R5RS/HTML"><strong>The Revised5 Report on the Algorithmic Language Scheme</strong></a> -- Higher-Order and Symbolic Computation, 11(1), Sep, 1998.</td></tr><tr><td valign="top" align="right">[13] </td><td valign="top" align="left">Philip Hazel -- <a title="http://pcre.org/" href="http://pcre.org/"><strong>PCRE (Perl Compatible Regular Expressions) Home page</strong></a>.</td></tr><tr><td valign="top" align="right">[14] </td><td valign="top" align="left">Sho-Huan Simon Tung and R. Kent Dybvig -- <strong>Reliable Interactive Programming with Modules</strong> -- LISP and Symbolic Computation, 91996, pp. 343--358.</td></tr></tbody></table>
</td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Wed Dec 29 20:21:05 2010</em></small>
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Sat Dec 31 15:49:36 2011</em></small>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -15,7 +15,7 @@
<td align="left" valign="top" width="20%" bgcolor="#8A8983">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr><th align="center" colspan="2" bgcolor="#ACE919"><font color="darkolivegreen">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-43510">*Top*</a></td></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-44516">*Top*</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">1&nbsp;</td><td align="left"><a href="stklos-ref-1.html#Introduction">Introduction</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">2&nbsp;</td><td align="left"><a href="stklos-ref-2.html#Expressions">Expressions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">3&nbsp;</td><td align="left"><a href="stklos-ref-3.html#Program-structure">Program structure</a></td></tr>
......@@ -23,7 +23,7 @@
<tr class="navnorm"><td width="8%" align="left" valign="top">5&nbsp;</td><td align="left"><a href="stklos-ref-5.html#Regular-Expressions">Regular Expressions</a></td></tr>
<tr class="navsel"><td width="8%" align="left" valign="top">6&nbsp;</td><td align="left"><a href="stklos-ref-6.html#Pattern-Matching">Pattern Matching</a><br /><table cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr><td valign="top" align="left">6.1</td><td colspan="4" width="100%"><a href="stklos-ref-6.html#-section-36290"><span style="font-variant: small-caps">STklos</span> Pattern Matching Facilities</td></tr>
<tr><td valign="top" align="left">6.1</td><td colspan="4" width="100%"><a href="stklos-ref-6.html#-section-37301"><span style="font-variant: small-caps">STklos</span> Pattern Matching Facilities</td></tr>
<tr><td valign="top" align="left">6.2</td><td colspan="4" width="100%"><a href="stklos-ref-6.html#The-Pattern-Language">The Pattern Language</td></tr>
</tbody>
</table>
......@@ -45,21 +45,21 @@
languages since it allows clean and secure code to be
written. Internally, "pattern-matching forms" should be translated
(compiled) into cascades of "elementary tests" where code is made as
efficient as possible, avoiding redundant tests; <span style="font-variant: small-caps">STklos</span>
"pattern matching compiler" provides this <a href="#fn--footnote-36111"><sup><small>1</small></sup></a>.</p><p>The technique used is described in details in
efficient as possible, avoiding redundant tests; <span style="font-variant: small-caps">STklos</span>
"pattern matching compiler" provides this <a href="#fn--footnote-37123"><sup><small>1</small></sup></a>.</p><p>The technique used is described in details in
[<a href="stklos-ref-16.html#Queinnec-Geffroy92">4</a>], and the code generated can be
considered optimal</p><p>The "pattern language" allows the expression of a wide variety
considered optimal</p><p>The "pattern language" allows the expression of a wide variety
of patterns, including:</p><ul><li>Non-linear patterns: pattern variables can appear more than
once, allowing comparison of subparts of the datum (through <a href="stklos-ref-4.html#eq-">eq-</a>)</li>
<li>Recursive patterns on lists: for example, checking that the
datum is a list of zero or more <code>a</code>s followed by zero or more
datum is a list of zero or more <code>a</code>s followed by zero or more
<code>b</code>s.</li>
<li>Pattern matching on lists as well as on vectors.</li>
</ul><a name="-section-36290"></a>
</ul><a name="-section-37301"></a>
<h3><font color="darkolivegreen">6.1 <span style="font-variant: small-caps">STklos</span> Pattern Matching Facilities</font></h3>
<p>Only two special forms are provided for this in <span style="font-variant: small-caps">STklos</span>: <code>match-case</code>
and <code>match-lambda</code>.</p><br /><table cellspacing="0" cellpadding="0" width="100%"><tbody>
<tr><td bgcolor="#dddddd"><a name="match-case"></a><a name="--index-entry-36134"></a><table width="100%" style="border-collapse: collapse;" frame="void" rules="none"><tbody>
<tr><td bgcolor="#dddddd"><a name="match-case"></a><a name="--index-entry-37146"></a><table width="100%" style="border-collapse: collapse;" frame="void" rules="none"><tbody>
<tr><td align="left"><code><strong><font color="IndianRed">(match-case &lt;key&gt; &lt;clause&gt; ...)</font></strong></code></td><td align="right"><font color="darkolivegreen"><i><span style="font-variant: small-caps">STklos</span> syntax</i></font></td></tr>
</tbody></table>
<br />The argument key may be any expression and each clause has the form
......@@ -67,7 +67,7 @@ and <code>match-lambda</code>.</p><br /><table cellspacing="0" cellpadding="0" w
<tr><td bgcolor="ivory"><pre>(<font color="#1919af"><strong>&lt;pattern&gt;</strong></font> <font color="#1919af"><strong>&lt;expression&gt;</strong></font> ...)
</pre></td></tr>
</tbody></table></blockquote>
A match-case expression is evaluated as follows: <code>&lt;key&gt;</code> is evaluated
and the result is compared with each successive pattern. If the <code>&lt;pattern&gt;</code>
in some clause yields a match, then the <code>&lt;expression&gt;</code>s in that clause are
......@@ -79,11 +79,10 @@ then, if there is an <code>else</code> clause, its expressions are evaluated and
the result of the last is the result of the whole <code>match-case</code>
expression; otherwise the result of the <code>match-case</code> expression
is unspecified.
<br /><br />
<br />
The equality predicate used for tests is <code>eq?</code>.
<blockquote><table cellspacing="0" class="code" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="ivory"><pre>
(<strong>match-case</strong> '(a b a)
<tr><td bgcolor="ivory"><pre>(<strong>match-case</strong> '(a b a)
((?x ?x) 'foo)
((?x ?- ?x) 'bar)) &#8658; bar
......@@ -95,7 +94,7 @@ The equality predicate used for tests is <code>eq?</code>.
</tbody></table></blockquote>
</td></tr>
</tbody></table><br /><table cellspacing="0" cellpadding="0" width="100%"><tbody>
<tr><td bgcolor="#dddddd"><a name="match-lambda"></a><a name="--index-entry-36246"></a><table width="100%" style="border-collapse: collapse;" frame="void" rules="none"><tbody>
<tr><td bgcolor="#dddddd"><a name="match-lambda"></a><a name="--index-entry-37257"></a><table width="100%" style="border-collapse: collapse;" frame="void" rules="none"><tbody>
<tr><td align="left"><code><strong><font color="IndianRed">(match-lambda &lt;clause&gt; ...)</font></strong></code></td><td align="right"><font color="darkolivegreen"><i><span style="font-variant: small-caps">STklos</span> syntax</i></font></td></tr>
</tbody></table>
<br /><code>match-lambda</code> expands into a lambda-expression expecting an argument
......@@ -111,7 +110,7 @@ which, once applied to an expression, behaves exactly like a
</td></tr>
</tbody></table><a name="The-Pattern-Language"></a>
<h3 id="The-Pattern-Language"><font color="darkolivegreen">6.2 The Pattern Language</font></h3>
<a name="--index-entry-36293"></a><p>The syntax for <code>&lt;pattern&gt;</code> is:</p><blockquote><table cellspacing="0" cellpadding="4" width="90%"><tbody>
<a name="--index-entry-37304"></a><p>The syntax for <code>&lt;pattern&gt;</code> is:</p><blockquote><table cellspacing="0" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="ivory"><pre>&lt;pattern&gt; ==&gt; <em>Matches:</em>
&lt;atom&gt; <em>the &lt;atom&gt;.</em>
......@@ -152,7 +151,7 @@ sequence of anything: <code>(a ??- b)</code> matches any list whose
<code>car</code> is <code>a</code> and last <code>car</code> is
<code>b</code>.</li>
<li><code>(a ...)</code> matches any list of <code>a</code>'s, possibly empty.</li>
<li><code>(?x ?x)</code> matches any list of length 2 whose <code>car</code> is
<li><code>(?x ?x)</code> matches any list of length 2 whose <code>car</code> is
<em>eq</em> to its <code>cadr</code>.</li>
<li><code>((and (not a) ?x) ?x)</code> matches any list of length
2 whose <code>car</code> is not <em>eq</em> to <code>'a</code> but is
......@@ -163,7 +162,7 @@ not appear inside a vector, where you should use <code>???-</code>:
For example, <code>#(a ??- b)</code> or <code>#(a...)</code> are invalid
patterns, whereas <code>#(a ???-)</code> is valid and matches any
vector whose first element is the atom <code>a</code>.</p><br><br><hr width='20%' size='2' align='left'>
<a name="fn--footnote-36111"><sup><small>1</small></sup></a>: The "pattern matching compiler" has been written by Jean-Marie Geffroy
<a name="fn--footnote-37123"><sup><small>1</small></sup></a>: The "pattern matching compiler" has been written by Jean-Marie Geffroy
and is part of the Manuel Serrano's Bigloo compiler [<a href="stklos-ref-16.html#Bigloo-home">1</a>]
since several years. The code (and documentation) included in <span style="font-variant: small-caps">STklos</span>
has been stolen from the Bigloo package v2.4 (the only difference
......@@ -172,6 +171,6 @@ vector whose first element is the atom <code>a</code>.</p><br><br><hr width='20%
<br>
</td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Wed Dec 29 20:21:02 2010</em></small>
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Sat Dec 31 15:49:33 2011</em></small>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -12,11 +12,11 @@
</head>
<body >
<table width='100%' cellpadding='0' cellspacing='0'><tr><td bgcolor="#8A8983"><font color="#FAFAFA"><center><h1>STklos Reference Manual</h1></center><center><table cellspacing=0><tbody>
<tr><td align="center"><big><big><font size="+2"><strong>Erick Gallesio</strong></font></big></big></td></tr><tr><tr><td align="center">Universit de Nice - Sophia Antipolis</td></tr><tr><td align="center">930 route des Colles, BP 145</td></tr><tr><td align="center">F-06903 Sophia Antipolis, Cedex</td></tr><tr><td align="center">France</td></tr><tr><td align="center"></td></tr></tbody></table></center></font></table><table cellpadding="3" cellspacing="0" width="100%"><tr>
<tr><td align="center"><big><big><font size="+2"><strong>Erick Gallesio</strong></font></big></big></td></tr><tr><tr><td align="center">Universite Nice - Sophia Antipolis</td></tr><tr><td align="center">930 route des Colles, BP 145</td></tr><tr><td align="center">F-06903 Sophia Antipolis, Cedex</td></tr><tr><td align="center">France</td></tr><tr><td align="center"></td></tr></tbody></table></center></font></table><table cellpadding="3" cellspacing="0" width="100%"><tr>
<td align="left" valign="top" width="20%" bgcolor="#8A8983">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr><th align="center" colspan="2" bgcolor="#ACE919"><font color="darkolivegreen">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-43510">*Top*</a></td></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-44516">*Top*</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">1&nbsp;</td><td align="left"><a href="stklos-ref-1.html#Introduction">Introduction</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">2&nbsp;</td><td align="left"><a href="stklos-ref-2.html#Expressions">Expressions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">3&nbsp;</td><td align="left"><a href="stklos-ref-3.html#Program-structure">Program structure</a></td></tr>
......@@ -37,13 +37,13 @@
</td>
<td align="left" valign="top">
<br /><br /><br />This document provides a complete list of procedures and special
forms implemented in version <strong>1.01</strong> of
forms implemented in version <strong>1.10</strong> of
<span style="font-variant: small-caps">STklos</span>. Since <span style="font-variant: small-caps">STklos</span> is (nearly) compliant with the
language described in the Revised<sup>5</sup> Report on the
Algorithmic Language Scheme (aka <span style="font-variant: small-caps">R<sup>5</sup>RS</span>) [<a href="stklos-ref-16.html#R5RS">12</a>],
the organization of this manual follows closely the one of this
document.<a name="--index-entry-41947"></a></td>
document.<a name="--index-entry-42953"></a></td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Wed Dec 29 20:21:05 2010</em></small>
<a href="http://www.stklos.net/~eg/Publis/JFP05/article.html">Skribe</a>.<br />Last update <em>Sat Dec 31 15:49:36 2011</em></small>
</body>
</html>
No preview for this file type
......@@ -18,7 +18,7 @@
;; USA.
;; Author: Erick Gallesio [eg@unice.fr]
;; Creation date: 26-Nov-2000 18:19 (eg)
;; Last file update: 16-Aug-2011 20:25 (eg)
;; Last file update: 31-Dec-2011 15:16 (eg)
;;
;; ======================================================================
......@@ -144,6 +144,7 @@ quoted in programs.])
(insertdoc 'null?)
(insertdoc 'pair-mutable?)
(insertdoc 'list?)
(insertdoc 'make-list)
(insertdoc 'list)
(insertdoc 'list*)
(insertdoc 'length)
......@@ -381,6 +382,7 @@ following: ,(fontified-code [#(0 (2 2 2 2) "Anna")])])
(insertdoc 'vector-ref)
(insertdoc 'vector-set!)
(insertdoc 'list->vector)
(insertdoc 'string->vector)
(insertdoc 'vector-fill!)
(insertdoc 'vector-copy)
(insertdoc 'vector-resize)
......@@ -418,6 +420,34 @@ to build and access the internals of a structure.])
(insertdoc 'struct-is-a?)
(insertdoc 'struct->list))
;;;
;;; BYTEVECTORS
;;;
(section :title "Bytevectors"
(index "bytevectors")
(p [,(emph" Bytevectors") represent blocks of binary data. They
are fixed-length sequences of bytes, where a ,(emph "byte") is an
exact integer in the range [0, 255]. A bytevector is typically more
space-efficient than a vector containing the same values.])
(p [The ,(emph "length") of a bytevector is the number of elements
that it contains. This number is a non-negative integer that is fixed
when the bytevector is created. The ,(emph "valid indexes") of a
bytevector are the exact non-negative integers less than the length of
the bytevector, starting at index zero as with vectors.])
(insertdoc 'bytevector?)
(insertdoc 'make-bytevector)
(insertdoc 'bytevector-length)
(insertdoc 'bytevector-u8-ref)
(insertdoc 'bytevector-u8-set!)
(insertdoc 'bytevector-copy)
(insertdoc 'bytevector-copy!)
(insertdoc 'bytevector-copy-partial)
(insertdoc 'bytevector-copy-partial!)
)
;;;
;;; CONTROL FEATURES
......@@ -427,7 +457,11 @@ to build and access the internals of a structure.])
(insertdoc 'procedure?)
(insertdoc 'apply)
(insertdoc 'map)
(insertdoc 'string-map)
(insertdoc 'vector-map)
(insertdoc 'for-each)
(insertdoc 'string-for-each)
(insertdoc 'vector-for-each)
(insertdoc 'every)