<!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>StandardMLPortability - 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">

<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 20051202</a>
    <td style = "
		border: 0px;
		font-size: 150%;
		text-align: center;
		width: 50%;">
      StandardMLPortability
    <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 = "Index">Index</a>
      &nbsp;
</table>
<div id="content" lang="en" dir="ltr">
Technically, SML'97 as defined in the <a href="DefinitionOfStandardML">Definition</a> requires only a a minimal initial basis, which, while including the types <tt>int</tt>, <tt>real</tt>, <tt>char</tt>, and <tt>string</tt>, need have no operations on those base types.  Hence, the only observable output of an SML'97 program is termination or raising an exception.  Most SML compilers should agree there, to the degree each agrees with the Definition.  See <a href="UnresolvedBugs">UnresolvedBugs</a> for MLton's very few corner cases. <p>
Realistically, a program needs to make use of the  <a href="BasisLibrary">Basis Library</a>. Within the Basis Library, there are numerous places where the behavior is implementation dependent.  For a trivial example: 
</p>

<pre class=code>
<B><FONT COLOR="#A020F0">val</FONT></B> _ = valOf (Int.maxInt)
</PRE>
<p>
 
</p>
<p>
may either raise the <tt>Option</tt> exception (if  <tt>Int.maxInt&nbsp;==&nbsp;NONE</tt>) or may terminate normally.  The default Int/Real/Word sizes are the biggest implementation dependent aspect; so, one implementation may raise <tt>Overflow</tt> while another can accommodate the result.  Also, maximum array and vector lengths are implementation dependent.  Interfacing with the operating system is a bit murky, and implementations surely differ in handling of errors there. 
</p>
</div>



<p>
<hr>
Last edited on 2005-12-02 04:25:49 by <span title="ppp-71-139-183-221.dsl.snfc21.pacbell.net"><a href="StephenWeeks">StephenWeeks</a></span>.
</body></html>
