[MLton-commit] r7468

Matthew Fluet fluet at mlton.org
Thu May 27 14:51:32 PDT 2010


Ran grab-wiki.
----------------------------------------------------------------------

U   mlton/trunk/doc/guide/AST
U   mlton/trunk/doc/guide/Bugs20070826
D   mlton/trunk/doc/guide/Bugs200907XX
U   mlton/trunk/doc/guide/CKitLibrary
U   mlton/trunk/doc/guide/Changelog
A   mlton/trunk/doc/guide/CombineConversions
U   mlton/trunk/doc/guide/CompileTimeOptions
U   mlton/trunk/doc/guide/ConstantPropagation
U   mlton/trunk/doc/guide/Credits
U   mlton/trunk/doc/guide/DeepFlatten
U   mlton/trunk/doc/guide/Defunctorize
U   mlton/trunk/doc/guide/Documentation
A   mlton/trunk/doc/guide/FSharp
U   mlton/trunk/doc/guide/Features
U   mlton/trunk/doc/guide/FrontEnd
U   mlton/trunk/doc/guide/FunctionalRecordUpdate
U   mlton/trunk/doc/guide/GenerativeDatatype
U   mlton/trunk/doc/guide/GenerativeException
U   mlton/trunk/doc/guide/Index
U   mlton/trunk/doc/guide/InfixingOperators
U   mlton/trunk/doc/guide/Installation
U   mlton/trunk/doc/guide/Libraries
U   mlton/trunk/doc/guide/License
U   mlton/trunk/doc/guide/MLBasisAvailableLibraries
U   mlton/trunk/doc/guide/MLBasisPathMap
A   mlton/trunk/doc/guide/MLLex
U   mlton/trunk/doc/guide/MLRISCLibrary
U   mlton/trunk/doc/guide/MLTONWIKIVERSION
A   mlton/trunk/doc/guide/MLYacc
U   mlton/trunk/doc/guide/MLtonIntInf
U   mlton/trunk/doc/guide/ManualPage
U   mlton/trunk/doc/guide/MatthewFluet
U   mlton/trunk/doc/guide/Monomorphise
U   mlton/trunk/doc/guide/OCaml
U   mlton/trunk/doc/guide/OrphanedPages
U   mlton/trunk/doc/guide/PageSize
U   mlton/trunk/doc/guide/PolyEqual
A   mlton/trunk/doc/guide/PolyHash
U   mlton/trunk/doc/guide/PropertyList
U   mlton/trunk/doc/guide/RefFlatten
U   mlton/trunk/doc/guide/References
D   mlton/trunk/doc/guide/Release200907XX
U   mlton/trunk/doc/guide/ReleaseChecklist
U   mlton/trunk/doc/guide/Restore
U   mlton/trunk/doc/guide/SMLNJDeviations
U   mlton/trunk/doc/guide/SMLNJLibrary
U   mlton/trunk/doc/guide/SSASimplify
U   mlton/trunk/doc/guide/SimplifyTypes
U   mlton/trunk/doc/guide/StandardML
U   mlton/trunk/doc/guide/SystemInfo
U   mlton/trunk/doc/guide/TitleIndex
U   mlton/trunk/doc/guide/UnresolvedBugs
U   mlton/trunk/doc/guide/UnsafeStructure
U   mlton/trunk/doc/guide/Users
U   mlton/trunk/doc/guide/WantedPages

----------------------------------------------------------------------

Modified: mlton/trunk/doc/guide/AST
===================================================================
--- mlton/trunk/doc/guide/AST	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/AST	2010-05-27 21:51:25 UTC (rev 7468)
@@ -68,11 +68,59 @@
 The AST <a href="IntermediateLanguage">IntermediateLanguage</a> has no independent type checker. Type inference is performed on an AST program as part of <a href="Elaborate">Elaborate</a>. 
 </p>
 <h2 id="head-35ec00231a68203708e39f0e2cc10b50c6bf62de">Details and Notes</h2>
+
+    <ul>
+
+    <li>
+<p>
+ Source locations.  MLton makes use of a relatively clean method for annotating the abstract syntax tree with source location information.  Every source program phrase is "wrapped" with the <tt>WRAPPED</tt> interface:  <pre class=code><B><FONT COLOR="#0000FF">signature</FONT></B> WRAPPED =
+   <B><FONT COLOR="#0000FF">sig</FONT></B>
+      <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> node'
+      </FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> obj
+
+      </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> dest: obj -&gt; node' * Region.t
+      <B><FONT COLOR="#A020F0">val</FONT></B> makeRegion': node' * SourcePos.t * SourcePos.t -&gt; obj
+      <B><FONT COLOR="#A020F0">val</FONT></B> makeRegion: node' * Region.t -&gt; obj
+      <B><FONT COLOR="#A020F0">val</FONT></B> node: obj -&gt; node'
+      <B><FONT COLOR="#A020F0">val</FONT></B> region: obj -&gt; Region.t
+   <B><FONT COLOR="#0000FF">end</FONT></B>
+</PRE>
+  The key idea is that <tt>node'</tt> is the type of an unannotated syntax phrase and <tt>obj</tt> is the type of its annotated counterpart. In the implementation, every <tt>node'</tt> is annotated with a <tt>Region.t</tt> (<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/control/region.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">region.sig</a>,<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/control/region.sml?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">region.sml</a>), which describes the syntax phrase's left source position and right source position, where <tt>SourcePos.t</tt> (<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/control/source-pos.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">source-pos.sig</a>,<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/control/source-pos.sml?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">source-pos.sml</a>) denotes a particular file, line, and column.  A typical use of the <tt>WRAPPED</tt> interface is illustrated by the following code:  <pre class=code>            <B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> node </FONT></B>=<B><FONT COLOR="#228B22">
+               <FONT COLOR="#B8860B">App</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> Longcon.t * t
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Const</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> Const.t
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Constraint</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> t * Type.t
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">FlatApp</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> t vector
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Layered</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> {constraint: Type.t option,
+                           fixop: Fixop.t,
+                           pat: t,
+                           var: Var.t}
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">List</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> t vector
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Record</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> {flexible: bool,
+                          items: (Record.Field.t * Item.t) vector}
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Tuple</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> t vector
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Var</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> {fixop: Fixop.t,
+                       name: Longvid.t}
+             </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Wild</FONT>
+
+            </FONT></B><B><FONT COLOR="#0000FF">include</FONT></B> WRAPPED <B><FONT COLOR="#0000FF">sharing</FONT></B> <B><FONT COLOR="#0000FF">type</FONT></B><B><FONT COLOR="#228B22"> node' </FONT></B>=<B><FONT COLOR="#228B22"> node
+                            </FONT></B><B><FONT COLOR="#0000FF">sharing</FONT></B> <B><FONT COLOR="#0000FF">type</FONT></B><B><FONT COLOR="#228B22"> obj </FONT></B>=<B><FONT COLOR="#228B22"> t
+</FONT></B></PRE>
+  Thus, AST nodes are cleanly separated from source locations.  By way of contrast, consider the approach taken by <a href="SMLNJ">SML/NJ</a> (and also by the <a href="CKitLibrary">CKit Library</a>).  Each datatype denoting a syntax phrase dedicates a special constructor for annotating source locations:
+<pre class=code>
+<B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> pat </FONT></B>=<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">WildPat</FONT>                          <I><FONT COLOR="#B22222">(* empty pattern *)</FONT></I>
+        </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">AppPat</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> {constr:pat,argument:pat}   <I><FONT COLOR="#B22222">(* application *)</FONT></I>
+        </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">MarkPat</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> pat * region       <I><FONT COLOR="#B22222">(* mark a pattern *)</FONT></I>
+</FONT></B></PRE>
+ The main drawback of this approach is that static type checking is not sufficient to guarantee that the AST emitted from the front-end is properly annotated. 
+</p>
+</li>
+</ul>
+
 </div>
 
 
 
 <p>
 <hr>
-Last edited on 2006-11-02 17:54:45 by <span title="76.16.241.4"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2010-05-13 19:55:19 by <span title="fenrir.cs.rit.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/Bugs20070826
===================================================================
--- mlton/trunk/doc/guide/Bugs20070826	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Bugs20070826	2010-05-27 21:51:25 UTC (rev 7468)
@@ -56,6 +56,96 @@
 </table>
 <div id="content" lang="en" dir="ltr">
 Here are the known bugs in <a href="Release20070826">MLton 20070826</a>, listed in reverse chronological order of date reported. <p>
