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 978 - (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 :     <A HREF="doc/basis/index.html">
31 :     <I>SML Basis Library</I></A> is added to the
32 :     specification of the language.
33 :     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 :     <A HREF="doc/basis/index.html">Basis Library</A>
91 :     is available online.
92 :    
93 :    
94 :     <h4>Text Books</h4>
95 :     <p>
96 :     The following new editions of ML programming textbooks describe SML '97.
97 :     <UL>
98 :     <LI>
99 :     <a href="http://www.cl.cam.ac.uk/users/lcp/MLbook/">Paulson's <i>ML for the Working Programmer (2nd edition)</i></a>
100 :     <LI>
101 :     <a href="http://www-db.stanford.edu/~ullman/emlp.html">Ullman's
102 :     <i>Elements of ML Programming (ML97 Edition)</i></a>
103 :     </UL>
104 :     <p>
105 :     <h4>Implementations</h4>
106 :     <dl>
107 :     <dt><a href="index.html">Standard ML of New Jersey</a><dd>
108 : macqueen 978 SML/NJ versions <a href="NEWS/110-README.html">110</a> and later implement SML
109 :     '97 plus some extra features (vector expressions and patterns, OR patterns,
110 :     withtype in signatures, higher-order modules).
111 : macqueen 953 <dt><a href="http://www.dina.kvl.dk/~sestoft/mosml.html">Moscow ML</a>
112 : macqueen 978 <dd>An implementation based on code from Caml Special Light.
113 :     The module system provides some extra features (higher-order modules,
114 :     first-class structures, recursive modules).
115 :     <dt><A HREF="http://www.it-c.dk/research/mlkit/">ML Kit</A>
116 :     <dd>The ML Kit implements SML '97 and uses region analysis for memory
117 :     management. The module system is implemented using a scheme called
118 :     "static interpretation".
119 :     <dt><A HREF="http://www.sourcelight.com/MLton/">
120 :     <dd>A whole program compiler for SML '97.
121 :     <dt><A HREF="http://www.polyml.org">
122 :     <dd>Versions 4 and later implement SML '97.
123 : macqueen 953 </dl>
124 :     </blockquote>
125 :     <HR>
126 :     <CENTER><STRONG>
127 :     | <A HREF="index.html">SML/NJ Home Page</A> |
128 :     </STRONG></CENTER>
129 :     <HR>
130 :     Send your comments to <A HREF="mailto:sml-nj@research.bell-labs.com">sml-nj@research.bell-labs.com</A><BR>
131 :     <FONT SIZE="-3">
132 :     Copyright &#169; 1998,
133 :     <A HREF="http://www.lucent.com/">Lucent Technologies; Bell Laboratories</A>.
134 :     <BR>
135 :     </FONT>
136 :     </BODY>
137 :     </HTML>

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