Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /pages/trunk/sml97.html
ViewVC logotype

Annotation of /pages/trunk/sml97.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4189 - (view) (download) (as text)

1 : macqueen 953 <!-- Copyright (c) 1996 Lucent Technologies; Bell Laboratories -->
2 :     <!-- Changed by: John Reppy, 19-Dec-1997 -->
3 :     <!-- Changed by: Andrew Appel, 5-Dec-1997 -->
4 :     <!-- Changed by: Dave MacQueen, 21-Apr-1997 -->
5 :     <!-- Changed by: Lal George, 28-Oct-1996 -->
6 :    
7 :     <HTML>
8 :     <TITLE>SML '97</TITLE>
9 :    
10 :     <BODY BGCOLOR="ffffff">
11 :     <H1>Standard ML '97</H1>
12 :     <HR>
13 :     <blockquote>
14 :     <a href="sml.html">Standard ML</a> was proposed in 1983, designed from '84-'88,
15 :     and defined in
16 :     <a href="http://mitpress.mit.edu/book-home.tcl?isbn=0262631326"><I>Definition
17 :     of Standard ML</I>
18 :     (Milner, Tofte, Harper, MIT Press, 1990)</a>.
19 :     <p>
20 :     Standard ML '97 is
21 :     a modest revision (and simplification) of the language,
22 :     defined in <a href="http://mitpress.mit.edu/book-home.tcl?isbn=0262631814"><I>The Definition of Standard ML
23 :     (Revised)</I> (Milner, Tofte, Harper, MacQueen, MIT Press, 1997)</a>.
24 :     <p>
25 :     The name of the revised language remains "Standard ML", but we also
26 :     refer to it as "Standard ML '97" or "SML '97" to distinguish it
27 :     from the 1990 version, which can be referred to as "SML '90".
28 :     <p>
29 :     At the same time, the new
30 : jhr 3882 <!-- changed URL until www.standardml.org works again
31 : jhr 3636 <A HREF="http://www.standardml.org/Basis/">
32 : jhr 3882 -->
33 :     <A HREF="http://www.sml-family.org/Basis/">
34 : macqueen 953 <I>SML Basis Library</I></A> is added to the
35 :     specification of the language.
36 :     The new basis library is intended to support a wide range of systems
37 :     and applications programming: it specifies
38 :     a broad collection of predefined modules that provide basic types,
39 :     input/output facilities, and interfaces for interacting with the
40 :     host operating system in a portable way.
41 :     <p>
42 :     The highlights of the language changes in SML '97 are given below.
43 :     For much more detail on the changes, and suggestions on how to convert
44 :     SML '90 code to run under SML '97, see the <a
45 :     href="doc/Conversion/index.html">SML '97 Conversion Guide</a>.
46 :    
47 :     <p>
48 :     The principal language changes in <B>SML '97</B> are:
49 :     <p>
50 :     <ul>
51 :     <li>
52 :    
53 :     <em>The elimination of imperative type variables</em>. The role of
54 :     imperative type variables in constraining polymorphism in the presence
55 :     of effects is now played by the <em>value restriction</em>, which
56 :     allows the type of a val binding to be generalized only when the right
57 :     hand side is an expression in a restricted form called a <em>value
58 :     expression</em>. A value expression is either a constant, a variable,
59 :     a function expression (i.e. a lambda expression) or is built from
60 :     these elements using products and constructions.
61 :    
62 :     <p> <li>
63 :    
64 :     <em>The elimination of structure sharing</em>. Type sharing is still
65 :     available, and the structure sharing notation remains, but is
66 :     interpreted in a weaker sense, as an indirect way of expressing type
67 :     sharing. The role of type sharing is restricted somewhat so as not
68 :     to conflict with type definitions.
69 :    
70 :     <p>
71 :     <li>
72 :    
73 :     <em>The addition of type definitions in signatures</em>. There is
74 :     also a new <em>where type</em> notation that allows one to modify an
75 :     existing signature by adding definitions for its type components.
76 :     New forms of datatype specifications and definitions allow a datatype
77 :     to be defined to be the same as an existing datatype.
78 :    
79 :     </ul>
80 :    
81 :     <p>
82 :     <h4>Documentation</h4>
83 :     <P>
84 :     A <A
85 :     HREF="doc/Conversion/index.html"> SML '97 Conversion Guide</A>
86 :     covers the issues of converting programs from
87 :     SML/NJ 0.93 to SML '97 (SML/NJ 110). A useful conversion aid is the
88 :     <A HREF="doc/Conversion/top-level-comparison.html">
89 :     Top Level Environment Comparison</A>,
90 :     which summarizes the differences between the top level environments of
91 :     SML/NJ 0.93 (which is assumed by some older textbooks) and the new SML
92 :     '97 (SML/NJ 110) top level. Full documentation for the
93 : jhr 3882 <!-- changed URL until www.standardml.org works again
94 : jhr 3636 <A HREF="http://www.standardml.org/Basis/">Basis Library</A>
95 : jhr 3882 -->
96 :     <A HREF="http://www.sml-family.org/Basis/">Basis Library</A>
97 : macqueen 953 is available online.
98 :    
99 :    
100 :     <h4>Text Books</h4>
101 :     <p>
102 :     The following new editions of ML programming textbooks describe SML '97.
103 :     <UL>
104 :     <LI>
105 :     <a href="http://www.cl.cam.ac.uk/users/lcp/MLbook/">Paulson's <i>ML for the Working Programmer (2nd edition)</i></a>
106 :     <LI>
107 :     <a href="http://www-db.stanford.edu/~ullman/emlp.html">Ullman's
108 :     <i>Elements of ML Programming (ML97 Edition)</i></a>
109 :     </UL>
110 :     <p>
111 :     <h4>Implementations</h4>
112 :     <dl>
113 :     <dt><a href="index.html">Standard ML of New Jersey</a><dd>
114 : macqueen 978 SML/NJ versions <a href="NEWS/110-README.html">110</a> and later implement SML
115 :     '97 plus some extra features (vector expressions and patterns, OR patterns,
116 :     withtype in signatures, higher-order modules).
117 : macqueen 953 <dt><a href="http://www.dina.kvl.dk/~sestoft/mosml.html">Moscow ML</a>
118 : macqueen 978 <dd>An implementation based on code from Caml Special Light.
119 :     The module system provides some extra features (higher-order modules,
120 :     first-class structures, recursive modules).
121 :     <dt><A HREF="http://www.it-c.dk/research/mlkit/">ML Kit</A>
122 :     <dd>The ML Kit implements SML '97 and uses region analysis for memory
123 :     management. The module system is implemented using a scheme called
124 :     "static interpretation".
125 : mblume 1257 <dt><A HREF="http://www.mlton.org/">MLton</A>
126 : macqueen 978 <dd>A whole program compiler for SML '97.
127 : macqueen 979 <dt><A HREF="http://www.polyml.org">PolyML</A>
128 : macqueen 978 <dd>Versions 4 and later implement SML '97.
129 : macqueen 953 </dl>
130 :     </blockquote>
131 :     <HR>
132 :     <CENTER><STRONG>
133 :     | <A HREF="index.html">SML/NJ Home Page</A> |
134 :     </STRONG></CENTER>
135 :     <HR>
136 : jhr 4189 Send your comments to <img src="smlnj-list-logo.png" align=center><br>
137 : macqueen 953 <FONT SIZE="-3">
138 :     Copyright &#169; 1998,
139 :     <A HREF="http://www.lucent.com/">Lucent Technologies; Bell Laboratories</A>.
140 :     <BR>
141 :     </FONT>
142 :     </BODY>
143 :     </HTML>

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0