+<a id="25"></a> 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ Bug in the mark-compact garbage collector where the C library's <tt>memcpy</tt> was used to move objects during the compaction phase; this could lead to heap corruption and segmentation faults with newer versions of gcc and/or glibc, which assume that src and dst in a <tt>memcpy</tt> do not overlap.  Fixed by revision <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=7461&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">7461</a>. 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
+<a id="24"></a> 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ Bug in elaboration of <tt>datatype</tt> declarations with <tt>withtype</tt> bindings.  Fixed by revision <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=7434&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">7434</a>. 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
+<a id="23"></a> 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ Performance bug in <a href="RefFlatten">RefFlatten</a> optimization pass.  Thanks to Reactive Systems for the bug report.  Fixed by revision <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=7379&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">7379</a>. 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
+<a id="22"></a> 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ Performance bug in <a href="SimplifyTypes">SimplifyTypes</a> optimization pass.  Thanks to Reactive Systems for the bug report.  Fixed by revisions <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=7377&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">7377</a> and <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=7378&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">7378</a>. 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
+<a id="21"></a> 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ Bug in amd64 codegen register allocation of indirect C calls.  Thanks to David Hansel for the bug report.  Fixed by revision <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=7368&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">7368</a>. 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
+<a id="20"></a> 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ Bug in <tt>IntInf.scan</tt> and <tt>IntInf.fromString</tt> where leading spaces were only accepted if the stream had an explicit sign character.  Thanks to David Hansel for the bug report.  Fixed by revisions <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=7227&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">7227</a> and <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=7230&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">7230</a>. 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
 <a id="19"></a> 
 </p>
 
@@ -168,7 +258,7 @@
 
     <li>
 <p>
- Space-safety bug in pass to flatten refs into containing data structure.  Thanks to Daniel Spoonhower for the bug report and initial diagnosis and patch.  Fixed by revision <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=6395&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">6395</a>. 
+ Space-safety bug in pass to <a href="RefFlatten"> flatten refs</a> into containing data structure.  Thanks to Daniel Spoonhower for the bug report and initial diagnosis and patch.  Fixed by revision <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=6395&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">6395</a>. 
 </p>
 </li>
 
@@ -273,7 +363,7 @@
 
     <li>
 <p>
- Bug in pass to flatten refs into containing data structure.  Thanks to Ruy Ley-Wild for the bug report.  Fixed by revision <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=6191&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">6191</a>. 
+ Bug in pass to <a href="RefFlatten"> flatten refs</a> into containing data structure.  Thanks to Ruy Ley-Wild for the bug report.  Fixed by revision <a href = "http://mlton.org/cgi-bin/viewsvn.cgi?rev=6191&view=rev"><img src="moin-www.png" alt="[WWW]" height="11" width="11">6191</a>. 
 </p>
 </li>
 
@@ -344,5 +434,5 @@
 
 <p>
 <hr>
-Last edited on 2009-04-19 02:30:07 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2010-05-13 13:28:40 by <span title="fenrir.cs.rit.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Deleted: mlton/trunk/doc/guide/Bugs200907XX
===================================================================
--- mlton/trunk/doc/guide/Bugs200907XX	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Bugs200907XX	2010-05-27 21:51:25 UTC (rev 7468)
@@ -1,65 +0,0 @@
-<!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>Bugs200907XX - 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%;">
-      Bugs200907XX
-    <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>
-      &nbsp;<a href = "TitleIndex">Index</a>
-      &nbsp;
-</table>
-<div id="content" lang="en" dir="ltr">
-Here are the known bugs in <a href="Release20070826">MLton 20070826</a>, listed in reverse chronological order of date reported. </div>
-
-
-
-<p>
-<hr>
-Last edited on 2009-06-19 14:50:24 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	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/CKitLibrary	2010-05-27 21:51:25 UTC (rev 7468)
@@ -14,8 +14,6 @@
 <link rel="Start" href="Home">
 
 
-<link rel="Appendix" title="ckit-lib.patch" href="http://mlton.org/pages/CKitLibrary/attachments/ckit-lib.patch">
-<link rel="Appendix" title="ckit-lib.tgz" href="http://mlton.org/pages/CKitLibrary/attachments/ckit-lib.tgz">
 </head>
 
 <body lang="en" dir="ltr">
@@ -58,7 +56,7 @@
 </table>
 <div id="content" lang="en" dir="ltr">
 The <a class="external" href="http://www.smlnj.org/doc/ckit"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ckit Library</a> is a C front end written in SML that translates C source code (after preprocessing) into abstract syntax represented as a set of SML datatypes.  The ckit Library is distributed with SML/NJ.  Due to differences between SML/NJ and MLton, this library will not work out-of-the box with MLton. <p>
-As of 20090618, MLton includes a port of the ckit Library synchronized with SML/NJ version 110.70. 
+As of 20100402, MLton includes a port of the ckit Library synchronized with SML/NJ version 110.72. 
 </p>
 <h2 id="head-0bb18642b70b9f8a9c12ccf39487328f306b8e19">Usage</h2>
 
@@ -116,6 +114,11 @@
 </li>
     <li>
 <p>
+ <tt>parser/grammar/c.lex.sml</tt> (modified): Rewrote use of vector literal. 
+</p>
+</li>
+    <li>
+<p>
  <tt>ast/ast-sig.sml</tt> (modified): Rewrote use of <tt>withtype</tt> in signature. 
 </p>
 </li>
@@ -180,5 +183,5 @@
 
 <p>
 <hr>
