/usr/share/doc/mlton/guide/MLBasisAnnotationExamples is in mlton-doc 20100608-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | <!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>MLBasisAnnotationExamples - 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">
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-833377-1";
urchinTracker();
</script>
<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 MLTONWIKIVERSION</a>
<td style = "
border: 0px;
font-size: 150%;
text-align: center;
width: 50%;">
MLBasisAnnotationExamples
<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>
<a href = "TitleIndex">Index</a>
</table>
<div id="content" lang="en" dir="ltr">
Here are some example uses of <a href="MLBasisAnnotations">MLBasisAnnotations</a>. <h2 id="head-1152ecc106cfaf7f85015d0ff747fb60937f1498">Eliminate spurious warnings in automatically generated code</h2>
<p>
Programs that automatically generate source code can often produce nonexhaustive matches, relying on invariants of the generated code to ensure that the matches never fail. A programmer may wish to elide the nonexhaustive match warnings from this code, in order that legitimate warnings are not missed in a flurry of false positives. To do so, the programmer simply annotates the generated code with the <tt>nonexhaustiveMatch ignore</tt> annotation:
<pre>local
$(GEN_ROOT)/gen-lib.mlb
ann "nonexhaustiveMatch ignore" in
foo.gen.sml
end
in
signature FOO
structure Foo
end
</pre>
</p>
<h2 id="head-ca0798eb6a561e7bad74e00fdaeec1e2d7d9dec3">Deliver a library</h2>
<p>
Standard ML libraries can be delivered via <tt>.mlb</tt> files. Authors of such libraries should strive to be mindful of the ways in which programmers may choose to compile their programs. For example, although the defaults for <tt>sequenceNonUnit</tt> and <tt>warnUnused</tt> are <tt>ignore</tt> and <tt>false</tt>, periodically compiling with these annotations defaulted to <tt>warn</tt> and <tt>true</tt> can help uncover likely bugs. However, a programmer is unlikely to be interested in unused modules from an imported library, and the behavior of <tt>sequenceNonUnit error</tt> may be incompatible with some libraries. Hence, a library author may choose to deliver a library as follows: <pre>ann
"nonexhaustiveMatch warn" "redundantMatch warn"
"sequenceNonUnit warn"
"warnUnused true" "forceUsed"
in
local
file1.sml
...
filen.sml
in
functor F1
...
signature S1
...
structure SN
...
end
end
</pre>
</p>
<p>
The annotations <tt>nonexhaustiveMatch warn</tt>, <tt>redundantMatch warn</tt>, and <tt>sequenceNonUnit warn</tt> have the obvious effect on elaboration. The annotations <tt>warnUnused true</tt> and <tt>forceUsed</tt> work in conjunction --- warning on any identifiers that do not contribute to the exported modules, and preventing warnings on exported modules that are not used in the remainder of the program. Many of the <a href="MLBasisAvailableLibraries">available libraries</a> are delivered with these annotations.
</p>
</div>
<p>
<hr>
Last edited on 2005-12-01 19:45:40 by <span title="ppp-71-139-183-221.dsl.snfc21.pacbell.net"><a href="StephenWeeks">StephenWeeks</a></span>.
</body></html>
|