Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Tracker SCM

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

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