[MLton-commit] r5943
Matthew Fluet
fluet at mlton.org
Fri Aug 24 14:41:19 PDT 2007
Ran grab-wiki
----------------------------------------------------------------------
U mlton/trunk/doc/guide/AccessControl
U mlton/trunk/doc/guide/Bugs20041109
U mlton/trunk/doc/guide/Bugs20051202
U mlton/trunk/doc/guide/Bugs200708XX
U mlton/trunk/doc/guide/CKitLibrary
U mlton/trunk/doc/guide/Changelog
U mlton/trunk/doc/guide/ConcurrentML
U mlton/trunk/doc/guide/Development
U mlton/trunk/doc/guide/Fixpoints
U mlton/trunk/doc/guide/Index
U mlton/trunk/doc/guide/MLBasisAnnotations
U mlton/trunk/doc/guide/MLBasisAvailableLibraries
U mlton/trunk/doc/guide/MLNLFFI
U mlton/trunk/doc/guide/MLRISCLibrary
U mlton/trunk/doc/guide/MLTONWIKIVERSION
U mlton/trunk/doc/guide/MLtonIntInf
U mlton/trunk/doc/guide/OrphanedPages
U mlton/trunk/doc/guide/PageSize
U mlton/trunk/doc/guide/Projects
U mlton/trunk/doc/guide/PropertyList
A mlton/trunk/doc/guide/Release20041109
U mlton/trunk/doc/guide/Release20051202
U mlton/trunk/doc/guide/Release200708XX
U mlton/trunk/doc/guide/ReleaseChecklist
U mlton/trunk/doc/guide/SMLNJLibrary
U mlton/trunk/doc/guide/SystemInfo
U mlton/trunk/doc/guide/VesaKarvonen
U mlton/trunk/doc/guide/WantedPages
----------------------------------------------------------------------
Modified: mlton/trunk/doc/guide/AccessControl
===================================================================
--- mlton/trunk/doc/guide/AccessControl 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/AccessControl 2007-08-24 21:41:16 UTC (rev 5943)
@@ -56,7 +56,7 @@
</table>
<div id="content" lang="en" dir="ltr">
<a href="MoinMoin">MoinMoin</a> supports a lot of <a class="external" href="http://moinmaster.wikiwikiweb.de/HelpOnAccessControlLists"><img src="moin-www.png" alt="[WWW]" height="11" width="11">access control features</a>. <p>
-Because people download binaries from the MLton web site, and we are worried about malicious users either changing those binaries, or changing the links that should point at those binaries, we allow editing of some pages (in particular, <a href="http://mlton.org/Download"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Download</a>, <a href="Home">Home</a>, and <a href="http://mlton.org/Experimental"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Experimental</a>) only by <a href="TrustedGroup">TrustedGroup</a> members.
+Because people download binaries from the MLton web site, and we are worried about malicious users either changing those binaries, or changing the links that should point at those binaries, we allow editing of some pages (in particular, <a href="Home">Home</a>, <a href="http://mlton.org/Download"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Download</a>, <a href="http://mlton.org/Experimental"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Experimental</a>, and <strong>ReleaseYYYYMMDD</strong> pages) only by <a href="TrustedGroup">TrustedGroup</a> members.
</p>
<p>
All other pages are freely editable by any user with an account.
@@ -67,5 +67,5 @@
<p>
<hr>
-Last edited on 2005-11-30 19:54:23 by <span title="ppp-71-139-183-221.dsl.snfc21.pacbell.net"><a href="StephenWeeks">StephenWeeks</a></span>.
+Last edited on 2007-08-24 20:29:18 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/Bugs20041109
===================================================================
--- mlton/trunk/doc/guide/Bugs20041109 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Bugs20041109 2007-08-24 21:41:16 UTC (rev 5943)
@@ -55,7 +55,7 @@
</table>
<div id="content" lang="en" dir="ltr">
-Here are the known bugs in MLton 20041109, listed in reverse chronological order of date reported. <p>
+Here are the known bugs in <a href="Release20041109">MLton 20041109</a>, listed in reverse chronological order of date reported. <p>
<a id="17"></a>
</p>
@@ -372,5 +372,5 @@
<p>
<hr>
-Last edited on 2005-12-01 05:16:27 by <span title="ppp-71-139-183-221.dsl.snfc21.pacbell.net"><a href="StephenWeeks">StephenWeeks</a></span>.
+Last edited on 2007-08-24 20:21:00 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/Bugs20051202
===================================================================
--- mlton/trunk/doc/guide/Bugs20051202 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Bugs20051202 2007-08-24 21:41:16 UTC (rev 5943)
@@ -55,7 +55,7 @@
</table>
<div id="content" lang="en" dir="ltr">
-Here are the known bugs in MLton 20051202, listed in reverse chronological order of date reported. <p>
+Here are the known bugs in <a href="Release20051202">MLton 20051202</a>, listed in reverse chronological order of date reported. <p>
<a id="15"></a>
</p>
@@ -299,5 +299,5 @@
<p>
<hr>
-Last edited on 2007-08-15 22:05:20 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-24 20:21:04 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/Bugs200708XX
===================================================================
--- mlton/trunk/doc/guide/Bugs200708XX 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Bugs200708XX 2007-08-24 21:41:16 UTC (rev 5943)
@@ -55,7 +55,7 @@
</table>
<div id="content" lang="en" dir="ltr">
-Here are the known bugs in MLton 200708XX, listed in reverse chronological order of date reported. <p>
+Here are the known bugs in <a href="Release200708XX">MLton 200708XX</a>, listed in reverse chronological order of date reported. <p>
</p>
</div>
@@ -64,5 +64,5 @@
<p>
<hr>
-Last edited on 2007-08-16 01:01:15 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-24 20:21:07 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/CKitLibrary
===================================================================
--- mlton/trunk/doc/guide/CKitLibrary 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/CKitLibrary 2007-08-24 21:41:16 UTC (rev 5943)
@@ -66,10 +66,27 @@
<li>
<p>
- You can import the ckit Library into an MLB file with <tt>$(SML_LIB)/ckit-lib/ckit-lib.mlb</tt>
+ You can import the ckit Library into an MLB file with:
+<div>
+<table>
+ <tr>
+<td align="center">
+MLB file</td>
+<td align="center">
+Description</td>
+</tr>
+ <tr>
+<td>
+<tt>$(SML_LIB)/ckit-lib/ckit-lib.mlb</tt></td>
+<td>
+ </td>
+</tr>
+
</p>
+</table>
+</div>
</li>
- <li>
+ <li class="gap">
<p>
If you are porting a project from SML/NJ's <a href="CompilationManager">CompilationManager</a> to MLton's <a href="MLBasis"> ML Basis system</a> using <tt>cm2mlb</tt>, note that the following map is included by default:
<pre>$ckit-lib.cm/ckit-lib.cm $(SML_LIB)/ckit-lib/ckit-lib.mlb
@@ -163,5 +180,5 @@
<p>
<hr>
-Last edited on 2007-08-13 02:31:06 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 17:24:41 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/Changelog
===================================================================
--- mlton/trunk/doc/guide/Changelog 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Changelog 2007-08-24 21:41:16 UTC (rev 5943)
@@ -59,9 +59,9 @@
Summary:
+ New platforms:
- o amd64-linux, amd64-freebsd, ...
- o hppa-hpux, ...
- o powerpc-aix, ...
+ o amd64-linux, amd64-freebsd
+ o hppa-hpux
+ o powerpc-aix
o x86-darwin (Mac OS X)
+ Compiler.
o Support for 64-bit platforms.
Modified: mlton/trunk/doc/guide/ConcurrentML
===================================================================
--- mlton/trunk/doc/guide/ConcurrentML 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/ConcurrentML 2007-08-24 21:41:16 UTC (rev 5943)
@@ -91,8 +91,25 @@
<li>
<p>
- You can import the CML Library into an MLB file with <tt>$(SML_LIB)/cml/cml.mlb</tt>
+ You can import the CML Library into an MLB file with:
+<div>
+<table>
+ <tr>
+<td align="center">
+MLB file</td>
+<td align="center">
+Description</td>
+</tr>
+ <tr>
+<td>
+<tt>$(SML_LIB)/cml/cml.mlb</tt></td>
+<td>
+ </td>
+</tr>
+
</p>
+</table>
+</div>
</li>
<li class="gap">
<p>
@@ -127,5 +144,5 @@
<p>
<hr>
-Last edited on 2005-12-02 03:33:39 by <span title="ppp-71-139-183-221.dsl.snfc21.pacbell.net"><a href="StephenWeeks">StephenWeeks</a></span>.
+Last edited on 2007-08-23 17:24:44 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/Development
===================================================================
--- mlton/trunk/doc/guide/Development 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Development 2007-08-24 21:41:16 UTC (rev 5943)
@@ -65,6 +65,11 @@
</li>
<li>
<p>
+ Check the latest <a href="Changelog">Changelog</a>.
+</p>
+</li>
+ <li>
+<p>
Ideas for <a href="Projects">Projects</a> to improve MLton.
</p>
</li>
@@ -129,5 +134,5 @@
<p>
<hr>
-Last edited on 2007-07-08 20:58:25 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 12:56:56 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/Fixpoints
===================================================================
--- mlton/trunk/doc/guide/Fixpoints 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Fixpoints 2007-08-24 21:41:16 UTC (rev 5943)
@@ -55,155 +55,172 @@
</table>
<div id="content" lang="en" dir="ltr">
-In a strict language, such as <a href="StandardML">Standard ML</a>, you sometimes want to provide a fixpoint combinator for an abstract type <tt>t</tt> to make it possible to write recursive definitions. While it is easy to write an ad hoc fixpoint combinator for a single abstract type, it is more challenging to provide a general purpose framework for computing fixpoints. First of all, a single combinator <tt>fix</tt> with a type of the form <tt>(t -> t) -> t</tt> does not support mutual recursion over multiple values of type <tt>t</tt>. To support mutual recursion, you might provide a family of fixpoint combinators having types of the form <tt>(u -> u) -> u</tt> where <tt>u</tt> is a type of the form <tt>t * ... * t</tt>. Unfortunately, even such a family of fixpoint combinators does not support mutual recursion over multiple different abstract types. The gist of the problem is that we need a <a href="TypeIndexedValues">type-indexed</a> family of fixpoint combinators. Below is a solution that allows for computing fixpoints over arbitrary products. The code on this page makes use of some <a href="Utilities">Utilities</a>. <p>
-First the signature of the fixpoint framework:
+This page discusses a framework that makes it possible to compute fixpoints over arbitrary products of abstract types. The code is from an Extended Basis library (<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mltonlib/trunk/com/ssh/extended-basis/unstable/README?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">README</a>). <p>
+First the signature of the framework:
</p>
+<p>
+<pre class=code><I><FONT COLOR="#B22222">(**
+ * A framework for computing fixpoints.
+ *
+ * In a strict language you sometimes want to provide a fixpoint
+ * combinator for an abstract type {t} to make it possible to write
+ * recursive definitions. Unfortunately, a single combinator {fix} of the
+ * type {(t -> t) -> t} does not support mutual recursion. To support
+ * mutual recursion, you would need to provide a family of fixpoint
+ * combinators having types of the form {(u -> u) -> u} where {u} is a
+ * type of the form {t * ... * t}. Unfortunately, even such a family of
+ * fixpoint combinators does not support mutual recursion over different
+ * abstract types.
+ *)</FONT></I>
+<B><FONT COLOR="#0000FF">signature</FONT></B> TIE = <B><FONT COLOR="#0000FF">sig</FONT></B>
+ <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a dom </FONT></B><B><FONT COLOR="#A020F0">and</FONT></B><B><FONT COLOR="#228B22"> 'a cod
+ </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t </FONT></B>=<B><FONT COLOR="#228B22"> 'a dom -> 'a cod
+ <I><FONT COLOR="#B22222">(**
+ * The type of fixpoint witnesses.
+ *
+ * The type constructors {dom} and {cod} are used to expose the arrow
+ * {->} type constructor (to allow eta-expansion) while keeping the
+ * domain and codomain abstract.
+ *)</FONT></I>
-<pre class=code>
-<B><FONT COLOR="#0000FF">signature</FONT></B> FIX =
- <B><FONT COLOR="#0000FF">sig</FONT></B>
- <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t1
- </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t2
- </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t </FONT></B>=<B><FONT COLOR="#228B22"> 'a t1 -> 'a t2
+ </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> fix : 'a t -> 'a Fix.t
+ <I><FONT COLOR="#B22222">(**
+ * Produces a fixpoint combinator from the given witness. For example,
+ * one can make a mutually recursive definition of functions:
+ *
+ *> val isEven & isOdd =
+ *> let open Tie in fix (function *` function) end
+ *> (fn isEven & isOdd =>
+ *> (fn 0 => true
+ *> | 1 => false
+ *> | n => isOdd (n-1)) &
+ *> (fn 0 => false
+ *> | 1 => true
+ *> | n => isEven (n-1)))
+ *)</FONT></I>
- </FONT></B><B><FONT COLOR="#A020F0">exception</FONT></B><B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Fix</FONT>
+ <I><FONT COLOR="#B22222">(** == Making New Witnesses == *)</FONT></I>
- </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> fix : 'a t -> 'a fix
- <B><FONT COLOR="#A020F0">val</FONT></B> pure : ('a * 'a uop) thunk -> 'a t
- <B><FONT COLOR="#A020F0">val</FONT></B> tier : ('a * 'a effect) thunk -> 'a t
- <B><FONT COLOR="#A020F0">val</FONT></B> iso : ('a, 'b) emb -> 'b t -> 'a t
- <B><FONT COLOR="#A020F0">val</FONT></B> ^ : 'a t * 'b t -> ('a, 'b) product t
- <B><FONT COLOR="#0000FF">end</FONT></B>
-</PRE>
-<p>
-
-</p>
-<p>
-<tt>fix</tt> is a <a href="TypeIndexedValues">type-indexed</a> function. The type parameter to <tt>fix</tt> is called a "tier". To compute fixpoints over products, one uses the <tt>^</tt> operator to combine tiers. To provide a fixpoint combinator for an abstract type, one implements a tier providing a thunk whose instantiation allocates a fresh "knot" and a procedure for "tying" it. Naturally this means that not all possible ways of computing a fixpoint of a particular type are possible under this framework. The <tt>pure</tt> combinator is a generalization of <tt>tier</tt>. The <tt>iso</tt> combinator is provided for reusing existing tiers.
-</p>
-<p>
-Note that instead of using an infix operator, we could alternatively employ an interface using <a href="Fold">Fold</a>. Also, the tiers are eta-expanded to work around the <a href="ValueRestriction">value restriction</a>, while maintaining abstraction (the signature keeps tiers abstract).
-</p>
-<p>
-Here is an implementation:
-</p>
+ <B><FONT COLOR="#A020F0">val</FONT></B> pure : ('a * 'a UnOp.t) Thunk.t -> 'a t
+ <I><FONT COLOR="#B22222">(**
+ * {pure} is a more general version of {tier}. It is mostly useful for
+ * computing fixpoints in a non-imperative manner.
+ *)</FONT></I>
-<pre class=code>
-<B><FONT COLOR="#0000FF">structure</FONT></B> Fix :> FIX =
- <B><FONT COLOR="#0000FF">struct</FONT></B>
- <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t1 </FONT></B>=<B><FONT COLOR="#228B22"> unit
- </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t2 </FONT></B>=<B><FONT COLOR="#228B22"> 'a * 'a uop
- </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t </FONT></B>=<B><FONT COLOR="#228B22"> 'a t1 -> 'a t2
+ <B><FONT COLOR="#A020F0">val</FONT></B> tier : ('a * 'a Effect.t) Thunk.t -> 'a t
+ <I><FONT COLOR="#B22222">(**
+ * {tier} is used to define fixpoint tiers for new abstract types by
+ * providing a thunk whose instantiation allocates a mutable proxy and
+ * a procedure for updating it with the result.
+ *)</FONT></I>
- </FONT></B><B><FONT COLOR="#A020F0">exception</FONT></B><B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Fix</FONT>
+ <B><FONT COLOR="#A020F0">val</FONT></B> id : 'a -> 'a t
+ <I><FONT COLOR="#B22222">(** {id x} is equivalent to {pure (const (x, id))}. *)</FONT></I>
- </FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> fix a f =
- <B><FONT COLOR="#A020F0">let</FONT></B>
- <B><FONT COLOR="#A020F0">val</FONT></B> (a, ta) = a ()
- <B><FONT COLOR="#A020F0">in</FONT></B>
- ta (f a)
- <B><FONT COLOR="#A020F0">end</FONT></B>
+ <I><FONT COLOR="#B22222">(** == Combining Existing Tiers == *)</FONT></I>
- <B><FONT COLOR="#A020F0">val</FONT></B> pure = id
+ <B><FONT COLOR="#A020F0">val</FONT></B> iso : 'b t -> ('a, 'b) Iso.t -> 'a t
+ <I><FONT COLOR="#B22222">(**
+ * Given an isomorphism between {'a} and {'b} and a witness for {'b},
+ * produces a witness for {'a}. This is useful when you have a new
+ * type that is isomorphic to some old type for which you already have
+ * a witness.
+ *)</FONT></I>
- <B><FONT COLOR="#A020F0">fun</FONT></B> tier th () =
- <B><FONT COLOR="#A020F0">let</FONT></B>
- <B><FONT COLOR="#A020F0">val</FONT></B> (a, ta) = th ()
- <B><FONT COLOR="#A020F0">in</FONT></B>
- (a, const a o ta)
- <B><FONT COLOR="#A020F0">end</FONT></B>
+ <B><FONT COLOR="#A020F0">val</FONT></B> *` : 'a t * 'b t -> ('a, 'b) Product.t t
+ <I><FONT COLOR="#B22222">(**
+ * Given witnesses for {'a} and {'b} produces a witness for the product
+ * {('a, 'b) Product.t}. This is used when mutual recursion is needed.
+ *)</FONT></I>
- <B><FONT COLOR="#A020F0">fun</FONT></B> iso (a2b, b2a) b () =
- <B><FONT COLOR="#A020F0">let</FONT></B>
- <B><FONT COLOR="#A020F0">val</FONT></B> (b, tb) = b ()
- <B><FONT COLOR="#A020F0">in</FONT></B>
- (b2a b, b2a o tb o a2b)
- <B><FONT COLOR="#A020F0">end</FONT></B>
+ <B><FONT COLOR="#A020F0">val</FONT></B> tuple2 : 'a t * 'b t -> ('a * 'b) t
+ <I><FONT COLOR="#B22222">(**
+ * Given witnesses for {'a} and {'b} produces a witness for the product
+ * {'a * 'b}.
+ *)</FONT></I>
- <B><FONT COLOR="#A020F0">fun</FONT></B> (a ^ b) () =
- <B><FONT COLOR="#A020F0">let</FONT></B>
- <B><FONT COLOR="#A020F0">val</FONT></B> (a, ta) = a ()
- <B><FONT COLOR="#A020F0">val</FONT></B> (b, tb) = b ()
- <B><FONT COLOR="#A020F0">in</FONT></B>
- (a & b, <B><FONT COLOR="#A020F0">fn</FONT></B> a & b => ta a & tb b)
- <B><FONT COLOR="#A020F0">end</FONT></B>
- <B><FONT COLOR="#0000FF">end</FONT></B>
+ <I><FONT COLOR="#B22222">(** == Particular Tiers == *)</FONT></I>
+
+ <B><FONT COLOR="#A020F0">val</FONT></B> function : ('a -> 'b) t
+ <I><FONT COLOR="#B22222">(** Witness for functions. *)</FONT></I>
+<B><FONT COLOR="#0000FF">end</FONT></B>
</PRE>
-<p>
</p>
<p>
-Let's then take a look at some examples. First a simple tier for functions:
+<tt>fix</tt> is a <a href="TypeIndexedValues">type-indexed</a> function. The type-index parameter to <tt>fix</tt> is called a "witness". To compute fixpoints over products, one uses the <tt>*`</tt> operator to combine witnesses. To provide a fixpoint combinator for an abstract type, one implements a witness providing a thunk whose instantiation allocates a fresh, mutable proxy and a procedure for updating the proxy with the solution. Naturally this means that not all possible ways of computing a fixpoint of a particular type are possible under the framework. The <tt>pure</tt> combinator is a generalization of <tt>tier</tt>. The <tt>iso</tt> combinator is provided for reusing existing witnesses.
</p>
-
-<pre class=code>
-<B><FONT COLOR="#0000FF">structure</FONT></B> Fn :>
- <B><FONT COLOR="#0000FF">sig</FONT></B>
- <B><FONT COLOR="#A020F0">val</FONT></B> Y : ('a -> 'b) Fix.t
- <B><FONT COLOR="#0000FF">end</FONT></B> = <B><FONT COLOR="#0000FF">struct</FONT></B>
- <B><FONT COLOR="#A020F0">fun</FONT></B> Y ? = Fix.tier (<B><FONT COLOR="#A020F0">fn</FONT></B> () =>
- <B><FONT COLOR="#A020F0">let</FONT></B>
- <B><FONT COLOR="#A020F0">val</FONT></B> r = ref (fail Fix.Fix)
- <B><FONT COLOR="#A020F0">fun</FONT></B> f x = !r x
- <B><FONT COLOR="#A020F0">in</FONT></B>
- (f, r <\ <B><FONT COLOR="#A020F0">op</FONT></B> :=)
- <B><FONT COLOR="#A020F0">end</FONT></B>) ?
- <B><FONT COLOR="#0000FF">end</FONT></B>
-</PRE>
<p>
-
+Note that instead of using an infix operator, we could alternatively employ an interface using <a href="Fold">Fold</a>. Also, witnesses are eta-expanded to work around the <a href="ValueRestriction">value restriction</a>, while maintaining abstraction.
</p>
<p>
-Here is an example of a mutually recursive definition of functions:
+Here is the implementation:
</p>
-
-<pre class=code>
-<B><FONT COLOR="#A020F0">val</FONT></B> isEven & isOdd =
- <B><FONT COLOR="#A020F0">let</FONT></B> <B><FONT COLOR="#0000FF">open</FONT></B> Fix Fn <B><FONT COLOR="#A020F0">in</FONT></B> fix (Y^Y) <B><FONT COLOR="#A020F0">end</FONT></B>
- (<B><FONT COLOR="#A020F0">fn</FONT></B> isEven & isOdd =>
- (<B><FONT COLOR="#A020F0">fn</FONT></B> <B><FONT COLOR="#5F9EA0">0w0</FONT></B> => true
- | <B><FONT COLOR="#5F9EA0">0w1</FONT></B> => false
- | n => isOdd (n-<B><FONT COLOR="#5F9EA0">0w1</FONT></B>)) &
- (<B><FONT COLOR="#A020F0">fn</FONT></B> <B><FONT COLOR="#5F9EA0">0w0</FONT></B> => false
- | <B><FONT COLOR="#5F9EA0">0w1</FONT></B> => true
- | n => isEven (n-<B><FONT COLOR="#5F9EA0">0w1</FONT></B>)))
+<p>
+<pre class=code><B><FONT COLOR="#0000FF">structure</FONT></B> Tie :> TIE = <B><FONT COLOR="#0000FF">struct</FONT></B>
+ <B><FONT COLOR="#0000FF">open</FONT></B> Product
+ <B><FONT COLOR="#A020F0">infix</FONT></B> &
+ <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a dom </FONT></B>=<B><FONT COLOR="#228B22"> Unit.t
+ </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a cod </FONT></B>=<B><FONT COLOR="#228B22"> ('a * 'a UnOp.t) Thunk.t
+ </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t </FONT></B>=<B><FONT COLOR="#228B22"> 'a dom -> 'a cod
+ </FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> fix aT f = <B><FONT COLOR="#A020F0">let</FONT></B> <B><FONT COLOR="#A020F0">val</FONT></B> (a, ta) = aT () () <B><FONT COLOR="#A020F0">in</FONT></B> ta (f a) <B><FONT COLOR="#A020F0">end</FONT></B>
+ <B><FONT COLOR="#A020F0">val</FONT></B> pure = Thunk.mk
+ <B><FONT COLOR="#A020F0">fun</FONT></B> iso bT (iso <B><FONT COLOR="#A020F0">as</FONT></B> (_, b2a)) () () = <B><FONT COLOR="#A020F0">let</FONT></B>
+ <B><FONT COLOR="#A020F0">val</FONT></B> (b, fB) = bT () ()
+ <B><FONT COLOR="#A020F0">in</FONT></B>
+ (b2a b, Fn.map iso fB)
+ <B><FONT COLOR="#A020F0">end</FONT></B>
+ <B><FONT COLOR="#A020F0">fun</FONT></B> <B><FONT COLOR="#A020F0">op</FONT></B> *` (aT, bT) () () = <B><FONT COLOR="#A020F0">let</FONT></B>
+ <B><FONT COLOR="#A020F0">val</FONT></B> (a, fA) = aT () ()
+ <B><FONT COLOR="#A020F0">val</FONT></B> (b, fB) = bT () ()
+ <B><FONT COLOR="#A020F0">in</FONT></B>
+ (a & b, Product.map (fA, fB))
+ <B><FONT COLOR="#A020F0">end</FONT></B>
+ <I><FONT COLOR="#B22222">(* The rest are not primitive operations. *)</FONT></I>
+ <B><FONT COLOR="#A020F0">fun</FONT></B> tuple2 ab = iso (<B><FONT COLOR="#A020F0">op</FONT></B> *` ab) Product.isoTuple2
+ <B><FONT COLOR="#A020F0">fun</FONT></B> tier th = pure ((<B><FONT COLOR="#A020F0">fn</FONT></B> (a, ua) => (a, Fn.const a o ua)) o th)
+ <B><FONT COLOR="#A020F0">fun</FONT></B> id x = pure (Fn.const (x, Fn.id))
+ <B><FONT COLOR="#A020F0">fun</FONT></B> function ? =
+ pure (<B><FONT COLOR="#A020F0">fn</FONT></B> () => <B><FONT COLOR="#A020F0">let</FONT></B>
+ <B><FONT COLOR="#A020F0">val</FONT></B> r = ref (Basic.raising Fix.Fix)
+ <B><FONT COLOR="#A020F0">in</FONT></B>
+ (<B><FONT COLOR="#A020F0">fn</FONT></B> x => !r x, <B><FONT COLOR="#A020F0">fn</FONT></B> f => (r := f ; f))
+ <B><FONT COLOR="#A020F0">end</FONT></B>) ?
+<B><FONT COLOR="#0000FF">end</FONT></B>
</PRE>
-<p>
</p>
<p>
-Our second example is a naive implementation of lazy promises:
+Let's then take a look at a couple of additional examples.
</p>
+<p>
+Here is a naive implementation of lazy promises:
+</p>
<pre class=code>
-<B><FONT COLOR="#0000FF">structure</FONT></B> Promise :>
- <B><FONT COLOR="#0000FF">sig</FONT></B>
- <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t
- </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> lazy : 'a thunk -> 'a t
- <B><FONT COLOR="#A020F0">val</FONT></B> force : 'a t -> 'a
- <B><FONT COLOR="#A020F0">val</FONT></B> Y : 'a t Fix.t
- <B><FONT COLOR="#0000FF">end</FONT></B> = <B><FONT COLOR="#0000FF">struct</FONT></B>
- <B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> 'a t' </FONT></B>=<B><FONT COLOR="#228B22">
- <FONT COLOR="#B8860B">Exn</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> exn
- </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Thunk</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a thunk
- </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Value</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a
- </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t </FONT></B>=<B><FONT COLOR="#228B22"> 'a t' ref
- </FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> lazy f = ref (Thunk f)
- <B><FONT COLOR="#A020F0">fun</FONT></B> force t =
- <B><FONT COLOR="#A020F0">case</FONT></B> !t <B><FONT COLOR="#A020F0">of</FONT></B>
- Exn e => <B><FONT COLOR="#A020F0">raise</FONT></B> e
- | Thunk f =>
- (t := Value (f ())
- <B><FONT COLOR="#A020F0">handle</FONT></B> e => t := Exn e
- ; force t)
- | Value v => v
- <B><FONT COLOR="#A020F0">fun</FONT></B> Y ? = Fix.tier (<B><FONT COLOR="#A020F0">fn</FONT></B> () =>
- <B><FONT COLOR="#A020F0">let</FONT></B>
- <B><FONT COLOR="#A020F0">val</FONT></B> r = lazy (fail Fix.Fix)
- <B><FONT COLOR="#A020F0">in</FONT></B>
- (r, r <\ <B><FONT COLOR="#A020F0">op</FONT></B> := o !)
- <B><FONT COLOR="#A020F0">end</FONT></B>) ?
- <B><FONT COLOR="#0000FF">end</FONT></B>
+<B><FONT COLOR="#0000FF">structure</FONT></B> Promise :> <B><FONT COLOR="#0000FF">sig</FONT></B>
+ <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t
+ </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> lazy : 'a Thunk.t -> 'a t
+ <B><FONT COLOR="#A020F0">val</FONT></B> force : 'a t -> 'a
+ <B><FONT COLOR="#A020F0">val</FONT></B> Y : 'a t Tie.t
+<B><FONT COLOR="#0000FF">end</FONT></B> = <B><FONT COLOR="#0000FF">struct</FONT></B>
+ <B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> 'a t' </FONT></B>=<B><FONT COLOR="#228B22">
+ <FONT COLOR="#B8860B">EXN</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> exn
+ </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">THUNK</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a Thunk.t
+ </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">VALUE</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a
+ </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t </FONT></B>=<B><FONT COLOR="#228B22"> 'a t' Ref.t
+ </FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> lazy f = ref (THUNK f)
+ <B><FONT COLOR="#A020F0">fun</FONT></B> force t =
+ <B><FONT COLOR="#A020F0">case</FONT></B> !t
+ <B><FONT COLOR="#A020F0">of</FONT></B> EXN e => <B><FONT COLOR="#A020F0">raise</FONT></B> e
+ | THUNK f => (t := VALUE (f ()) <B><FONT COLOR="#A020F0">handle</FONT></B> e => t := EXN e ; force t)
+ | VALUE v => v
+ <B><FONT COLOR="#A020F0">fun</FONT></B> Y ? = Tie.tier (<B><FONT COLOR="#A020F0">fn</FONT></B> () => <B><FONT COLOR="#A020F0">let</FONT></B>
+ <B><FONT COLOR="#A020F0">val</FONT></B> r = lazy (raising Fix.Fix)
+ <B><FONT COLOR="#A020F0">in</FONT></B>
+ (r, r <\ <B><FONT COLOR="#A020F0">op</FONT></B> := o !)
+ <B><FONT COLOR="#A020F0">end</FONT></B>) ?
+<B><FONT COLOR="#0000FF">end</FONT></B>
</PRE>
<p>
@@ -213,33 +230,31 @@
</p>
<pre class=code>
-<B><FONT COLOR="#0000FF">structure</FONT></B> Stream :>
- <B><FONT COLOR="#0000FF">sig</FONT></B>
- <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t
- </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> cons : 'a * 'a t -> 'a t
- <B><FONT COLOR="#A020F0">val</FONT></B> get : 'a t -> ('a * 'a t) option
- <B><FONT COLOR="#A020F0">val</FONT></B> Y : 'a t Fix.t
- <B><FONT COLOR="#0000FF">end</FONT></B> = <B><FONT COLOR="#0000FF">struct</FONT></B>
- <B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> 'a t </FONT></B>=<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">IN</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> ('a * 'a t) option Promise.t
- </FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> cons (x, xs) = IN (Promise.lazy (<B><FONT COLOR="#A020F0">fn</FONT></B> () => SOME (x, xs)))
- <B><FONT COLOR="#A020F0">fun</FONT></B> get (IN p) = Promise.force p
- <B><FONT COLOR="#A020F0">fun</FONT></B> Y ? = Fix.iso (<B><FONT COLOR="#A020F0">fn</FONT></B> IN p => p, IN) Promise.Y ?
- <B><FONT COLOR="#0000FF">end</FONT></B>
+<B><FONT COLOR="#0000FF">structure</FONT></B> Stream :> <B><FONT COLOR="#0000FF">sig</FONT></B>
+ <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a t
+ </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> cons : 'a * 'a t -> 'a t
+ <B><FONT COLOR="#A020F0">val</FONT></B> get : 'a t -> ('a * 'a t) Option.t
+ <B><FONT COLOR="#A020F0">val</FONT></B> Y : 'a t Tie.t
+<B><FONT COLOR="#0000FF">end</FONT></B> = <B><FONT COLOR="#0000FF">struct</FONT></B>
+ <B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> 'a t </FONT></B>=<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">IN</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> ('a * 'a t) Option.t Promise.t
+ </FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> cons (x, xs) = IN (Promise.lazy (<B><FONT COLOR="#A020F0">fn</FONT></B> () => SOME (x, xs)))
+ <B><FONT COLOR="#A020F0">fun</FONT></B> get (IN p) = Promise.force p
+ <B><FONT COLOR="#A020F0">fun</FONT></B> Y ? = Tie.iso Promise.Y (<B><FONT COLOR="#A020F0">fn</FONT></B> IN p => p, IN) ?
+<B><FONT COLOR="#0000FF">end</FONT></B>
</PRE>
<p>
</p>
<p>
-Note that above we make use of the <tt>Fix.iso</tt> combinator. Here is a finite representation of an infinite stream of ones:
+Note that above we make use of the <tt>iso</tt> combinator. Here is a finite representation of an infinite stream of ones:
</p>
<pre class=code>
-<B><FONT COLOR="#A020F0">val</FONT></B> ones =
- <B><FONT COLOR="#A020F0">let</FONT></B>
- <B><FONT COLOR="#0000FF">open</FONT></B> Fix Stream
- <B><FONT COLOR="#A020F0">in</FONT></B>
- fix Y (<B><FONT COLOR="#A020F0">fn</FONT></B> ones => cons (<B><FONT COLOR="#5F9EA0">1</FONT></B>, ones))
- <B><FONT COLOR="#A020F0">end</FONT></B>
+<B><FONT COLOR="#A020F0">val</FONT></B> ones = <B><FONT COLOR="#A020F0">let</FONT></B>
+ <B><FONT COLOR="#0000FF">open</FONT></B> Tie Stream
+<B><FONT COLOR="#A020F0">in</FONT></B>
+ fix Y (<B><FONT COLOR="#A020F0">fn</FONT></B> ones => cons (<B><FONT COLOR="#5F9EA0">1</FONT></B>, ones))
+<B><FONT COLOR="#A020F0">end</FONT></B>
</PRE>
<p>
@@ -250,5 +265,5 @@
<p>
<hr>
-Last edited on 2007-08-15 22:05:58 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-24 17:46:00 by <span title="cs27019070.pp.htv.fi"><a href="VesaKarvonen">VesaKarvonen</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/Index
===================================================================
--- mlton/trunk/doc/guide/Index 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Index 2007-08-24 21:41:16 UTC (rev 5943)
@@ -55,7 +55,7 @@
</table>
<div id="content" lang="en" dir="ltr">
-There are 334 pages. <p><p><a href="#A">A</a> | <a href="#B">B</a> | <a href="#C">C</a> | <a href="#D">D</a> | <a href="#E">E</a> | <a href="#F">F</a> | <a href="#G">G</a> | <a href="#H">H</a> | <a href="#I">I</a> | <a href="#J">J</a> | <a href="#K">K</a> | <a href="#L">L</a> | <a href="#M">M</a> | <a href="#N">N</a> | <a href="#O">O</a> | <a href="#P">P</a> | <a href="#R">R</a> | <a href="#S">S</a> | <a href="#T">T</a> | <a href="#U">U</a> | <a href="#V">V</a> | <a href="#W">W</a> | <a href="#X">X</a> | <a href="#Z">Z</a><br>
+There are 335 pages. <p><p><a href="#A">A</a> | <a href="#B">B</a> | <a href="#C">C</a> | <a href="#D">D</a> | <a href="#E">E</a> | <a href="#F">F</a> | <a href="#G">G</a> | <a href="#H">H</a> | <a href="#I">I</a> | <a href="#J">J</a> | <a href="#K">K</a> | <a href="#L">L</a> | <a href="#M">M</a> | <a href="#N">N</a> | <a href="#O">O</a> | <a href="#P">P</a> | <a href="#R">R</a> | <a href="#S">S</a> | <a href="#T">T</a> | <a href="#U">U</a> | <a href="#V">V</a> | <a href="#W">W</a> | <a href="#X">X</a> | <a href="#Z">Z</a><br>
</p><a name="A"><h3>A</h3></a><a href="AccessControl">AccessControl</a>
<br><a href="AdamGoode">AdamGoode</a>
<br><a href="AdmitsEquality">AdmitsEquality</a>
@@ -270,6 +270,7 @@
<br><a href="References">References</a>
<br><a href="RefFlatten">RefFlatten</a>
<br><a href="Regions">Regions</a>
+<br><a href="Release20041109">Release20041109</a>
<br><a href="Release20051202">Release20051202</a>
<br><a href="Release200708XX">Release200708XX</a>
<br><a href="ReleaseChecklist">ReleaseChecklist</a>
Modified: mlton/trunk/doc/guide/MLBasisAnnotations
===================================================================
--- mlton/trunk/doc/guide/MLBasisAnnotations 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/MLBasisAnnotations 2007-08-24 21:41:16 UTC (rev 5943)
@@ -79,7 +79,7 @@
<li class="gap">
<p>
<tt>forceUsed </tt> <br>
-Force all identifiers in the basis denoted by the body of the <tt>ann</tt> to be considered used; use in conjunction with {{warnUnused true}}}.
+Force all identifiers in the basis denoted by the body of the <tt>ann</tt> to be considered used; use in conjunction with <tt>warnUnused true</tt>.
</p>
</li>
<li class="gap">
@@ -133,5 +133,5 @@
<p>
<hr>
-Last edited on 2007-08-23 04:20:38 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 17:10:20 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/MLBasisAvailableLibraries
===================================================================
--- mlton/trunk/doc/guide/MLBasisAvailableLibraries 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/MLBasisAvailableLibraries 2007-08-24 21:41:16 UTC (rev 5943)
@@ -108,6 +108,12 @@
</li>
<li class="gap">
<p>
+ <tt>$(SML_LIB)/mlrisc-lib/...</tt> <br>
+<a href="MLRISCLibrary">MLRISCLibrary</a>, a library for retargetable and optimizing compiler back ends.
+</p>
+</li>
+ <li class="gap">
+<p>
<tt>$(SML_LIB)/smlnj-lib/...</tt> <br>
<a href="SMLNJLibrary">SMLNJLibrary</a>, a collection of libraries distributed with SML/NJ.
</p>
@@ -179,5 +185,5 @@
<p>
<hr>
-Last edited on 2007-08-23 04:20:45 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 17:13:23 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/MLNLFFI
===================================================================
--- mlton/trunk/doc/guide/MLNLFFI 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/MLNLFFI 2007-08-24 21:41:16 UTC (rev 5943)
@@ -67,8 +67,25 @@
<li>
<p>
- You can import the ML-NLFFI Library into an MLB file with <tt>$(SML_LIB)/mlnlffi-lib/mlnlffi-lib.mlb</tt>
+ You can import the ML-NLFFI Library into an MLB file with
+<div>
+<table>
+ <tr>
+<td align="center">
+MLB file</td>
+<td align="center">
+Description</td>
+</tr>
+ <tr>
+<td>
+<tt>$(SML_LIB)/mlnlffi-lib/mlnlffi-lib.mlb</tt></td>
+<td>
+ </td>
+</tr>
+
</p>
+</table>
+</div>
</li>
<li class="gap">
<p>
@@ -103,5 +120,5 @@
<p>
<hr>
-Last edited on 2007-05-21 15:12:21 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 17:24:47 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/MLRISCLibrary
===================================================================
--- mlton/trunk/doc/guide/MLRISCLibrary 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/MLRISCLibrary 2007-08-24 21:41:16 UTC (rev 5943)
@@ -65,123 +65,116 @@
<li>
<p>
You can import a sub-library of the MLRISC Library into an MLB file with:
-</p>
-</li>
-
- <ul>
-
-
<div>
<table>
- <tr>
+ <tr>
<td align="center">
MLB file</td>
<td align="center">
Description</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/ALPHA.mlb</tt></td>
<td>
The ALPHA backend</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/AMD64.mlb</tt></td>
<td>
The AMD64 backend</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/AMD64-Peephole.mlb</tt></td>
<td>
The AMD64 peephole optimizer</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/Control.mlb</tt></td>
<td>
</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/Graphs.mlb</tt></td>
<td>
</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/HPPA.mlb</tt></td>
<td>
The HPPA backend</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/IA32.mlb</tt></td>
<td>
The IA32 backend</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/IA32-Peephole.mlb</tt></td>
<td>
The IA32 peephole optimizer</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/Lib.mlb</tt></td>
<td>
</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/MLRISC.mlb</tt></td>
<td>
</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/MLTREE.mlb</tt></td>
<td>
</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/PPC.mlb</tt></td>
<td>
The PPC backend</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/RA.mlb</tt></td>
<td>
</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/SA.mlb</tt></td>
<td>
</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/SPARC.mlb</tt></td>
<td>
The Sparc backend</td>
</tr>
- <tr>
+ <tr>
<td>
<tt>$(SML_LIB)/mlrisc-lib/mlb/Visual.mlb</tt></td>
<td>
</td>
</tr>
+
+</p>
</table>
</div>
-
- </ul>
-
-
- <li>
+</li>
+ <li class="gap">
<p>
If you are porting a project from SML/NJ's <a href="CompilationManager">CompilationManager</a> to MLton's <a href="MLBasis"> ML Basis system</a> using <tt>cm2mlb</tt>, note that the following map is included by default:
<pre>$SMLNJ-MLRISC $(SML_LIB)/mlrisc-lib/mlb
@@ -211,7 +204,7 @@
</li>
<li>
<p>
- eliminate <tt>withtype</tt> in signatures
+ eliminate <tt>withtype</tt> in signatures.
</p>
</li>
<li>
@@ -250,5 +243,5 @@
<p>
<hr>
-Last edited on 2007-08-16 02:51:35 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 17:24:50 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/MLTONWIKIVERSION
===================================================================
--- mlton/trunk/doc/guide/MLTONWIKIVERSION 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/MLTONWIKIVERSION 2007-08-24 21:41:16 UTC (rev 5943)
@@ -1 +1 @@
-20070822
+20070824
Modified: mlton/trunk/doc/guide/MLtonIntInf
===================================================================
--- mlton/trunk/doc/guide/MLtonIntInf 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/MLtonIntInf 2007-08-24 21:41:16 UTC (rev 5943)
@@ -97,7 +97,7 @@
<li class="gap">
<p>
<tt>gcd (a, b)</tt> <br>
-uses the <a class="nonexistent" href="GMP">GnuMP's</a> fast gcd implementation.
+uses the <a href="GnuMP">GnuMP's</a> fast gcd implementation.
</p>
</li>
<li class="gap">
@@ -138,5 +138,5 @@
<p>
<hr>
-Last edited on 2007-08-23 03:44:09 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 13:54:34 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/OrphanedPages
===================================================================
--- mlton/trunk/doc/guide/OrphanedPages 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/OrphanedPages 2007-08-24 21:41:16 UTC (rev 5943)
@@ -58,12 +58,8 @@
Pages that no other page links to. Also see <a href="WantedPages">WantedPages</a>. <p>
<ol>
<li>
-<a href="Changelog">Changelog</a></li>
-<li>
<a href="PortStatus">PortStatus</a></li>
<li>
-<a href="Release200708XX">Release200708XX</a></li>
-<li>
<a href="ZZZOrphanedPages">ZZZOrphanedPages</a></li>
</ol>
Modified: mlton/trunk/doc/guide/PageSize
===================================================================
--- mlton/trunk/doc/guide/PageSize 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/PageSize 2007-08-24 21:41:16 UTC (rev 5943)
@@ -106,7 +106,7 @@
<li>
<tt> 6424 </tt><a href="MLNLFFIImplementation">MLNLFFIImplementation</a></li>
<li>
-<tt> 6382 </tt><a href="Bugs20041109">Bugs20041109</a></li>
+<tt> 6401 </tt><a href="Bugs20041109">Bugs20041109</a></li>
<li>
<tt> 6353 </tt><a href="SMLNJDeviations">SMLNJDeviations</a></li>
<li>
@@ -126,15 +126,13 @@
<li>
<tt> 5666 </tt><a href="MLtonSignal">MLtonSignal</a></li>
<li>
-<tt> 5537 </tt><a href="Fixpoints">Fixpoints</a></li>
-<li>
<tt> 5326 </tt><a href="CompilationManager">CompilationManager</a></li>
<li>
<tt> 5234 </tt><a href="XML">XML</a></li>
<li>
<tt> 5170 </tt><a href="TipsForWritingConciseSML">TipsForWritingConciseSML</a></li>
<li>
-<tt> 5062 </tt><a href="Release200708XX">Release200708XX</a></li>
+<tt> 5043 </tt><a href="Release200708XX">Release200708XX</a></li>
<li>
<tt> 5000 </tt><a href="StandardMLGotchas">StandardMLGotchas</a></li>
<li>
@@ -152,7 +150,7 @@
<li>
<tt> 4301 </tt><a href="SelfCompiling">SelfCompiling</a></li>
<li>
-<tt> 4274 </tt><a href="Bugs20051202">Bugs20051202</a></li>
+<tt> 4293 </tt><a href="Bugs20051202">Bugs20051202</a></li>
<li>
<tt> 4244 </tt><a href="Fold01N">Fold01N</a></li>
<li>
@@ -162,22 +160,24 @@
<li>
<tt> 4101 </tt><a href="Users">Users</a></li>
<li>
-<tt> 4009 </tt><a href="SMLNJLibrary">SMLNJLibrary</a></li>
+<tt> 4000 </tt><a href="SMLNJLibrary">SMLNJLibrary</a></li>
<li>
<tt> 3961 </tt><a href="UniversalType">UniversalType</a></li>
<li>
+<tt> 3775 </tt><a href="http://mlton.org/MatthewFluet_2fMoinEditorBackup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">MatthewFluet/MoinEditorBackup</a></li>
+<li>
<tt> 3758 </tt><a href="ReturnStatement">ReturnStatement</a></li>
<li>
<tt> 3753 </tt><a href="ForeignFunctionInterfaceTypes">ForeignFunctionInterfaceTypes</a></li>
<li>
-<tt> 3613 </tt><a href="Release20051202">Release20051202</a></li>
+<tt> 3686 </tt><a href="Release20051202">Release20051202</a></li>
<li>
+<tt> 3672 </tt><a href="ReleaseChecklist">ReleaseChecklist</a></li>
+<li>
<tt> 3593 </tt><a href="VariableArityPolymorphism">VariableArityPolymorphism</a></li>
<li>
<tt> 3557 </tt><a href="Enscript">Enscript</a></li>
<li>
-<tt> 3530 </tt><a href="http://mlton.org/Download"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Download</a></li>
-<li>
<tt> 3518 </tt><a href="EqualityTypeVariable">EqualityTypeVariable</a></li>
<li>
<tt> 3295 </tt><a href="UnresolvedBugs">UnresolvedBugs</a></li>
@@ -198,14 +198,16 @@
<li>
<tt> 2966 </tt><a href="ForeignFunctionInterfaceSyntax">ForeignFunctionInterfaceSyntax</a></li>
<li>
-<tt> 2914 </tt><a href="http://mlton.org/MatthewFluet_2fMoinEditorBackup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">MatthewFluet/MoinEditorBackup</a></li>
+<tt> 2952 </tt><a href="http://mlton.org/VesaKarvonen_2fMoinEditorBackup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">VesaKarvonen/MoinEditorBackup</a></li>
<li>
-<tt> 2845 </tt><a href="PropertyList">PropertyList</a></li>
+<tt> 2856 </tt><a href="PropertyList">PropertyList</a></li>
<li>
-<tt> 2821 </tt><a href="MLRISCLibrary">MLRISCLibrary</a></li>
+<tt> 2856 </tt><a href="Fixpoints">Fixpoints</a></li>
<li>
<tt> 2816 </tt><a href="Stabilizers">Stabilizers</a></li>
<li>
+<tt> 2806 </tt><a href="MLRISCLibrary">MLRISCLibrary</a></li>
+<li>
<tt> 2686 </tt><a href="Installation">Installation</a></li>
<li>
<tt> 2646 </tt><a href="MLtonSocket">MLtonSocket</a></li>
@@ -230,7 +232,7 @@
<li>
<tt> 2390 </tt><a href="CallingFromCToSML">CallingFromCToSML</a></li>
<li>
-<tt> 2365 </tt><a href="MLBasisAnnotations">MLBasisAnnotations</a></li>
+<tt> 2366 </tt><a href="MLBasisAnnotations">MLBasisAnnotations</a></li>
<li>
<tt> 2355 </tt><a href="OCaml">OCaml</a></li>
<li>
@@ -240,22 +242,22 @@
<li>
<tt> 2288 </tt><a href="History">History</a></li>
<li>
+<tt> 2278 </tt><a href="MLBasisAvailableLibraries">MLBasisAvailableLibraries</a></li>
+<li>
<tt> 2270 </tt><a href="MLtonPointer">MLtonPointer</a></li>
<li>
<tt> 2236 </tt><a href="RefFlatten">RefFlatten</a></li>
<li>
-<tt> 2162 </tt><a href="http://mlton.org/Experimental"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Experimental</a></li>
+<tt> 2202 </tt><a href="http://mlton.org/Experimental"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Experimental</a></li>
<li>
<tt> 2159 </tt><a href="MLBasisAnnotationExamples">MLBasisAnnotationExamples</a></li>
<li>
<tt> 2158 </tt><a href="ProfilingCounts">ProfilingCounts</a></li>
<li>
-<tt> 2154 </tt><a href="MLBasisAvailableLibraries">MLBasisAvailableLibraries</a></li>
+<tt> 2139 </tt><a href="CKitLibrary">CKitLibrary</a></li>
<li>
<tt> 2117 </tt><a href="LanguageChanges">LanguageChanges</a></li>
<li>
-<tt> 2097 </tt><a href="CKitLibrary">CKitLibrary</a></li>
-<li>
<tt> 2000 </tt><a href="SimplifyTypes">SimplifyTypes</a></li>
<li>
<tt> 1942 </tt><a href="XMLShrink">XMLShrink</a></li>
@@ -276,14 +278,14 @@
<li>
<tt> 1875 </tt><a href="ProductType">ProductType</a></li>
<li>
+<tt> 1872 </tt><a href="ConcurrentML">ConcurrentML</a></li>
+<li>
<tt> 1859 </tt><a href="Unicode">Unicode</a></li>
<li>
<tt> 1846 </tt><a href="CallingFromSMLToC">CallingFromSMLToC</a></li>
<li>
<tt> 1835 </tt><a href="RunningOnNetBSD">RunningOnNetBSD</a></li>
<li>
-<tt> 1831 </tt><a href="ConcurrentML">ConcurrentML</a></li>
-<li>
<tt> 1788 </tt><a href="Defunctorize">Defunctorize</a></li>
<li>
<tt> 1751 </tt><a href="JesperLouisAndersen">JesperLouisAndersen</a></li>
@@ -300,9 +302,11 @@
<li>
<tt> 1627 </tt><a href="SSA2">SSA2</a></li>
<li>
+<tt> 1616 </tt><a href="MLtonIntInf">MLtonIntInf</a></li>
+<li>
<tt> 1616 </tt><a href="http://mlton.org/JesperLouisAndersen_2fMoinEditorBackup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">JesperLouisAndersen/MoinEditorBackup</a></li>
<li>
-<tt> 1614 </tt><a href="MLtonIntInf">MLtonIntInf</a></li>
+<tt> 1582 </tt><a href="VesaKarvonen">VesaKarvonen</a></li>
<li>
<tt> 1562 </tt><a href="DefineTypeBeforeUse">DefineTypeBeforeUse</a></li>
<li>
@@ -318,7 +322,7 @@
<li>
<tt> 1465 </tt><a href="KnownCase">KnownCase</a></li>
<li>
-<tt> 1454 </tt><a href="Projects">Projects</a></li>
+<tt> 1458 </tt><a href="Projects">Projects</a></li>
<li>
<tt> 1433 </tt><a href="EqualityType">EqualityType</a></li>
<li>
@@ -354,12 +358,12 @@
<li>
<tt> 1271 </tt><a href="ProfilingTheStack">ProfilingTheStack</a></li>
<li>
+<tt> 1270 </tt><a href="MLNLFFI">MLNLFFI</a></li>
+<li>
<tt> 1260 </tt><a href="Restore">Restore</a></li>
<li>
<tt> 1258 </tt><a href="WishList">WishList</a></li>
<li>
-<tt> 1230 </tt><a href="MLNLFFI">MLNLFFI</a></li>
-<li>
<tt> 1227 </tt><a href="Useless">Useless</a></li>
<li>
<tt> 1218 </tt><a href="ImplementSuffix">ImplementSuffix</a></li>
@@ -390,6 +394,8 @@
<li>
<tt> 1116 </tt><a href="Lazy">Lazy</a></li>
<li>
+<tt> 1111 </tt><a href="Release20041109">Release20041109</a></li>
+<li>
<tt> 1104 </tt><a href="Closure">Closure</a></li>
<li>
<tt> 1074 </tt><a href="SXML">SXML</a></li>
@@ -406,8 +412,6 @@
<li>
<tt> 963 </tt><a href="PolyEqual">PolyEqual</a></li>
<li>
-<tt> 960 </tt><a href="ReleaseChecklist">ReleaseChecklist</a></li>
-<li>
<tt> 946 </tt><a href="UnsafeStructure">UnsafeStructure</a></li>
<li>
<tt> 940 </tt><a href="Identifier">Identifier</a></li>
@@ -432,8 +436,6 @@
<li>
<tt> 837 </tt><a href="SSA2Simplify">SSA2Simplify</a></li>
<li>
-<tt> 835 </tt><a href="VesaKarvonen">VesaKarvonen</a></li>
-<li>
<tt> 827 </tt><a href="LineDirective">LineDirective</a></li>
<li>
<tt> 808 </tt><a href="XMLSimplifyTypes">XMLSimplifyTypes</a></li>
@@ -532,6 +534,8 @@
<li>
<tt> 525 </tt><a href="DeepFlatten">DeepFlatten</a></li>
<li>
+<tt> 524 </tt><a href="AccessControl">AccessControl</a></li>
+<li>
<tt> 523 </tt><a href="LLVM">LLVM</a></li>
<li>
<tt> 521 </tt><a href="IntermediateLanguage">IntermediateLanguage</a></li>
@@ -548,8 +552,6 @@
<li>
<tt> 498 </tt><a href="RunningOnPowerPC">RunningOnPowerPC</a></li>
<li>
-<tt> 495 </tt><a href="AccessControl">AccessControl</a></li>
-<li>
<tt> 494 </tt><a href="PhantomType">PhantomType</a></li>
<li>
<tt> 487 </tt><a href="LoopInvariant">LoopInvariant</a></li>
@@ -572,6 +574,8 @@
<li>
<tt> 421 </tt><a href="Poplog">Poplog</a></li>
<li>
+<tt> 420 </tt><a href="Development">Development</a></li>
+<li>
<tt> 412 </tt><a href="StandardMLTutorials">StandardMLTutorials</a></li>
<li>
<tt> 412 </tt><a href="SMLSharp">SMLSharp</a></li>
@@ -596,8 +600,6 @@
<li>
<tt> 385 </tt><a href="ToRSSA">ToRSSA</a></li>
<li>
-<tt> 385 </tt><a href="Development">Development</a></li>
-<li>
<tt> 382 </tt><a href="AllocateRegisters">AllocateRegisters</a></li>
<li>
<tt> 379 </tt><a href="MLtonProcEnv">MLtonProcEnv</a></li>
@@ -634,8 +636,6 @@
<li>
<tt> 306 </tt><a href="TalkMLtonApproach">TalkMLtonApproach</a></li>
<li>
-<tt> 305 </tt><a href="http://mlton.org/VesaKarvonen_2fMoinEditorBackup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">VesaKarvonen/MoinEditorBackup</a></li>
-<li>
<tt> 305 </tt><a href="InsertLimitChecks">InsertLimitChecks</a></li>
<li>
<tt> 277 </tt><a href="TalkFolkLore">TalkFolkLore</a></li>
@@ -654,6 +654,8 @@
<li>
<tt> 254 </tt><a href="StandardMLHistory">StandardMLHistory</a></li>
<li>
+<tt> 244 </tt><a href="Bugs200708XX">Bugs200708XX</a></li>
+<li>
<tt> 244 </tt><a href="TalkFromSMLTo">TalkFromSMLTo</a></li>
<li>
<tt> 242 </tt><a href="TalkHowPolymorphism">TalkHowPolymorphism</a></li>
@@ -670,8 +672,6 @@
<li>
<tt> 230 </tt><a href="Immutable">Immutable</a></li>
<li>
-<tt> 225 </tt><a href="Bugs200708XX">Bugs200708XX</a></li>
-<li>
<tt> 225 </tt><a href="ZZZOrphanedPages">ZZZOrphanedPages</a></li>
<li>
<tt> 218 </tt><a href="MoscowML">MoscowML</a></li>
@@ -742,6 +742,8 @@
<li>
<tt> 61 </tt><a href="RunningOnHPUX">RunningOnHPUX</a></li>
<li>
+<tt> 59 </tt><a href="http://mlton.org/Download"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Download</a></li>
+<li>
<tt> 47 </tt><a href="Changelog">Changelog</a></li>
<li>
<tt> 45 </tt><a href="SurveyDone">SurveyDone</a></li>
Modified: mlton/trunk/doc/guide/Projects
===================================================================
--- mlton/trunk/doc/guide/Projects 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Projects 2007-08-24 21:41:16 UTC (rev 5943)
@@ -103,16 +103,10 @@
<li>
<p>
- Improved closure representation
+ Improved closure representation <br>
+Right now, MLton's closure conversion algorithm uses a simple flat closure to represent each function.
</p>
</li>
-
- <ul>
-
- Right now, MLton's closure conversion algorithm uses a simple flat closure to represent each function.
- </ul>
-
-
<li>
<p>
Elimination of array bounds checks in loops
@@ -175,5 +169,5 @@
<p>
<hr>
-Last edited on 2006-06-22 02:51:58 by <span title="209-6-203-188.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 17:09:17 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/PropertyList
===================================================================
--- mlton/trunk/doc/guide/PropertyList 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/PropertyList 2007-08-24 21:41:16 UTC (rev 5943)
@@ -140,7 +140,7 @@
MLton relies heavily on property lists for attaching information to syntax tree nodes in its intermediate languages. See <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/lib/mlton/basic/property-list.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">property-list.sig</a> <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/lib/mlton/basic/property-list.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">property-list.fun</a>.
</p>
<p>
-<a class="nonexistent" href="MLRISC">MLRISC</a> <a href = "References#LeungGeorge98">uses property lists extensively</a>.
+The <a href="MLRISCLibrary">MLRISCLibrary</a> <a href = "References#LeungGeorge98">uses property lists extensively</a>.
</p>
</div>
@@ -148,5 +148,5 @@
<p>
<hr>
-Last edited on 2006-11-02 17:44:53 by <span title="76.16.241.4"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-23 13:55:21 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Added: mlton/trunk/doc/guide/Release20041109
===================================================================
--- mlton/trunk/doc/guide/Release20041109 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Release20041109 2007-08-24 21:41:16 UTC (rev 5943)
@@ -0,0 +1,174 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta name="robots" content="index,nofollow">
+
+
+
+<title>Release20041109 - MLton Standard ML Compiler (SML Compiler)</title>
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="common.css">
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="screen.css">
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="print.css">
+
+
+<link rel="Start" href="Home">
+
+
+</head>
+
+<body lang="en" dir="ltr">
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
+<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
+ <tr>
+ <td style = "
+ border: 0px;
+ color: darkblue;
+ font-size: 150%;
+ text-align: left;">
+ <a class = mltona href="Home">MLton MLTONWIKIVERSION</a>
+ <td style = "
+ border: 0px;
+ font-size: 150%;
+ text-align: center;
+ width: 50%;">
+ Release20041109
+ <td style = "
+ border: 0px;
+ text-align: right;">
+ <table cellspacing = 0 style = "border: 0px">
+ <tr style = "vertical-align: middle;">
+ </table>
+ <tr style = "background-color: white;">
+ <td colspan = 3
+ style = "
+ border: 0px;
+ font-size:70%;
+ text-align: right;">
+ <a href = "Home">Home</a>
+ <a href = "Index">Index</a>
+
+</table>
+<div id="content" lang="en" dir="ltr">
+<p>
+This is an archived public release of MLton, version 20041109.
+</p>
+<h2 id="head-9fa56f6715598f7143da2e8633da0b6fa4b9cfa7">Changes since the last public release</h2>
+
+ <ul>
+
+ <li>
+<p>
+ New platforms:
+</p>
+</li>
+
+ <ul>
+
+ <li>
+<p>
+ x86: FreeBSD 5.x, OpenBSD
+</p>
+</li>
+ <li>
+<p>
+ PowerPC: Darwin (MacOSX)
+</p>
+</li>
+
+ </ul>
+
+
+ <li>
+<p>
+ Support for the <a href="MLBasis"> ML Basis system</a>, a new mechanism supporting programming in the very large, separate delivery of library sources, and more.
+</p>
+</li>
+ <li>
+<p>
+ Support for dynamic libraries.
+</p>
+</li>
+ <li>
+<p>
+ Support for <a href="ConcurrentML">ConcurrentML</a> (CML).
+</p>
+</li>
+ <li>
+<p>
+ New structures: <tt>Int2</tt>, <tt>Int3</tt>, ..., <tt>Int31</tt> and <tt>Word2</tt>, <tt>Word3</tt>, ..., <tt>Word31</tt>.
+</p>
+</li>
+ <li>
+<p>
+ Front-end bug fixes and improvements.
+</p>
+</li>
+ <li>
+<p>
+ A new form of profiling with <tt>-profile count</tt>, which can be used to test code coverage.
+</p>
+</li>
+ <li>
+<p>
+ A bytecode generator, available via <tt>-codegen bytecode</tt>.
+</p>
+</li>
+ <li>
+<p>
+ Representation improvements:
+</p>
+</li>
+
+ <ul>
+
+ <li>
+<p>
+ Tuples and datatypes are packed to decrease space usage.
+</p>
+</li>
+ <li>
+<p>
+ Ref cells may be unboxed into their containing object.
+</p>
+</li>
+ <li>
+<p>
+ Arrays of tuples may represent the tuples unboxed.
+</p>
+</li>
+
+ </ul>
+
+
+
+ </ul>
+
+
+<p>
+For a complete list of changes and bug fixes since 20040227, see the <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/*checkout*/mlton/tags/on-20041109-release/doc/changelog"><img src="moin-www.png" alt="[WWW]" height="11" width="11">changelog</a>.
+</p>
+<h2 id="head-a4bc8bf5caf54b18cea9f58e83dd4acb488deb17">Also see</h2>
+
+ <ul>
+
+ <li>
+<p>
+ <a href="Bugs20041109">Bugs20041109</a>
+</p>
+</li>
+</ul>
+
+</div>
+
+
+
+<p>
+<hr>
+Last edited on 2007-08-24 20:25:55 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+</body></html>
Modified: mlton/trunk/doc/guide/Release20051202
===================================================================
--- mlton/trunk/doc/guide/Release20051202 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Release20051202 2007-08-24 21:41:16 UTC (rev 5943)
@@ -55,7 +55,10 @@
</table>
<div id="content" lang="en" dir="ltr">
-Here you can download an archived public release of MLton, version 20051202. <h2 id="head-9fa56f6715598f7143da2e8633da0b6fa4b9cfa7">Changes since the last public release</h2>
+<p>
+Here you can download the latest public release of MLton, version 20051202. Elsewhere you can download newer, <a href="http://mlton.org/Experimental"><img src="moin-www.png" alt="[WWW]" height="11" width="11">Experimental</a> releases.
+</p>
+<h2 id="head-9fa56f6715598f7143da2e8633da0b6fa4b9cfa7">Changes since the last public release</h2>
<ul>
@@ -259,7 +262,7 @@
<p>
-For a complete list of changes and bug fixes since 20041109, see the <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/*checkout*/mlton/tags/on-20051202-release/doc/changelog"><img src="moin-www.png" alt="[WWW]" height="11" width="11">changelog</a> and <a href="Bugs20041109">Bugs20041109</a>.
+For a complete list of changes and bug fixes since <a href="Release20041109">Release20041109</a>, see the <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/*checkout*/mlton/tags/on-20051202-release/doc/changelog"><img src="moin-www.png" alt="[WWW]" height="11" width="11">changelog</a> and <a href="Bugs20041109">Bugs20041109</a>.
</p>
<h2 id="head-ec8ff1f2507082ab65a958e37a30a259d47ee297">20051202 binary packages</h2>
@@ -445,5 +448,5 @@
<p>
<hr>
-Last edited on 2007-08-21 20:35:51 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-24 20:21:14 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/Release200708XX
===================================================================
--- mlton/trunk/doc/guide/Release200708XX 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/Release200708XX 2007-08-24 21:41:16 UTC (rev 5943)
@@ -69,22 +69,22 @@
<li>
<p>
- <a href="RunningOnAMD64">AMD64</a>/<a href="RunningOnLinux">Linux</a>, <a href="RunningOnAMD64">AMD64</a>/<a href="RunningOnFreeBSD">FreeBSD</a>, ...
+ <a href="RunningOnAMD64">AMD64</a>/<a href="RunningOnLinux">Linux</a>, <a href="RunningOnAMD64">AMD64</a>/<a href="RunningOnFreeBSD">FreeBSD</a>
</p>
</li>
<li>
<p>
- <a href="RunningOnHPPA">HPPA</a>/<a href="RunningOnHPUX">HPUX</a>, ...
+ <a href="RunningOnHPPA">HPPA</a>/<a href="RunningOnHPUX">HPUX</a>
</p>
</li>
<li>
<p>
- <a href="RunningOnPowerPC">PowerPC</a>/<a href="RunningOnAIX">AIX</a>, ...
+ <a href="RunningOnPowerPC">PowerPC</a>/<a href="RunningOnAIX">AIX</a>
</p>
</li>
<li>
<p>
- <a href="RunningOnX86">X86</a>/<a href="RunningOnDarwin">Darwin (Mac OS X)</a>, ...
+ <a href="RunningOnX86">X86</a>/<a href="RunningOnDarwin">Darwin (Mac OS X)</a>
</p>
</li>
@@ -177,12 +177,19 @@
<a href="MLBasisAnnotations">ML Basis annotations</a>.
</p>
</li>
- <li>
+
+ <ul>
+
+ <li>
<p>
Removed: <tt>allowExport</tt>, <tt>allowImport</tt>, <tt>sequenceUnit</tt>, <tt>warnMatch</tt>.
</p>
</li>
+ </ul>
+
+
+
</ul>
@@ -339,5 +346,5 @@
<p>
<hr>
-Last edited on 2007-08-21 20:43:24 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2007-08-24 20:21:18 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
Modified: mlton/trunk/doc/guide/ReleaseChecklist
===================================================================
--- mlton/trunk/doc/guide/ReleaseChecklist 2007-08-24 20:50:51 UTC (rev 5942)
+++ mlton/trunk/doc/guide/ReleaseChecklist 2007-08-24 21:41:16 UTC (rev 5943)
@@ -55,12 +55,39 @@
</table>
<div id="content" lang="en" dir="ltr">
-<h2 id="head-03200545ac3b97defb6680f6be627d65f60d17a2">Before Packaging</h2>
+<h2 id="head-bbf6fecd25db651b73d554ce89c2cce96cd27342">Advance preparation for release</h2>
<ul>
<li>
<p>
+ Catch up on <tt>doc/changelog</tt> documentation.
+</p>
+</li>
+
+ <ul>
+
+ <li>
+<p>
+ Write summary of changes from previous release.
+</p>
+</li>
+
+ </ul>
+
+
+ <li>
+<p>
+ Update <tt>doc/README</tt> with relevant changes.
+</p>
+</li>
+ <li>
+<p>
+ Update <tt>man/{mlton,mlprof}.1</tt> with relevant changes and set dates.
+</p>
+</li>
+ <li>
+<p>
Wiki
</p>
</li>
@@ -69,76 +96,335 @@
<li>
<p>
- check <a href="OrphanedPages">OrphanedPages</a> and <a href="WantedPages">WantedPages</a>.
+ Check <a href="OrphanedPages">OrphanedPages</a> and <a href="WantedPages">WantedPage
More information about the MLton-commit
mailing list