Backport from sid to buster
[hcoop/debian/mlton.git] / doc / guide / localhost / LanguageChanges
CommitLineData
7f918cf1
CE
1<!DOCTYPE html>\r
2<html lang="en">\r
3<head>\r
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r
5<meta name="generator" content="AsciiDoc 8.6.9">\r
6<title>LanguageChanges</title>\r
7<link rel="stylesheet" href="./asciidoc.css" type="text/css">\r
8<link rel="stylesheet" href="./pygments.css" type="text/css">\r
9\r
10\r
11<script type="text/javascript" src="./asciidoc.js"></script>\r
12<script type="text/javascript">\r
13/*<![CDATA[*/\r
14asciidoc.install();\r
15/*]]>*/\r
16</script>\r
17<link rel="stylesheet" href="./mlton.css" type="text/css">\r
18</head>\r
19<body class="article">\r
20<div id="banner">\r
21<div id="banner-home">\r
22<a href="./Home">MLton 20180207</a>\r
23</div>\r
24</div>\r
25<div id="header">\r
26<h1>LanguageChanges</h1>\r
27</div>\r
28<div id="content">\r
29<div id="preamble">\r
30<div class="sectionbody">\r
31<div class="paragraph"><p>We are sometimes asked to modify MLton to change the language it\r
32compiles. In short, we are conservative about making such changes.\r
33There are a number of reasons for this.</p></div>\r
34<div class="ulist"><ul>\r
35<li>\r
36<p>\r
37<a href="DefinitionOfStandardML">The Definition of Standard ML</a> is an\r
38extremely high standard of specification. The value of the Definition\r
39would be significantly diluted by changes that are not specified at an\r
40equally high level, and the dilution increases with the complexity of\r
41the language change and its interaction with other language features.\r
42</p>\r
43</li>\r
44<li>\r
45<p>\r
46The SML community is small and there are a number of\r
47<a href="StandardMLImplementations">SML implementations</a>. Without an\r
48agreed-upon standard, it becomes very difficult to port programs\r
49between compilers, and the community would be balkanized.\r
50</p>\r
51</li>\r
52<li>\r
53<p>\r
54Our main goal is to enable programmers to be as effective as\r
55possible with MLton/SML. There are a number of improvements other\r
56than language changes that we could spend our time on that would\r
57provide more benefit to programmers.\r
58</p>\r
59</li>\r
60<li>\r
61<p>\r
62The more the language that MLton compiles changes over time, the\r
63more difficult it is to use MLton as a stable platform for serious\r
64program development.\r
65</p>\r
66</li>\r
67</ul></div>\r
68<div class="paragraph"><p>Despite these drawbacks, we have extended SML in a couple of cases.</p></div>\r
69<div class="ulist"><ul>\r
70<li>\r
71<p>\r
72<a href="ForeignFunctionInterface"> Foreign function interface</a>\r
73</p>\r
74</li>\r
75<li>\r
76<p>\r
77<a href="MLBasis"> ML Basis system</a>\r
78</p>\r
79</li>\r
80<li>\r
81<p>\r
82<a href="SuccessorML"> Successor ML features</a>\r
83</p>\r
84</li>\r
85</ul></div>\r
86<div class="paragraph"><p>We allow these language extensions because they provide functionality\r
87that is impossible to achieve without them or have non-trivial\r
88community support. The Definition does not define a foreign function\r
89interface. So, we must either extend the language or greatly restrict\r
90the class of programs that can be written. Similarly, the Definition\r
91does not provide a mechanism for namespace control at the module\r
92level, making it impossible to deliver packaged libraries and have a\r
93hope of users using them without name clashes. The ML Basis system\r
94addresses this problem. We have also provided a formal specification\r
95of the ML Basis system at the level of the Definition.</p></div>\r
96</div>\r
97</div>\r
98<div class="sect1">\r
99<h2 id="_also_see">Also see</h2>\r
100<div class="sectionbody">\r
101<div class="ulist"><ul>\r
102<li>\r
103<p>\r
104<a href="http://www.mlton.org/pipermail/mlton/2004-August/016165.html">http://www.mlton.org/pipermail/mlton/2004-August/016165.html</a>\r
105</p>\r
106</li>\r
107<li>\r
108<p>\r
109<a href="http://www.mlton.org/pipermail/mlton-user/2004-December/000320.html">http://www.mlton.org/pipermail/mlton-user/2004-December/000320.html</a>\r
110</p>\r
111</li>\r
112</ul></div>\r
113</div>\r
114</div>\r
115</div>\r
116<div id="footnotes"><hr></div>\r
117<div id="footer">\r
118<div id="footer-text">\r
119</div>\r
120<div id="footer-badges">\r
121</div>\r
122</div>\r
123</body>\r
124</html>\r