-Last edited on 2009-06-18 21:17:48 by <span title="c-67-165-143-160.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2010-04-02 19:22:13 by <span title="fenrir.cs.rit.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/Changelog
===================================================================
--- mlton/trunk/doc/guide/Changelog	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Changelog	2010-05-27 21:51:25 UTC (rev 7468)
@@ -119,6 +119,34 @@
     * Eliminated top-level 'type int = Int.int' in output.
     * Include (*#line line:col &quot;file.grm&quot; *) directives in output.
 
+* 2010-05-12
+  - Fixed bug in the mark-compact garbage collector where the C
+    library's memcpy was used to move objects during the compaction
+    phase; this could lead to heap corruption and segmentation faults
+    with newer versions of gcc and/or glibc, which assume that src and
+    dst in a memcpy do not overlap.
+
+* 2010-03-12
+  - Fixed bug in elaboration of datatype declarations with withtype
+    bindings.
+
+* 2009-12-11
+  - Fixed performance bug in ref flatten SSA2 optimization.
+
+* 2009-12-09
+  - Fixed performance bug in simplify types SSA optimization.
+
+* 2009-12-02
+  - Fixed bug in amd64 codegen register allocation of indirect C calls.
+
+* 2009-09-17
+  - Fixed bug in IntInf.scan and IntInf.fromString where leading
+    spaces were only accepted if the stream had an explicit sign
+    character.
+
+* 2009-07-10
+  - Added combine conversions SSA optimization.
+
 * 2009-06-09
    - Removed deprecated command line switch -show-anns {false, true}.
 

Added: mlton/trunk/doc/guide/CombineConversions
===================================================================
--- mlton/trunk/doc/guide/CombineConversions	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/CombineConversions	2010-05-27 21:51:25 UTC (rev 7468)
@@ -0,0 +1,206 @@
+<!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>CombineConversions - 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%;">
+      CombineConversions
+    <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>
+      &nbsp;<a href = "TitleIndex">Index</a>
+      &nbsp;
+</table>
+<div id="content" lang="en" dir="ltr">
+Combine conversions is an optimization pass for the <a href="SSA">SSA</a> <a href="IntermediateLanguage">IntermediateLanguage</a>, invoked from <a href="SSASimplify">SSASimplify</a>. <h2 id="head-55f8ebc805e65b5b71ddafdae390e3be2bcd69af">Description</h2>
+<p>
+This pass looks for and simplifies nested calls to (signed) extension/truncation. 
+</p>
+<h2 id="head-8781d615fd77be9578225c40ac67b9471394cced">Implementation</h2>
+<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/ssa/combine-conversions.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">combine-conversions.sig</a> <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/ssa/combine-conversions.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">combine-conversions.fun</a> <h2 id="head-35ec00231a68203708e39f0e2cc10b50c6bf62de">Details and Notes</h2>
+<p>
+It processes each block in dfs order (visiting definitions before uses): 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ If the statement is not a <tt>PrimApp</tt> <tt>Word_extdToWord</tt>, skip it. 
+</p>
+</li>
+    <li>
+<p>
+ After processing a conversion, it tags the <tt>Var</tt> for subsequent use. 
+</p>
+</li>
+    <li>
+<p>
+ When inspecting a conversion, check if the <tt>Var</tt> operand on is also the result of a conversion. If it is, try to combine the two operations.  Repeatedly simplify until hitting either a non-conversion <tt>Var</tt> or a case where the conversion cannot be simplified. 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
+The optimization rules are very simple: 
+</p>
+
+    <ul>
+
+ 
+<pre>x1 = ...
+x2 = Word_extdToWord (W1, W2, {signed=s1}) x1
+x3 = Word_extdToWord (W2, W3, {signed=s2}) x2
+</pre>    <li class="gap">
+<p>
+ If <tt>W1&nbsp;=&nbsp;W2</tt>, then there is no conversions before <tt>x_1</tt>. 
+</p>
+</li>
+
+            <ul>
+
+   This is guaranteed because <tt>W2&nbsp;=&nbsp;W3</tt> will always trigger optimization. 
+            </ul>
+
+
+    <li class="gap">
+<p>
+ Case <tt>W1&nbsp;&lt;=&nbsp;W3&nbsp;&lt;=&nbsp;W2</tt>: 
+</p>
+</li>
+
+            <ul>
+
+   
+<pre>x3 = Word_extdToWord (W1, W3, {signed=s1}) x1
+</pre>
+            </ul>
+
+
+    <li>
+<p>
+ Case <tt>W1&nbsp;&lt;&nbsp;&nbsp;W2&nbsp;&lt;&nbsp;&nbsp;W3&nbsp;AND&nbsp;(NOT&nbsp;s1&nbsp;OR&nbsp;s2)</tt>:  
+</p>
+</li>
+
+            <ul>
+
+   
+<pre>x3 = Word_extdToWord (W1, W3, {signed=s1}) x1
+</pre>
+            </ul>
+
+
+    <li>
+<p>
+ Case <tt>W1&nbsp;=&nbsp;&nbsp;W2&nbsp;&lt;&nbsp;&nbsp;W3</tt>: 
+</p>
+</li>
+
+            <ul>
+
+   unoptimized    because there are no conversions past <tt>W1</tt> and <tt>x2&nbsp;=&nbsp;x1</tt> 
+            </ul>
+
+
+    <li class="gap">
+<p>
+ Case <tt>W3&nbsp;&lt;=&nbsp;W2&nbsp;&lt;=&nbsp;W1</tt>: 
+</p>
+</li>
+    <li>
+<p>
+ Case <tt>W3&nbsp;&lt;=&nbsp;W1&nbsp;&lt;=&nbsp;W2</tt>: 
+</p>
+</li>
+
+            <ul>
+
+   
+<pre>x_3 = Word_extdToWord (W1, W3, {signed=_}) x1
+</pre>   because <tt>W3&nbsp;&lt;=&nbsp;W1&nbsp;&amp;&amp;&nbsp;W3&nbsp;&lt;=&nbsp;W2</tt>, just clip <tt>x1</tt> 
+            </ul>
+
+
+    <li class="gap">
+<p>
+ Case <tt>W2&nbsp;&lt;&nbsp;W1&nbsp;&lt;=&nbsp;W3</tt>: 
+</p>
+</li>
+    <li>
+<p>
+ Case <tt>W2&nbsp;&lt;&nbsp;W3&nbsp;&lt;=&nbsp;W1</tt>: 
+</p>
+</li>
+
+            <ul>
+
+   unoptimized    because <tt>W2&nbsp;&lt;&nbsp;W1&nbsp;&amp;&amp;&nbsp;W2&nbsp;&lt;&nbsp;W3</tt>, has truncation effect 
+            </ul>
+
+
+    <li class="gap">
+<p>
+ Case <tt>W1&nbsp;&lt;&nbsp;W2&nbsp;&lt;&nbsp;W3&nbsp;AND&nbsp;s1&nbsp;AND&nbsp;(NOT&nbsp;s2)</tt>:  
+</p>
+</li>
+
+            <ul>
+
+   unoptimized    because each conversion affects the result separately </ul>
+
+</ul>
+
+</div>
+
+
+
+<p>
+<hr>
+Last edited on 2009-08-02 22:19:10 by <span title="173.86.192.189"><a href="MatthewFluet">MatthewFluet</a></span>.
+</body></html>

Modified: mlton/trunk/doc/guide/CompileTimeOptions
===================================================================
--- mlton/trunk/doc/guide/CompileTimeOptions	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/CompileTimeOptions	2010-05-27 21:51:25 UTC (rev 7468)
@@ -55,7 +55,7 @@
       &nbsp;
 </table>
 <div id="content" lang="en" dir="ltr">
-MLton's compile-time options control the name of the output file, the verbosity of compile-time messages, and whether or not certain optimizations are performed.  They also can specify which intermediate files are saved and can stop the compilation process early, at some intermediate pass, in which case compilation can be resumed by passing the generated files to MLton.  MLton uses the input file suffix to determine the type of input program.  The possibilities are <tt>.c</tt>, <tt>.cm</tt>, <tt>.mlb</tt>, <tt>.o</tt>, <tt>.s</tt>, and <tt>.sml</tt>. <p>
+MLton's compile-time options control the name of the output file, the verbosity of compile-time messages, and whether or not certain optimizations are performed.  They also can specify which intermediate files are saved and can stop the compilation process early, at some intermediate pass, in which case compilation can be resumed by passing the generated files to MLton.  MLton uses the input file suffix to determine the type of input program.  The possibilities are <tt>.c</tt>, <tt>.mlb</tt>, <tt>.o</tt>, <tt>.s</tt>, and <tt>.sml</tt>. <p>
 With no arguments, MLton prints the version number and exits.  For a usage message, run MLton with an invalid switch, e.g.  <tt>mlton&nbsp;-z</tt>.  In the explanation below and in the usage message, for flags that take a number of choices (e.g. <tt>{true|false}</tt>), the first value listed is the default. 
 </p>
 <h2 id="head-6bf5da9c080bee3a8142586c412aa39971137eee">Options</h2>
@@ -82,8 +82,8 @@
 </li>
     <li class="gap">
 <p>
- <tt>-codegen&nbsp;{native|x86|amd64|c|bytecode}</tt>  <br>
-Generate native code, byte code, or C code.  With  <tt>-codegen&nbsp;native</tt> (<tt>-codegen&nbsp;x86</tt> or <tt>-codegen&nbsp;amd64</tt>), MLton typically  compiles more quickly and generates better code. 
+ <tt>-codegen&nbsp;{native|x86|amd64|c}</tt>  <br>
+Generate native code or C code.  With  <tt>-codegen&nbsp;native</tt> (<tt>-codegen&nbsp;x86</tt> or <tt>-codegen&nbsp;amd64</tt>), MLton typically  compiles more quickly and generates better code. 
 </p>
 </li>
     <li class="gap">
@@ -260,7 +260,7 @@
 <td>
  <tt>f</tt> </td>
 <td>
- list of files on stdout (only makes sense when input is <tt>foo.cm</tt> or <tt>foo.mlb</tt>) </td>
+ list of files on stdout (only makes sense when input is <tt>foo.mlb</tt>) </td>
 </tr>
  <tr>
 <td>
@@ -355,5 +355,5 @@
 
 <p>
 <hr>
-Last edited on 2009-06-23 16:01:50 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2010-04-06 17:50:15 by <span title="129.21.75.73"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/ConstantPropagation
===================================================================
--- mlton/trunk/doc/guide/ConstantPropagation	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/ConstantPropagation	2010-05-27 21:51:25 UTC (rev 7468)
@@ -55,7 +55,7 @@
       &nbsp;
 </table>
 <div id="content" lang="en" dir="ltr">
-Constant propagation is an optimization pass for the <a href="SSA">SSA</a> <a href="IntermediateLanguage">IntermediateLanguage</a>, invoked from <a href="SSASimplify">SSASimplify</a>. <h2 id="head-55f8ebc805e65b5b71ddafdae390e3be2bcd69af">Description</h2>
+ConstantPropagation is an optimization pass for the <a href="SSA">SSA</a> <a href="IntermediateLanguage">IntermediateLanguage</a>, invoked from <a href="SSASimplify">SSASimplify</a>. <h2 id="head-55f8ebc805e65b5b71ddafdae390e3be2bcd69af">Description</h2>
 <p>
 This is whole-program constant propagation, even through data structures.  It also performs globalization of (small) values computed once. 
 </p>
@@ -70,5 +70,5 @@
 
 <p>
 <hr>
-Last edited on 2006-11-02 17:30:40 by <span title="76.16.241.4"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2009-08-02 21:45:51 by <span title="173.86.192.189"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/Credits
===================================================================
--- mlton/trunk/doc/guide/Credits	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Credits	2010-05-27 21:51:25 UTC (rev 7468)
@@ -250,7 +250,7 @@
 </li>
     <li class="gap">
 <p>
- MLton's implementation of mllex, mlyacc,   the <a href="CKitLibrary">ckit Library</a>,   the <a href="MLRISCLibrary">MLRISC Library</a>,   the <a href="SMLNJLibrary">SML/NJ Library</a>,   <a href="ConcurrentML">Concurrent ML</a>,   mlnlffigen and <a href="MLNLFFI">ML-NLFFI</a>   are modified versions of code from SML/NJ. 
+ MLton's implementation of <a href="MLLex"> mllex</a>, <a href="MLYacc"> mlyacc</a>,   the <a href="CKitLibrary">ckit Library</a>,   the <a href="MLRISCLibrary">MLRISC Library</a>,   the <a href="SMLNJLibrary">SML/NJ Library</a>,   <a href="ConcurrentML">Concurrent ML</a>,   mlnlffigen and <a href="MLNLFFI">ML-NLFFI</a>   are modified versions of code from SML/NJ. 
 </p>
 </li>
 </ul>
@@ -261,5 +261,5 @@
 
 <p>
 <hr>
-Last edited on 2009-06-18 23:23:18 by <span title="c-67-165-143-160.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2010-04-07 17:33:02 by <span title="fenrir.cs.rit.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/DeepFlatten
===================================================================
--- mlton/trunk/doc/guide/DeepFlatten	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/DeepFlatten	2010-05-27 21:51:25 UTC (rev 7468)
@@ -64,11 +64,44 @@
 </p>
 <h2 id="head-8781d615fd77be9578225c40ac67b9471394cced">Implementation</h2>
 <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/ssa/deep-flatten.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">deep-flatten.sig</a> <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/ssa/deep-flatten.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">deep-flatten.fun</a> <h2 id="head-35ec00231a68203708e39f0e2cc10b50c6bf62de">Details and Notes</h2>
+<p>
+There are some performance issues with the deep flatten pass, where it consumes an excessive amount of memory. 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ <a href="http://mlton.org/pipermail/mlton/2005-April/026990.html"><img src="moin-www.png" alt="[WWW]" height="11" width="11">http://mlton.org/pipermail/mlton/2005-April/026990.html</a> 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
+A number of applications require compilation with '-drop-pass deepFlatten' to avoid exceeding available memory.  It is often asked whether the deep flatten pass usually has a significant impact on performance.  The standard benchmark suite was run with and without the deep flatten pass enabled when the pass was first introduced: 
+</p>
+
+    <ul>
+
+    <li>
+<p>
+ <a href="http://mlton.org/pipermail/mlton/2004-August/025760.html"><img src="moin-www.png" alt="[WWW]" height="11" width="11">http://mlton.org/pipermail/mlton/2004-August/025760.html</a> 
+</p>
+</li>
+
+    </ul>
+
+
+<p>
+The conclusion is that it does not have a significant impact.  However, these are micro benchmarks; other applications may derive greater benefit from the pass. 
+</p>
 </div>
 
 
 
 <p>
 <hr>
-Last edited on 2006-11-02 17:43:24 by <span title="76.16.241.4"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2009-12-14 16:31:55 by <span title="fenrir.cs.rit.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/Defunctorize
===================================================================
--- mlton/trunk/doc/guide/Defunctorize	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Defunctorize	2010-05-27 21:51:25 UTC (rev 7468)
@@ -110,22 +110,26 @@
 </p>
 <p>
 Unfortunately, the <tt>datatype</tt> declaration can not be immediately moved to the top level, because that would leave <tt>'a</tt> free. 
-<pre>datatype 'b t = T of 'a * 'b
-fun 'a f (x: 'a) =
-   let 
-      val y: int t = T (x, 1)
-   in 
-      13
-   end
-</pre>In order to safely move <tt>datatype</tt>s, this pass must close them, as well as add any free type variables as extra arguments to the type constructor.  For example, the above program would be translated to the following. 
-<pre>datatype ('a, 'b) t = T of 'a * 'b
-fun 'a f (x: 'a) = 
-   let 
-      val y: ('a, int) t = T (x, 1)
-   in 
-      13
-   end
-</pre>
+<pre class=code>
+<B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> 'b t </FONT></B>=<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">T</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a * 'b
+</FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> <B><FONT COLOR="#228B22">'a</FONT></B> f (x: 'a) =
+   <B><FONT COLOR="#A020F0">let</FONT></B> 
+      <B><FONT COLOR="#A020F0">val</FONT></B> y: int t = T (x, <B><FONT COLOR="#5F9EA0">1</FONT></B>)
+   <B><FONT COLOR="#A020F0">in</FONT></B> 
+      <B><FONT COLOR="#5F9EA0">13</FONT></B>
+   <B><FONT COLOR="#A020F0">end</FONT></B>
+</PRE>
+ In order to safely move <tt>datatype</tt>s, this pass must close them, as well as add any free type variables as extra arguments to the type constructor.  For example, the above program would be translated to the following. 
+<pre class=code>
+<B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> ('a, 'b) t </FONT></B>=<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">T</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a * 'b
+</FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> <B><FONT COLOR="#228B22">'a</FONT></B> f (x: 'a) = 
+   <B><FONT COLOR="#A020F0">let</FONT></B> 
+      <B><FONT COLOR="#A020F0">val</FONT></B> y: ('a * int) t = T (x, <B><FONT COLOR="#5F9EA0">1</FONT></B>)
+   <B><FONT COLOR="#A020F0">in</FONT></B> 
+      <B><FONT COLOR="#5F9EA0">13</FONT></B>
+   <B><FONT COLOR="#A020F0">end</FONT></B>
+</PRE>
+ 
 </p>
 <h2 id="head-53d5b31ac8da1ff19a82453fd040f529e241f6cd">Historical Notes</h2>
 <p>
@@ -137,5 +141,5 @@
 
 <p>
 <hr>
-Last edited on 2007-07-08 22:40:00 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2009-12-18 11:24:10 by <span title="cpe-67-240-162-90.rochester.res.rr.com"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/Documentation
===================================================================
--- mlton/trunk/doc/guide/Documentation	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Documentation	2010-05-27 21:51:25 UTC (rev 7468)
@@ -190,12 +190,12 @@
 
     <li>
 <p>
- <a class="nonexistent" href="MLLex">MLLex</a> <a href="http://mlton.org/pages/Documentation/attachments/mllex.pdf"><img src="moin-www.png" alt="[WWW]" height="11" width="11">pdf</a> 
+ <a href="MLLex">MLLex</a> <a href="http://mlton.org/pages/Documentation/attachments/mllex.pdf"><img src="moin-www.png" alt="[WWW]" height="11" width="11">pdf</a> 
 </p>
 </li>
     <li>
 <p>
- <a class="nonexistent" href="MLYacc">MLYacc</a> <a href="http://mlton.org/pages/Documentation/attachments/mlyacc.pdf"><img src="moin-www.png" alt="[WWW]" height="11" width="11">pdf</a> 
+ <a href="MLYacc">MLYacc</a> <a href="http://mlton.org/pages/Documentation/attachments/mlyacc.pdf"><img src="moin-www.png" alt="[WWW]" height="11" width="11">pdf</a> 
 </p>
 </li>
     <li>

Added: mlton/trunk/doc/guide/FSharp
===================================================================
--- mlton/trunk/doc/guide/FSharp	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/FSharp	2010-05-27 21:51:25 UTC (rev 7468)
@@ -0,0 +1,65 @@
+<!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>FSharp - 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%;">
+      FSharp
+    <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>
+      &nbsp;<a href = "TitleIndex">Index</a>
+      &nbsp;
+</table>
+<div id="content" lang="en" dir="ltr">
+<a class="external" href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/"><img src="moin-www.png" alt="[WWW]" height="11" width="11">F#</a> is a functional programming language developed at Microsoft Research.   F# was partly inspired by the <a href="OCaml">OCaml</a> language and shares some common core constructs with it. F# is integrated with Visual Studio 2010 as a first-class language. </div>
+
+
+
+<p>
+<hr>
+Last edited on 2010-05-27 21:02:24 by <span title="fenrir.cs.rit.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+</body></html>

Modified: mlton/trunk/doc/guide/Features
===================================================================
--- mlton/trunk/doc/guide/Features	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Features	2010-05-27 21:51:25 UTC (rev 7468)
@@ -349,12 +349,12 @@
 </li>
     <li>
 <p>
- <a class="nonexistent" href="MLLex">MLLex</a> lexer generator 
+ <a href="MLLex">MLLex</a> lexer generator 
 </p>
 </li>
     <li>
 <p>
- <a class="nonexistent" href="MLYacc">MLYacc</a> parser generator 
+ <a href="MLYacc">MLYacc</a> parser generator 
 </p>
 </li>
     <li>

Modified: mlton/trunk/doc/guide/FrontEnd
===================================================================
--- mlton/trunk/doc/guide/FrontEnd	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/FrontEnd	2010-05-27 21:51:25 UTC (rev 7468)
@@ -62,10 +62,10 @@
 <h2 id="head-8781d615fd77be9578225c40ac67b9471394cced">Implementation</h2>
 <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/front-end/front-end.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">front-end.sig</a> <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/front-end/front-end.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">front-end.fun</a> <h2 id="head-35ec00231a68203708e39f0e2cc10b50c6bf62de">Details and Notes</h2>
 <p>
-The lexer is produced by <a class="nonexistent" href="MLLex">MLLex</a> from <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/front-end/ml.lex?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ml.lex</a>. 
+The lexer is produced by <a href="MLLex">MLLex</a> from <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/front-end/ml.lex?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ml.lex</a>. 
 </p>
 <p>
-The parser is produced by <a class="nonexistent" href="MLYacc">MLYacc</a> from <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/front-end/ml.grm?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ml.grm</a>. 
+The parser is produced by <a href="MLYacc">MLYacc</a> from <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/front-end/ml.grm?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">ml.grm</a>. 
 </p>
 <p>
 The specifications for the lexer and parser were originally taken from <a href="SMLNJ"> SML/NJ</a> (version 109.32), but have been heavily modified since then. 

Modified: mlton/trunk/doc/guide/FunctionalRecordUpdate
===================================================================
--- mlton/trunk/doc/guide/FunctionalRecordUpdate	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/FunctionalRecordUpdate	2010-05-27 21:51:25 UTC (rev 7468)
@@ -114,17 +114,17 @@
 </p>
 <h2 id="head-02713f1aab596f254ab1dd3551f0c5a015b6e40b">Advanced implementation</h2>
 <p>
-Using <a href="Fold">Fold</a> one can define a family of <tt>makeUpdate&lt;N&gt;</tt> functions and single <em>update</em> operator <tt>U</tt> so that one can define a functional record update function for any record type simply by specifying a (trivial) isomorphism between that type and a <a href="ProductType">product type</a>.  For example, suppose that we would like to do functional record update on records with fields <tt>a</tt> and <tt>b</tt>.  Then one defines a function <tt>updateAB</tt> as follows. 
+Using <a href="Fold">Fold</a> one can define a family of <tt>makeUpdate&lt;N&gt;</tt> functions and single <em>update</em> operator <tt>U</tt> so that one can define a functional record update function for any record type simply by specifying a (trivial) isomorphism between that type and function argument list.  For example, suppose that we would like to do functional record update on records with fields <tt>a</tt> and <tt>b</tt>.  Then one defines a function <tt>updateAB</tt> as follows. 
 </p>
 
 <pre class=code>
 <B><FONT COLOR="#A020F0">val</FONT></B> updateAB =
    <B><FONT COLOR="#A020F0">fn</FONT></B> z =&gt;
    <B><FONT COLOR="#A020F0">let</FONT></B>
-      <B><FONT COLOR="#A020F0">fun</FONT></B> p2r (v1 &amp; v2) = {a = v1, b = v2}
-      <B><FONT COLOR="#A020F0">fun</FONT></B> r2p {a = v1, b = v2} = (v1 &amp; v2)
+      <B><FONT COLOR="#A020F0">fun</FONT></B> from v1 v2 = {a = v1, b = v2}
+      <B><FONT COLOR="#A020F0">fun</FONT></B> to f {a = v1, b = v2} = f v1 v2
    <B><FONT COLOR="#A020F0">in</FONT></B>
-      makeUpdate2 (p2r, p2r, r2p)
+      makeUpdate2 (from, from, to)
    <B><FONT COLOR="#A020F0">end</FONT></B>
    z
 </PRE>
@@ -132,15 +132,15 @@
  
 </p>
 <p>
-The functions <tt>p2r</tt> (think <em>product to record</em>) and <tt>r2p</tt> (think <em>record to product</em>) specify an isomorphism between  <tt>a,b</tt> records and binary products.  There is a second use of <tt>p2r</tt> to work around the lack of <a href="FirstClassPolymorphism">first-class polymorphism</a> in SML. 
+The functions <tt>from</tt> (think <em>from function arguments</em>) and <tt>to</tt> (think <em>to function arguements</em>) specify an isomorphism between  <tt>a,b</tt> records and function arguments.  There is a second use of <tt>from</tt> to work around the lack of <a href="FirstClassPolymorphism">first-class polymorphism</a> in SML. 
 </p>
 <p>
 With the definition of <tt>updateAB</tt> in place, the following expressions are valid. 
 </p>
 
 <pre class=code>
-updateAB {a = <B><FONT COLOR="#5F9EA0">13</FONT></B>, b = <B><FONT COLOR="#BC8F8F">&quot;hello&quot;</FONT></B>} (U#b <B><FONT COLOR="#BC8F8F">&quot;goodbye&quot;</FONT></B>) $
-updateAB {a = <B><FONT COLOR="#5F9EA0">13.5</FONT></B>, b = true} (U#b false) (U#a <B><FONT COLOR="#5F9EA0">12.5</FONT></B>) $
+updateAB {a = <B><FONT COLOR="#5F9EA0">13</FONT></B>, b = <B><FONT COLOR="#BC8F8F">&quot;hello&quot;</FONT></B>} (set#b <B><FONT COLOR="#BC8F8F">&quot;goodbye&quot;</FONT></B>) $
+updateAB {a = <B><FONT COLOR="#5F9EA0">13.5</FONT></B>, b = true} (set#b false) (set#a <B><FONT COLOR="#5F9EA0">12.5</FONT></B>) $
 </PRE>
 <p>
  
@@ -153,10 +153,10 @@
 <B><FONT COLOR="#A020F0">val</FONT></B> updateBCD =
    <B><FONT COLOR="#A020F0">fn</FONT></B> z =&gt;
    <B><FONT COLOR="#A020F0">let</FONT></B>
-      <B><FONT COLOR="#A020F0">fun</FONT></B> p2r (v1 &amp; v2 &amp; v3) = {b = v1, c = v2, d = v3}
-      <B><FONT COLOR="#A020F0">fun</FONT></B> r2p {b = v1, c = v2, d = v3} = (v1 &amp; v2 &amp; v3)
+      <B><FONT COLOR="#A020F0">fun</FONT></B> from v1 v2 v3 = {b = v1, c = v2, d = v3}
+      <B><FONT COLOR="#A020F0">fun</FONT></B> to f {b = v1, c = v2, d = v3} = f v1 v2 v3
    <B><FONT COLOR="#A020F0">in</FONT></B>
-      makeUpdate3 (p2r, p2r, r2p)
+      makeUpdate3 (from, from, to)
    <B><FONT COLOR="#A020F0">end</FONT></B>
    z
 </PRE>
@@ -168,13 +168,13 @@
 </p>
 
 <pre class=code>
-updateBCD {b = <B><FONT COLOR="#5F9EA0">1</FONT></B>, c = <B><FONT COLOR="#5F9EA0">2</FONT></B>, d = <B><FONT COLOR="#5F9EA0">3</FONT></B>} (U#c <B><FONT COLOR="#5F9EA0">4</FONT></B>) (U#c <B><FONT COLOR="#5F9EA0">5</FONT></B>) $
+updateBCD {b = <B><FONT COLOR="#5F9EA0">1</FONT></B>, c = <B><FONT COLOR="#5F9EA0">2</FONT></B>, d = <B><FONT COLOR="#5F9EA0">3</FONT></B>} (set#c <B><FONT COLOR="#5F9EA0">4</FONT></B>) (set#c <B><FONT COLOR="#5F9EA0">5</FONT></B>) $
 </PRE>
 <p>
  
 </p>
 <p>
-Note that not all fields need be updated and that the same field may be updated multiple times.  Further note that the same <tt>U</tt> operator is used for all update functions (in the above, for both <tt>updateAB</tt> and <tt>updateBCD</tt>). 
+Note that not all fields need be updated and that the same field may be updated multiple times.  Further note that the same <tt>set</tt> operator is used for all update functions (in the above, for both <tt>updateAB</tt> and <tt>updateBCD</tt>). 
 </p>
 <p>
 In general, to define a functional-record-update function on records with fields <tt>f1</tt>, <tt>f2</tt>, ..., <tt>fN</tt>, use the following template. 
@@ -184,10 +184,10 @@
 <B><FONT COLOR="#A020F0">val</FONT></B> update =
    <B><FONT COLOR="#A020F0">fn</FONT></B> z =&gt;
    <B><FONT COLOR="#A020F0">let</FONT></B> 
-      <B><FONT COLOR="#A020F0">fun</FONT></B> p2r (v1 &amp; v2 &amp; ... &amp; vn) = {f1 = v1, f2 = v2, ..., <B><FONT COLOR="#A020F0">fn</FONT></B> = vn}
-      <B><FONT COLOR="#A020F0">fun</FONT></B> r2p {f1 = v1, f2 = v2, ..., <B><FONT COLOR="#A020F0">fn</FONT></B> = vn} = (v1 &amp; v2 &amp; ... &amp; vn)
+      <B><FONT COLOR="#A020F0">fun</FONT></B> from v1 v2 ... vn = {f1 = v1, f2 = v2, ..., <B><FONT COLOR="#A020F0">fn</FONT></B> = vn}
+      <B><FONT COLOR="#A020F0">fun</FONT></B> to f {f1 = v1, f2 = v2, ..., <B><FONT COLOR="#A020F0">fn</FONT></B> = vn} = v1 v2 ... vn
    <B><FONT COLOR="#A020F0">in</FONT></B>
-      makeUpdateN (p2r, p2r, r2p)
+      makeUpdateN (from, from, to)
    <B><FONT COLOR="#A020F0">end</FONT></B>
    z
 </PRE>
@@ -197,20 +197,10 @@
 <p>
 With this, one can update a record as follows. 
 <pre class=code>
-update {f1 = v1, ..., <B><FONT COLOR="#A020F0">fn</FONT></B> = vn} (U#fi1 vi1) ... (U#fim vim) $
+update {f1 = v1, ..., <B><FONT COLOR="#A020F0">fn</FONT></B> = vn} (set#fi1 vi1) ... (set#fim vim) $
 </PRE>
  
 </p>
-<p>
-If <tt>makeUpdateN</tt> is not already defined for the desired <tt>N</tt>, a generic <tt>makeUpdate</tt> function and special value, <tt>A</tt>, is defined so that one can use the following for <tt>makeUpdateN</tt>, where <tt>A</tt> is repeated <tt>N</tt> times. 
-</p>
-
-<pre class=code>
-makeUpdate A ... A $
-</PRE>
-<p>
- 
-</p>
 <h2 id="head-f7b6e4357c7be44d1408bdf8f0ac43469123a056">The FunctionalRecordUpdate structure</h2>
 <p>
 Here is the implementation of functional record update. 
@@ -219,46 +209,51 @@
 <pre class=code>
 <B><FONT COLOR="#0000FF">structure</FONT></B> FunctionalRecordUpdate =
    <B><FONT COLOR="#0000FF">struct</FONT></B>
-      <B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> ('x, 'y) u </FONT></B>=<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">X</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'x </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">Y</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'y
+      <B><FONT COLOR="#A020F0">local</FONT></B>
+         <B><FONT COLOR="#A020F0">fun</FONT></B> next g (f, z) x = g (f x, z)
+         <B><FONT COLOR="#A020F0">fun</FONT></B> f1 (f, z) x = f (z x)
+         <B><FONT COLOR="#A020F0">fun</FONT></B> f2  z = next f1  z
+         <B><FONT COLOR="#A020F0">fun</FONT></B> f3  z = next f2  z
 
-      </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> makeUpdate =
-         <B><FONT COLOR="#A020F0">fn</FONT></B> z =&gt;
-         Fold.fold
-         (((), (),
-           <B><FONT COLOR="#A020F0">fn</FONT></B> f =&gt; f o X,
-           <B><FONT COLOR="#A020F0">fn</FONT></B> (a, u) =&gt; <B><FONT COLOR="#A020F0">case</FONT></B> u <B><FONT COLOR="#A020F0">of</FONT></B> X x =&gt; x | _ =&gt; a),
-          <B><FONT COLOR="#A020F0">fn</FONT></B> (p, up, _, _) =&gt; <B><FONT COLOR="#A020F0">fn</FONT></B> (p2r, p2r', r2p) =&gt; <B><FONT COLOR="#A020F0">fn</FONT></B> r =&gt;
-          Fold.fold ((p2r' (p id), up, r2p r),
-                     <B><FONT COLOR="#A020F0">fn</FONT></B> (_, _, p) =&gt; p2r p))
-         z
-         
-      <B><FONT COLOR="#A020F0">val</FONT></B> A =
-         <B><FONT COLOR="#A020F0">fn</FONT></B> z =&gt;
-         Fold.step0
-         (<B><FONT COLOR="#A020F0">fn</FONT></B> (_, _, p, up) =&gt;
-          (p, up, <B><FONT COLOR="#A020F0">fn</FONT></B> f =&gt; p (f o X) &amp; (f o Y),
-           <B><FONT COLOR="#A020F0">fn</FONT></B> (a &amp; b, u) =&gt;
-           (<B><FONT COLOR="#A020F0">case</FONT></B> u <B><FONT COLOR="#A020F0">of</FONT></B> X x =&gt; up (a, x) | _ =&gt; a)
-           &amp; (<B><FONT COLOR="#A020F0">case</FONT></B> u <B><FONT COLOR="#A020F0">of</FONT></B> Y y =&gt; y | _ =&gt; b)))
-         z
+         <B><FONT COLOR="#A020F0">fun</FONT></B> c0  from = from
+         <B><FONT COLOR="#A020F0">fun</FONT></B> c1  from = c0  from f1
+         <B><FONT COLOR="#A020F0">fun</FONT></B> c2  from = c1  from f2
+         <B><FONT COLOR="#A020F0">fun</FONT></B> c3  from = c2  from f3
 
-      <B><FONT COLOR="#A020F0">fun</FONT></B> makeUpdate2 z = makeUpdate A A $ z
-      <B><FONT COLOR="#A020F0">fun</FONT></B> makeUpdate3 z = makeUpdate A A A $ z
-      <B><FONT COLOR="#A020F0">fun</FONT></B> makeUpdate4 z = makeUpdate A A A A $ z
+         <B><FONT COLOR="#A020F0">fun</FONT></B> makeUpdate cX (from, from', to) record =
+            <B><FONT COLOR="#A020F0">let</FONT></B>
+               <B><FONT COLOR="#A020F0">fun</FONT></B> ops () = cX from'
+               <B><FONT COLOR="#A020F0">fun</FONT></B> vars f = to f record
+            <B><FONT COLOR="#A020F0">in</FONT></B>
+               Fold.fold ((vars, ops), <B><FONT COLOR="#A020F0">fn</FONT></B> (vars, _) =&gt; vars from)
+            <B><FONT COLOR="#A020F0">end</FONT></B>
+      <B><FONT COLOR="#A020F0">in</FONT></B>
+         <B><FONT COLOR="#A020F0">fun</FONT></B> makeUpdate0  z = makeUpdate c0  z
+         <B><FONT COLOR="#A020F0">fun</FONT></B> makeUpdate1  z = makeUpdate c1  z
+         <B><FONT COLOR="#A020F0">fun</FONT></B> makeUpdate2  z = makeUpdate c2  z
+         <B><FONT COLOR="#A020F0">fun</FONT></B> makeUpdate3  z = makeUpdate c3  z
 
-      <B><FONT COLOR="#A020F0">fun</FONT></B> U s v = Fold.step0 (<B><FONT COLOR="#A020F0">fn</FONT></B> (r, up, p) =&gt; (r, up, up (p, s r v)))
+         <B><FONT COLOR="#A020F0">fun</FONT></B> upd z = Fold.step2 (<B><FONT COLOR="#A020F0">fn</FONT></B> (s, f, (vars, ops)) =&gt; (<B><FONT COLOR="#A020F0">fn</FONT></B> out =&gt; vars (s (ops ()) (out, f)), ops)) z
+         <B><FONT COLOR="#A020F0">fun</FONT></B> set z = Fold.step2 (<B><FONT COLOR="#A020F0">fn</FONT></B> (s, v, (vars, ops)) =&gt; (<B><FONT COLOR="#A020F0">fn</FONT></B> out =&gt; vars (s (ops ()) (out, <B><FONT COLOR="#A020F0">fn</FONT></B> _ =&gt; v)), ops)) z
+      <B><FONT COLOR="#A020F0">end</FONT></B>
    <B><FONT COLOR="#0000FF">end</FONT></B>
 </PRE>
 <p>
  
 </p>
 <p>
-The idea of <tt>makeUpdate</tt> is to inductively build the update function for n-ary product types.  Each <tt>A</tt> supplied to <tt>makeUpdate</tt> adds one more level to the product.  When finished with its arguments, <tt>makeUpdate</tt> begins a second fold, this time to process a variable number of <tt>U</tt> steps.  The second fold begins by converting the supplied record to a product, using the supplied isomorphism (<tt>p2r'</tt>).  Each step works by selecting a "path",  <tt>s&nbsp;r&nbsp;v</tt>), from the inductively constructed product, reformatted by the supplied isomorphism to look like a record.  Then, the inductively constructed update function is applied to the record-as-product and the path <tt>up&nbsp;(p,&nbsp;s&nbsp;r&nbsp;v)</tt> to yield a new record-as-product. Finally, at the end of the fold, the product is converted back to a record using the supplied isomorphism (<tt>p2r</tt>). 
+The idea of <tt>makeUpdate</tt> is to build a record of functions which  can replace the contents of one argument out of a list of arguments. The functions <tt>fX</tt> replace the 0th, 1st, ... argument with their argument <tt>z</tt>. The <tt>cX</tt> functions pass the first X <tt>f</tt> functions to the record constructor. 
 </p>
+<p>
+The <tt>#field</tt> notation of Standard ML allows us to select the map function which replaces the corresponding argument. By converting the record to an argument list, feeding that list through the selected map function and piping the list into the record constructor, functional record update is achieved. 
+</p>
 <h2 id="head-12c4ffe1d987164a4bedf6ab2aac597a113e181c">Efficiency</h2>
 <p>
 With MLton, the efficiency of this approach is as good as one would expect with the special syntax.  Namely a sequence of updates will be optimized into a single record construction that copies the unchanged fields and fills in the changed fields with their new values. 
 </p>
+<p>
+Before Sep 14, 2009, this page advocated an alternative implementation of FunctionalRecordUpdate. However, the old structure caused exponentially increasing compile times. We advise you to switch to the newer version. 
+</p>
 <h2 id="head-76c74bd071dd73f01696fddbbffc77712a479faf">Applications</h2>
 <p>
 Functional record update can be used to implement labelled <a href="OptionalArguments">optional arguments</a>. 
@@ -269,5 +264,5 @@
 
 <p>
 <hr>
-Last edited on 2009-01-08 12:30:02 by <span title="otaku.housemarque.fi"><a href="VesaKarvonen">VesaKarvonen</a></span>.
+Last edited on 2009-09-14 20:23:55 by <span title="ottawa.dvs.informatik.tu-darmstadt.de"><a href="WesleyTerpstra">WesleyTerpstra</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/GenerativeDatatype
===================================================================
--- mlton/trunk/doc/guide/GenerativeDatatype	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/GenerativeDatatype	2010-05-27 21:51:25 UTC (rev 7468)
@@ -82,11 +82,22 @@
 <p>
  
 </p>
+<h2 id="head-a4bc8bf5caf54b18cea9f58e83dd4acb488deb17">Also see</h2>
+
+    <ul>
+
+    <li>
+<p>
+ <a href="GenerativeException">GenerativeException</a> 
+</p>
+</li>
+</ul>
+
 </div>
 
 
 
 <p>
 <hr>
-Last edited on 2005-01-26 20:34:48 by <span title="cfs36.cs.cornell.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2010-03-02 15:11:35 by <span title="fenrir.cs.rit.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/GenerativeException
===================================================================
--- mlton/trunk/doc/guide/GenerativeException	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/GenerativeException	2010-05-27 21:51:25 UTC (rev 7468)
@@ -127,11 +127,22 @@
 <p>
 The <tt>exn</tt> type is effectively a <a href="UniversalType">universal type</a>. 
 </p>
+<h2 id="head-a4bc8bf5caf54b18cea9f58e83dd4acb488deb17">Also see</h2>
+
+    <ul>
+
+    <li>
+<p>
+ <a href="GenerativeDatatype">GenerativeDatatype</a> 
+</p>
+</li>
+</ul>
+
 </div>
 
 
 
 <p>
 <hr>
-Last edited on 2008-11-24 10:59:36 by <span title="otaku.housemarque.fi"><a href="VesaKarvonen">VesaKarvonen</a></span>.
+Last edited on 2010-03-02 15:11:39 by <span title="fenrir.cs.rit.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Modified: mlton/trunk/doc/guide/Index
===================================================================
--- mlton/trunk/doc/guide/Index	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Index	2010-05-27 21:51:25 UTC (rev 7468)
@@ -55,7 +55,7 @@
       &nbsp;
 </table>
 <div id="content" lang="en" dir="ltr">
-There are 342 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 348 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>
@@ -69,7 +69,7 @@
 <br><a href="Bugs20041109">Bugs20041109</a>
 <br><a href="Bugs20051202">Bugs20051202</a>
 <br><a href="Bugs20070826">Bugs20070826</a>
-<br><a href="Bugs200907XX">Bugs200907XX</a>
+<br><a href="Bugs200908XX">Bugs200908XX</a>
 <a name="C"><h3>C</h3></a><a href="CallGraph">CallGraph</a>
 <br><a href="CallingFromCToSML">CallingFromCToSML</a>
 <br><a href="CallingFromSMLToC">CallingFromSMLToC</a>
@@ -81,6 +81,7 @@
 <br><a href="Closure">Closure</a>
 <br><a href="ClosureConvert">ClosureConvert</a>
 <br><a href="CMinusMinus">CMinusMinus</a>
+<br><a href="CombineConversions">CombineConversions</a>
 <br><a href="CommonArg">CommonArg</a>
 <br><a href="CommonBlock">CommonBlock</a>
 <br><a href="CommonSubexp">CommonSubexp</a>
@@ -130,6 +131,7 @@
 <br><a href="ForeignFunctionInterfaceTypes">ForeignFunctionInterfaceTypes</a>
 <br><a href="ForLoops">ForLoops</a>
 <br><a href="FrontEnd">FrontEnd</a>
+<br><a href="FSharp">FSharp</a>
 <br><a href="FunctionalRecordUpdate">FunctionalRecordUpdate</a>
 <br><a href="fxp">fxp</a>
 <a name="G"><h3>G</h3></a><a href="GarbageCollection">GarbageCollection</a>
@@ -192,6 +194,7 @@
 <br><a href="MLBasisSyntaxAndSemantics">MLBasisSyntaxAndSemantics</a>
 <br><a href="MLj">MLj</a>
 <br><a href="MLKit">MLKit</a>
+<br><a href="MLLex">MLLex</a>
 <br><a href="MLmon">MLmon</a>
 <br><a href="MLNLFFI">MLNLFFI</a>
 <br><a href="MLNLFFIImplementation">MLNLFFIImplementation</a>
@@ -227,6 +230,7 @@
 <br><a href="MLtonWeak">MLtonWeak</a>
 <br><a href="MLtonWord">MLtonWord</a>
 <br><a href="MLtonWorld">MLtonWorld</a>
+<br><a href="MLYacc">MLYacc</a>
 <br><a href="MoinMoin">MoinMoin</a>
 <br><a href="Monomorphise">Monomorphise</a>
 <br><a href="MoscowML">MoscowML</a>
@@ -249,6 +253,7 @@
 <br><a href="PhantomType">PhantomType</a>
 <br><a href="PlatformSpecificNotes">PlatformSpecificNotes</a>
 <br><a href="PolyEqual">PolyEqual</a>
+<br><a href="PolyHash">PolyHash</a>
 <br><a href="PolyML">PolyML</a>
 <br><a href="PolymorphicEquality">PolymorphicEquality</a>
 <br><a href="Polyvariance">Polyvariance</a>
@@ -276,7 +281,8 @@
 <br><a href="Release20041109">Release20041109</a>
 <br><a href="Release20051202">Release20051202</a>
 <br><a href="Release20070826">Release20070826</a>
-<br><a href="Release200907XX">Release200907XX</a>
+<br><a href="Release200908XX">Release200908XX</a>
+<br><a href="Release201006XX">Release201006XX</a>
 <br><a href="ReleaseChecklist">ReleaseChecklist</a>
 <br><a href="RemoveUnused">RemoveUnused</a>
 <br><a href="Restore">Restore</a>

Modified: mlton/trunk/doc/guide/InfixingOperators
===================================================================
--- mlton/trunk/doc/guide/InfixingOperators	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/InfixingOperators	2010-05-27 21:51:25 UTC (rev 7468)
@@ -179,7 +179,7 @@
  
 </p>
 <p>
-As you can see, the left and right piping operators, &gt;| and |&lt;, are the same as the right and left application operators, respectively, except the associativities are reversed and the binding strength is lower. They are useful for piping data trough a sequence of operations. In general, 
+As you can see, the left and right piping operators, &gt;| and |&lt;, are the same as the right and left application operators, respectively, except the associativities are reversed and the binding strength is lower. They are useful for piping data through a sequence of operations. In general, 
 <pre>  x &gt;| f1 &gt;| ... &gt;| fN
 = fN (... (f1 x) ...)
 = (fN o ... o f1) x </pre>and 
@@ -239,5 +239,5 @@
 
 <p>
 <hr>
-Last edited on 2007-08-26 19:59:13 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+Last edited on 2009-10-22 12:20:45 by <span title="cpe-76-190-146-39.neo.res.rr.com">RanAriGur</span>.
 </body></html>

Modified: mlton/trunk/doc/guide/Installation
===================================================================
--- mlton/trunk/doc/guide/Installation	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Installation	2010-05-27 21:51:25 UTC (rev 7468)
@@ -67,7 +67,7 @@
     <li>
 <p>
  <tt>/usr/bin/mllex</tt>  <br>
-The <a class="nonexistent" href="MLLex">MLLex</a> lexer generator. 
+The <a href="MLLex">MLLex</a> lexer generator. 
 </p>
 </li>
     <li class="gap">
@@ -91,7 +91,7 @@
     <li class="gap">
 <p>
  <tt>/usr/bin/mlyacc</tt>  <br>
-The <a class="nonexistent" href="MLYacc">MLYacc</a> parser generator. 
+The <a href="MLYacc">MLYacc</a> parser generator. 
 </p>
 </li>
     <li class="gap">

Modified: mlton/trunk/doc/guide/Libraries
===================================================================
--- mlton/trunk/doc/guide/Libraries	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/Libraries	2010-05-27 21:51:25 UTC (rev 7468)
@@ -87,7 +87,7 @@
 
     <li>
 <p>
- Lex-like lexer generator: <a class="nonexistent" href="MLLex">MLLex</a> - distributed with MLton. 
+ Lex-like lexer generator: <a href="MLLex">MLLex</a> - distributed with MLton. 
 </p>
 </li>
     <li>
@@ -159,7 +159,7 @@
 </li>
     <li>
 <p>
- Yacc-like parser generator: <a class="nonexistent" href="MLYacc">MLYacc</a> - distributed with MLton. 
+ Yacc-like parser generator: <a href="MLYacc">MLYacc</a> - distributed with MLton. 
 </p>
 </li>
 

Modified: mlton/trunk/doc/guide/License
===================================================================
--- mlton/trunk/doc/guide/License	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/License	2010-05-27 21:51:25 UTC (rev 7468)
@@ -70,7 +70,7 @@
 
 MLton COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
 
-Copyright (C) 1999-2009 Henry Cejtin, Matthew Fluet, Suresh
+Copyright (C) 1999-2010 Henry Cejtin, Matthew Fluet, Suresh
    Jagannathan, and Stephen Weeks.
 Copyright (C) 1997-2000 by the NEC Research Institute
 

Modified: mlton/trunk/doc/guide/MLBasisAvailableLibraries
===================================================================
--- mlton/trunk/doc/guide/MLBasisAvailableLibraries	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/MLBasisAvailableLibraries	2010-05-27 21:51:25 UTC (rev 7468)
@@ -91,7 +91,7 @@
     <li class="gap">
 <p>
  <tt>$(SML_LIB)/mlyacc-lib/mlyacc-lib.mlb</tt>  <br>
-Modules used by parsers built with <a class="nonexistent" href="MLYacc">MLYacc</a>. 
+Modules used by parsers built with <a href="MLYacc">MLYacc</a>. 
 </p>
 </li>
     <li class="gap">

Modified: mlton/trunk/doc/guide/MLBasisPathMap
===================================================================
--- mlton/trunk/doc/guide/MLBasisPathMap	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/MLBasisPathMap	2010-05-27 21:51:25 UTC (rev 7468)
@@ -59,7 +59,7 @@
 The format of an <tt>mlb-path-map</tt> file is a sequence of lines; each line consists of two, white-space delimited tokens.  The first token is a path variable <tt>VAR</tt> and the second token is the path to which the variable is mapped.  The path may include path variables, which are recursively expanded. 
 </p>
 <p>
-The mapping from path variables to paths is initialized by reading a system-wide configuration file: <tt>/usr/lib/mlton/mlb-path-map</tt>. Additional path maps can be specified with <tt>-mlb-path-map</tt> (see <a href="CompileTimeOptions">CompileTimeOptions</a>).  Configuration files are processed from first to last and from top to bottom, later mappings take precedence over earlier mappings. 
+The mapping from path variables to paths is initialized by reading a system-wide configuration file: <tt>/usr/lib/mlton/mlb-path-map</tt>. Additional path maps can be specified with <tt>-mlb-path-map</tt> and individual path variable mappings can be specified with <tt>-mlb-path-var</tt> (see <a href="CompileTimeOptions">CompileTimeOptions</a>).  Configuration files are processed from first to last and from top to bottom, later mappings take precedence over earlier mappings. 
 </p>
 <p>
 The compiler and system-wide configuration file makes the following path  variables available. 
@@ -80,7 +80,7 @@
 <td>
 <tt>SML_LIB</tt></td>
 <td>
-path to system-wide libaries, usually <tt>/usr/lib/mlton/sml</tt></td>
+path to system-wide libraries, usually <tt>/usr/lib/mlton/sml</tt></td>
 </tr>
  <tr>
 <td>
@@ -104,5 +104,5 @@
 
 <p>
 <hr>
-Last edited on 2006-04-23 21:06:47 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 2010-04-06 17:43:43 by <span title="129.21.75.73"><a href="MatthewFluet">MatthewFluet</a></span>.
 </body></html>

Added: mlton/trunk/doc/guide/MLLex
===================================================================
--- mlton/trunk/doc/guide/MLLex	2010-05-24 20:50:49 UTC (rev 7467)
+++ mlton/trunk/doc/guide/MLLex	2010-05-27 21:51:25 UTC (rev 7468)
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org



More information about the MLton-commit mailing list