Commit 2e8354f9 authored by Erick Gallesio's avatar Erick Gallesio

Commit version stklos-0.80

parent 464b522e
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
* src/stklos.c: * src/stklos.c:
* src/stklos.h: Fixes for MacOS X * src/stklos.h: Fixes for MacOS X
* src/*-lurc.*: Aplied the pathches from Stephane for Lurc.
2006-10-27 Erick Gallesio <eg@essi.fr> 2006-10-27 Erick Gallesio <eg@essi.fr>
* Changed the GC to version 7.0alpha7 * Changed the GC to version 7.0alpha7
......
...@@ -6,7 +6,16 @@ ...@@ -6,7 +6,16 @@
* version 0.80 (2006 10 27) * version 0.80 (2006 10 27)
This is a version with important changes for supporting multi-threading. This is a version with important changes to support
multi-threading. This version provides two kinds of threads: LURC
threads and Posix threads (aka pthreads). LURC threads are
implemented using the LURC library, the Light ULM/Reactive library
for C developed at INRIA. LURC supports the creation of
synchronous cooperative threads, synchronizing and communicating
with each other using signals in a deterministic scheduler (see
http://www-sop.inria.fr/mimosa/Stephane.Epardaud/lurc for
details).
* Thread support * Thread support
* Better error messages * Better error messages
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
<td align="left" valign="top" width="20%" bgcolor="#E6F2E6"> <td align="left" valign="top" width="20%" bgcolor="#E6F2E6">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody> <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="darkolivegreen"><font color="white">Contents</font></th></tr> <tr><th align="center" colspan="2" bgcolor="darkolivegreen"><font color="white">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-19777">*Top*</a></td></tr> <tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-29879">*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%"> <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> <tbody>
<tr><td valign="top" align="left">1.1</td><td colspan="4" width="100%"><a href="stklos-ref-1.html#-section-809">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-4175">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.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> <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> </tbody>
...@@ -31,19 +31,20 @@ ...@@ -31,19 +31,20 @@
<tr class="navnorm"><td width="8%" align="left" valign="top">6&nbsp;</td><td align="left"><a href="stklos-ref-6.html#Pattern-Matching">Pattern Matching</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">6&nbsp;</td><td align="left"><a href="stklos-ref-6.html#Pattern-Matching">Pattern Matching</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">7&nbsp;</td><td align="left"><a href="stklos-ref-7.html#Exceptions-and-Conditions">Exceptions and Conditions</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">7&nbsp;</td><td align="left"><a href="stklos-ref-7.html#Exceptions-and-Conditions">Exceptions and Conditions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">8&nbsp;</td><td align="left"><a href="stklos-ref-8.html#STklos-Object-System">STklos Object System</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">8&nbsp;</td><td align="left"><a href="stklos-ref-8.html#STklos-Object-System">STklos Object System</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">9&nbsp;</td><td align="left"><a href="stklos-ref-9.html#Customizations">Customizations</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">9&nbsp;</td><td align="left"><a href="stklos-ref-9.html#Threads--Mutexes-and-Condition-Variables">Threads, Mutexes and Condition Variables</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">10&nbsp;</td><td align="left"><a href="stklos-ref-10.html#Using-the-SLIB-package">Using the SLIB package</a></td></tr> <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="navnorm"><td width="8%" align="left" valign="top">11&nbsp;</td><td align="left"><a href="stklos-ref-11.html#SRFIs">SRFIs</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">11&nbsp;</td><td align="left"><a href="stklos-ref-11.html#Using-the-SLIB-package">Using the SLIB package</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">12&nbsp;</td><td align="left"><a href="stklos-ref-12.html#Index">Index</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">12&nbsp;</td><td align="left"><a href="stklos-ref-12.html#SRFIs">SRFIs</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">&nbsp;</td><td align="left"><a href="stklos-ref-13.html#Bibliography">Bibliography</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">13&nbsp;</td><td align="left"><a href="stklos-ref-13.html#Index">Index</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">&nbsp;</td><td align="left"><a href="stklos-ref-14.html#Bibliography">Bibliography</a></td></tr>
</tbody></table> </tbody></table>
</td> </td>
<td align="left" valign="top"> <td align="left" valign="top">
<a name="-section-809"></a> <a name="-section-4175"></a>
<table width="100%"><tr><td bgcolor="#E6F2E6"><h3><font color="#000000">1.1 Overview of <span style="font-variant: small-caps">STklos</span></font></h3></table> <table width="100%"><tr><td bgcolor="#E6F2E6"><h3><font color="#000000">1.1 Overview of <span style="font-variant: small-caps">STklos</span></font></h3></table>
<a name="--index-entry-765"></a><a name="--index-entry-770"></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-4131"></a><a name="--index-entry-4136"></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-13.html#Gallesio95-1a">6</a>], a Scheme interpreter which was tightly [<a href="stklos-ref-14.html#Gallesio95-1a">6</a>], a Scheme interpreter which was tightly
connected to the Tk graphical toolkit [<a href="stklos-ref-13.html#Ouster-Tk">11</a>]. connected to the Tk graphical toolkit [<a href="stklos-ref-14.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 <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
time, <span style="font-variant: small-caps">STk</span> was used to denote the base Scheme interpreter and time, <span style="font-variant: small-caps">STk</span> was used to denote the base Scheme interpreter and
<span style="font-variant: small-caps">STklos</span> was used to denote its object layer, which was an <span style="font-variant: small-caps">STklos</span> was used to denote its object layer, which was an
...@@ -51,7 +52,7 @@ extension. For instance, when programming a GUI application, ...@@ -51,7 +52,7 @@ extension. For instance, when programming a GUI application,
a user could access the widgets at the (low) Tk level, or access 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 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 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-793"></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-4159"></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 completely rewritten and as a consequence, due to new
implementation choices, old <span style="font-variant: small-caps">STk</span> programs are not fully 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 compatible with the new system. However, these changes are very
...@@ -59,19 +60,19 @@ minor and adapting a <span style="font-variant: small-caps">STk</span> program f ...@@ -59,19 +60,19 @@ minor and adapting a <span style="font-variant: small-caps">STk</span> program f
generally quite easy. The only programs which need heavier work generally quite easy. The only programs which need heavier work
are programs which use Tk without objects, since the new are programs which use Tk without objects, since the new
preferred GUI system is now based on GTK+ preferred GUI system is now based on GTK+
[<a href="stklos-ref-13.html#GTK">2</a>]. Programmers used to GUI programming using [<a href="stklos-ref-14.html#GTK">2</a>]. Programmers used to GUI programming using
<span style="font-variant: small-caps">STklos</span> classes will find that both system, even if not <span style="font-variant: small-caps">STklos</span> classes will find that both system, even if not
identical in every points, share the same philosophy.</p><a name="-Lexical-Conventions"></a> identical in every points, share the same philosophy.</p><a name="-Lexical-Conventions"></a>
<table width="100%"><tr><td bgcolor="#E6F2E6"><h3 id="-Lexical-Conventions"><font color="#000000">1.2 Lexical Conventions</font></h3></table> <table width="100%"><tr><td bgcolor="#E6F2E6"><h3 id="-Lexical-Conventions"><font color="#000000">1.2 Lexical Conventions</font></h3></table>
<a name="Identifiers"></a> <a name="Identifiers"></a>
<h4 id="Identifiers"><font color="darkolivegreen">1.2.1 Identifiers</font></h4> <h4 id="Identifiers"><font color="darkolivegreen">1.2.1 Identifiers</font></h4>
<a name="--index-entry-812"></a><p>In <span style="font-variant: small-caps">STklos</span>, identifiers which start (or end) with a colon <a name="--index-entry-4178"></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>:</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>: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 <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> 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> <h4 id="Comments"><font color="darkolivegreen">1.2.2 Comments</font></h4>
<a name="--index-entry-830"></a><a name="--index-entry-834"></a><a name="--index-entry-838"></a><a name="--index-entry-842"></a><a name="--index-entry-846"></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-4196"></a><a name="--index-entry-4200"></a><a name="--index-entry-4204"></a><a name="--index-entry-4208"></a><a name="--index-entry-4212"></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 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> described in <span style="font-variant: small-caps">R<sup>5</sup>RS</span>).</li>
<li> multi-lines comment use the classical Lisp convention: <li> multi-lines comment use the classical Lisp convention:
...@@ -97,7 +98,7 @@ the notation introduced in <strong><a href="http://srfi.schemers.org/srfi-22/srf ...@@ -97,7 +98,7 @@ the notation introduced in <strong><a href="http://srfi.schemers.org/srfi-22/srf
keywords "<code>:key</code>", "<code>:optional</code>" and keywords "<code>:key</code>", "<code>:optional</code>" and
"<code>:rest</code>". This permits to Scheme lambdas, which "<code>:rest</code>". This permits to Scheme lambdas, which
accepts keywords and optional arguments, to be compatible with accepts keywords and optional arguments, to be compatible with
DSSSL lambdas [<a href="stklos-ref-13.html#dsssl-96">10</a>].</p></li> DSSSL lambdas [<a href="stklos-ref-14.html#dsssl-96">10</a>].</p></li>
</ul><a name="Other-Notations"></a> </ul><a name="Other-Notations"></a>
<h4 id="Other-Notations"><font color="darkolivegreen">1.2.3 Other Notations</font></h4> <h4 id="Other-Notations"><font color="darkolivegreen">1.2.3 Other Notations</font></h4>
<p><span style="font-variant: small-caps">STk</span> accepts all the notations defined in <span style="font-variant: small-caps">R<sup>5</sup>RS</span> plus</p><ul><li>"<code>[]</code>" Brackets are equivalent to <p><span style="font-variant: small-caps">STk</span> accepts all the notations defined in <span style="font-variant: small-caps">R<sup>5</sup>RS</span> plus</p><ul><li>"<code>[]</code>" Brackets are equivalent to
...@@ -134,6 +135,6 @@ can also be represented in this way: ...@@ -134,6 +135,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 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> 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 </tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.inria.fr/mimosa/fp/Skribe">Skribe</a>.<br />Last update <em>Wed Jan 4 14:05:32 2006</em></small> <a href="http://www.inria.fr/mimosa/fp/Skribe">Skribe</a>.<br />Last update <em>Sat Oct 28 21:51:46 2006</em></small>
</body> </body>
</html> </html>
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<td align="left" valign="top" width="20%" bgcolor="#E6F2E6"> <td align="left" valign="top" width="20%" bgcolor="#E6F2E6">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody> <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="darkolivegreen"><font color="white">Contents</font></th></tr> <tr><th align="center" colspan="2" bgcolor="darkolivegreen"><font color="white">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-19777">*Top*</a></td></tr> <tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-29879">*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">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">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> <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,18 +23,19 @@ ...@@ -23,18 +23,19 @@
<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="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%"> <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> <tbody>
<tr><td valign="top" align="left">6.1</td><td colspan="4" width="100%"><a href="stklos-ref-6.html#-section-17278"><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-25379"><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> <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> </tbody>
</table> </table>
</td></tr> </td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">7&nbsp;</td><td align="left"><a href="stklos-ref-7.html#Exceptions-and-Conditions">Exceptions and Conditions</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">7&nbsp;</td><td align="left"><a href="stklos-ref-7.html#Exceptions-and-Conditions">Exceptions and Conditions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">8&nbsp;</td><td align="left"><a href="stklos-ref-8.html#STklos-Object-System">STklos Object System</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">8&nbsp;</td><td align="left"><a href="stklos-ref-8.html#STklos-Object-System">STklos Object System</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">9&nbsp;</td><td align="left"><a href="stklos-ref-9.html#Customizations">Customizations</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">9&nbsp;</td><td align="left"><a href="stklos-ref-9.html#Threads--Mutexes-and-Condition-Variables">Threads, Mutexes and Condition Variables</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">10&nbsp;</td><td align="left"><a href="stklos-ref-10.html#Using-the-SLIB-package">Using the SLIB package</a></td></tr> <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="navnorm"><td width="8%" align="left" valign="top">11&nbsp;</td><td align="left"><a href="stklos-ref-11.html#SRFIs">SRFIs</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">11&nbsp;</td><td align="left"><a href="stklos-ref-11.html#Using-the-SLIB-package">Using the SLIB package</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">12&nbsp;</td><td align="left"><a href="stklos-ref-12.html#Index">Index</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">12&nbsp;</td><td align="left"><a href="stklos-ref-12.html#SRFIs">SRFIs</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">&nbsp;</td><td align="left"><a href="stklos-ref-13.html#Bibliography">Bibliography</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">13&nbsp;</td><td align="left"><a href="stklos-ref-13.html#Index">Index</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">&nbsp;</td><td align="left"><a href="stklos-ref-14.html#Bibliography">Bibliography</a></td></tr>
</tbody></table> </tbody></table>
</td> </td>
<td align="left" valign="top"> <td align="left" valign="top">
...@@ -43,8 +44,8 @@ languages since it allows clean and secure code to be ...@@ -43,8 +44,8 @@ languages since it allows clean and secure code to be
written. Internally, "pattern-matching forms" should be translated written. Internally, "pattern-matching forms" should be translated
(compiled) into cascades of "elementary tests" where code is made as (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> efficient as possible, avoiding redundant tests; <span style="font-variant: small-caps">STklos</span>
"pattern matching compiler" provides this <a href="#fn--footnote-17171"><sup><small>1</small></sup></a>.</p><p>The technique used is described in details in "pattern matching compiler" provides this <a href="#fn--footnote-25253"><sup><small>1</small></sup></a>.</p><p>The technique used is described in details in
[<a href="stklos-ref-13.html#Queinnec-Geffroy92">4</a>], and the code generated can be [<a href="stklos-ref-14.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 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-">???</a>)</li> once, allowing comparison of subparts of the datum (through <a href="stklos-ref-4.html#eq-">???</a>)</li>
...@@ -52,11 +53,11 @@ once, allowing comparison of subparts of the datum (through <a href="stklos-ref- ...@@ -52,11 +53,11 @@ once, allowing comparison of subparts of the datum (through <a href="stklos-ref-
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> <code>b</code>s.</li>
<li>Pattern matching on lists as well as on vectors.</li> <li>Pattern matching on lists as well as on vectors.</li>
</ul><a name="-section-17278"></a> </ul><a name="-section-25379"></a>
<table width="100%"><tr><td bgcolor="#E6F2E6"><h3><font color="#000000">6.1 <span style="font-variant: small-caps">STklos</span> Pattern Matching Facilities</font></h3></table> <table width="100%"><tr><td bgcolor="#E6F2E6"><h3><font color="#000000">6.1 <span style="font-variant: small-caps">STklos</span> Pattern Matching Facilities</font></h3></table>
<p>Only two special forms are provided for this in <span style="font-variant: small-caps">STklos</span>: <code>match-case</code> <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> 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-17194"></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-25276"></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> <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> </tbody></table>
<br />The argument key may be any expression and each clause has the form <br />The argument key may be any expression and each clause has the form
...@@ -92,7 +93,7 @@ The equality predicate used for tests is <code>eq?</code>. ...@@ -92,7 +93,7 @@ The equality predicate used for tests is <code>eq?</code>.
</tbody></table></blockquote> </tbody></table></blockquote>
</td></tr> </td></tr>
</tbody></table><br /><table cellspacing="0" cellpadding="0" width="100%"><tbody> </tbody></table><br /><table cellspacing="0" cellpadding="0" width="100%"><tbody>
<tr><td bgcolor="#dddddd"><a name="match-lambda"></a><a name="--index-entry-17249"></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-25346"></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> <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> </tbody></table>
<br /><code>match-lambda</code> expands into a lambda-expression expecting an argument <br /><code>match-lambda</code> expands into a lambda-expression expecting an argument
...@@ -108,7 +109,7 @@ which, once applied to an expression, behaves exactly like a ...@@ -108,7 +109,7 @@ which, once applied to an expression, behaves exactly like a
</td></tr> </td></tr>
</tbody></table><a name="The-Pattern-Language"></a> </tbody></table><a name="The-Pattern-Language"></a>
<table width="100%"><tr><td bgcolor="#E6F2E6"><h3 id="The-Pattern-Language"><font color="#000000">6.2 The Pattern Language</font></h3></table> <table width="100%"><tr><td bgcolor="#E6F2E6"><h3 id="The-Pattern-Language"><font color="#000000">6.2 The Pattern Language</font></h3></table>
<a name="--index-entry-17281"></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-25382"></a><p>The syntax for <code>&lt;pattern&gt;</code> is:</p><blockquote><table cellspacing="0" cellpadding="4" width="90%"><tbody>
<tr><td bgcolor="#eee8bf"><pre>&lt;pattern&gt; ==&gt; <em>Matches:</em> <tr><td bgcolor="#eee8bf"><pre>&lt;pattern&gt; ==&gt; <em>Matches:</em>
&lt;atom&gt; <em>the &lt;atom&gt;.</em> &lt;atom&gt; <em>the &lt;atom&gt;.</em>
...@@ -160,8 +161,8 @@ not appear inside a vector, where you should use <code>???-</code>: ...@@ -160,8 +161,8 @@ not appear inside a vector, where you should use <code>???-</code>:
For example, <code>#(a ??- b)</code> or <code>#(a...)</code> are invalid For example, <code>#(a ??- b)</code> or <code>#(a...)</code> are invalid
patterns, whereas <code>#(a ???-)</code> is valid and matches any 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'> vector whose first element is the atom <code>a</code>.</p><br><br><hr width='20%' size='2' align='left'>
<a name="fn--footnote-17171"><sup><small>1</small></sup></a>: The "pattern matching compiler" has been written by Jean-Marie Geffroy <a name="fn--footnote-25253"><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-13.html#Bigloo-home">1</a>] and is part of the Manuel Serrano's Bigloo compiler [<a href="stklos-ref-14.html#Bigloo-home">1</a>]
since several years. The code (and documentation) included in <span style="font-variant: small-caps">STklos</span> 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 has been stolen from the Bigloo package v2.4 (the only difference
between both package is the pattern matching of structures which is between both package is the pattern matching of structures which is
...@@ -169,6 +170,6 @@ vector whose first element is the atom <code>a</code>.</p><br><br><hr width='20% ...@@ -169,6 +170,6 @@ vector whose first element is the atom <code>a</code>.</p><br><br><hr width='20%
<br> <br>
</td> </td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by </tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.inria.fr/mimosa/fp/Skribe">Skribe</a>.<br />Last update <em>Wed Jan 4 14:05:37 2006</em></small> <a href="http://www.inria.fr/mimosa/fp/Skribe">Skribe</a>.<br />Last update <em>Sat Oct 28 21:51:50 2006</em></small>
</body> </body>
</html> </html>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<td align="left" valign="top" width="20%" bgcolor="#E6F2E6"> <td align="left" valign="top" width="20%" bgcolor="#E6F2E6">
<br /><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody> <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="darkolivegreen"><font color="white">Contents</font></th></tr> <tr><th align="center" colspan="2" bgcolor="darkolivegreen"><font color="white">Contents</font></th></tr>
<tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-19777">*Top*</a></td></tr> <tr class="navnorm"><td align="center"></td><td align="left"><a href="stklos-ref.html#-document-29879">*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">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">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> <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>
...@@ -25,22 +25,23 @@ ...@@ -25,22 +25,23 @@
<tr class="navnorm"><td width="8%" align="left" valign="top">6&nbsp;</td><td align="left"><a href="stklos-ref-6.html#Pattern-Matching">Pattern Matching</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">6&nbsp;</td><td align="left"><a href="stklos-ref-6.html#Pattern-Matching">Pattern Matching</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">7&nbsp;</td><td align="left"><a href="stklos-ref-7.html#Exceptions-and-Conditions">Exceptions and Conditions</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">7&nbsp;</td><td align="left"><a href="stklos-ref-7.html#Exceptions-and-Conditions">Exceptions and Conditions</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">8&nbsp;</td><td align="left"><a href="stklos-ref-8.html#STklos-Object-System">STklos Object System</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">8&nbsp;</td><td align="left"><a href="stklos-ref-8.html#STklos-Object-System">STklos Object System</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">9&nbsp;</td><td align="left"><a href="stklos-ref-9.html#Customizations">Customizations</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">9&nbsp;</td><td align="left"><a href="stklos-ref-9.html#Threads--Mutexes-and-Condition-Variables">Threads, Mutexes and Condition Variables</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">10&nbsp;</td><td align="left"><a href="stklos-ref-10.html#Using-the-SLIB-package">Using the SLIB package</a></td></tr> <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="navnorm"><td width="8%" align="left" valign="top">11&nbsp;</td><td align="left"><a href="stklos-ref-11.html#SRFIs">SRFIs</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">11&nbsp;</td><td align="left"><a href="stklos-ref-11.html#Using-the-SLIB-package">Using the SLIB package</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">12&nbsp;</td><td align="left"><a href="stklos-ref-12.html#Index">Index</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">12&nbsp;</td><td align="left"><a href="stklos-ref-12.html#SRFIs">SRFIs</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">&nbsp;</td><td align="left"><a href="stklos-ref-13.html#Bibliography">Bibliography</a></td></tr> <tr class="navnorm"><td width="8%" align="left" valign="top">13&nbsp;</td><td align="left"><a href="stklos-ref-13.html#Index">Index</a></td></tr>
<tr class="navnorm"><td width="8%" align="left" valign="top">&nbsp;</td><td align="left"><a href="stklos-ref-14.html#Bibliography">Bibliography</a></td></tr>
</tbody></table> </tbody></table>
</td> </td>
<td align="left" valign="top"> <td align="left" valign="top">
<br /><br /><br />This document provides a complete list of procedures and special <br /><br /><br />This document provides a complete list of procedures and special
forms implemented in version <strong>0.72</strong> of forms implemented in version <strong>0.80</strong> of
<span style="font-variant: small-caps">STklos</span>. Since <span style="font-variant: small-caps">STklos</span> is (nearly) compliant with the <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 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-13.html#R5RS">12</a>], Algorithmic Language Scheme (aka <span style="font-variant: small-caps">R<sup>5</sup>RS</span>) [<a href="stklos-ref-14.html#R5RS">12</a>],
the organization of this manual follows closely the one of this the organization of this manual follows closely the one of this
document.<a name="--index-entry-19079"></a></td> document.<a name="--index-entry-28864"></a></td>
</tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by </tr></table><small><hr>This <span style="font-variant: small-caps">Html</span> page has been produced by
<a href="http://www.inria.fr/mimosa/fp/Skribe">Skribe</a>.<br />Last update <em>Wed Jan 4 14:05:41 2006</em></small> <a href="http://www.inria.fr/mimosa/fp/Skribe">Skribe</a>.<br />Last update <em>Sat Oct 28 21:51:53 2006</em></small>
</body> </body>
</html> </html>
No preview for this file type
/* /*
This file was automatically generated on Sat Oct 28 18:01:34 2006 by make-C-boot This file was automatically generated on Sat Oct 28 21:51:08 2006 by make-C-boot
This is a dump of the image in file /mnt/users/eg/Projects/STklos/lib/boot.img3 This is a dump of the image in file /mnt/users/eg/Projects/STklos/lib/boot.img3
***DO NOT EDIT BY HAND*** ***DO NOT EDIT BY HAND***
*/ */
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
* *
* Author: Erick Gallesio [eg@unice.fr] * Author: Erick Gallesio [eg@unice.fr]
* Creation date: 9-Jan-2000 12:50 (eg) * Creation date: 9-Jan-2000 12:50 (eg)
* Last file update: 28-Oct-2006 20:03 (eg) * Last file update: 28-Oct-2006 21:47 (eg)
*/ */
#include "stklos.h" #include "stklos.h"
...@@ -126,14 +126,14 @@ DEFINE_PRIMITIVE("address-of", address_of, subr1, (SCM object)) ...@@ -126,14 +126,14 @@ DEFINE_PRIMITIVE("address-of", address_of, subr1, (SCM object))
* GC stuff * GC stuff
* *
\*===========================================================================*/ \*===========================================================================*/
#ifdef STK_DEBUG #ifndef STK_DEBUG
static void ignore_GC_warning(char *msg, GC_word arg) { return; } static void ignore_GC_warning(char *msg, GC_word arg) { return; }
#endif #endif
void STk_gc_init(void) void STk_gc_init(void)
{ {
GC_init(); GC_init();
#ifdef STK_DEBUG #ifndef STK_DEBUG
/* No warning when on production. Is this reasonable? */ /* No warning when on production. Is this reasonable? */
GC_set_warn_proc(ignore_GC_warning); GC_set_warn_proc(ignore_GC_warning);
#endif #endif
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
* *
* Author: Erick Gallesio [eg@essi.fr] * Author: Erick Gallesio [eg@essi.fr]
* Creation date: 23-Jan-2006 12:14 (eg) * Creation date: 23-Jan-2006 12:14 (eg)
* Last file update: 28-Oct-2006 19:27 (eg) * Last file update: 28-Oct-2006 21:42 (eg)
*/ */
...@@ -139,11 +139,7 @@ doc> ...@@ -139,11 +139,7 @@ doc>
*/ */
DEFINE_PRIMITIVE("thread-yield!", thread_yield, subr0, (void)) DEFINE_PRIMITIVE("thread-yield!", thread_yield, subr0, (void))
{ {
#ifdef _POSIX_PRIORITY_SCHEDULING pthread_yield();
sched_yield();
#else
/* Do nothing. Is it correct? */
#endif
return STk_void; return STk_void;
} }
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
;;;; ;;;;
;;;; Author: Erick Gallesio [eg@essi.fr] ;;;; Author: Erick Gallesio [eg@essi.fr]
;;;; Creation date: 16-Apr-2006 12:54 (eg) ;;;; Creation date: 16-Apr-2006 12:54 (eg)
;;;; Last file update: 27-Oct-2006 15:00 (eg) ;;;; Last file update: 28-Oct-2006 21:34 (eg)
;;;; ;;;;
...@@ -96,8 +96,8 @@ ...@@ -96,8 +96,8 @@
44 44
(let ((t (make-thread list))) (let ((t (make-thread list)))
(thread-start! t) (thread-start! t)
(thread-yield!) ; (thread-yield!)
(thread-sleep! 0.01) ; (thread-sleep! 0.01)
(thread-terminate! T) (thread-terminate! T)
44)) 44))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment