File: Utilities

package info (click to toggle)
mlton 20100608-5.1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 36,628 kB
  • ctags: 70,047
  • sloc: ansic: 18,441; lisp: 2,879; makefile: 1,572; sh: 1,326; pascal: 256; asm: 97
file content (133 lines) | stat: -rw-r--r-- 5,667 bytes parent folder | download | duplicates (3)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!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>Utilities - 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%;">
      Utilities
    <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 = "TitleIndex">Index</a>
      &nbsp;
</table>
<div id="content" lang="en" dir="ltr">
This page is a collection of basic utilities used in the examples on various pages.  See 
    <ul>

    <li>
<p>
 <a href="InfixingOperators">InfixingOperators</a>, and 
</p>
</li>
    <li>
<p>
 <a href="ProductType">ProductType</a> 
</p>
</li>

    </ul>


<p>
for longer discussions on some of these utilities. 
</p>

<pre class=code>
<I><FONT COLOR="#B22222">(* Operator precedence table *)</FONT></I>
<B><FONT COLOR="#A020F0">infix</FONT></B>   8  * / div mod        <I><FONT COLOR="#B22222">(* +1 from Basis Library *)</FONT></I>
<B><FONT COLOR="#A020F0">infix</FONT></B>   7  + - ^              <I><FONT COLOR="#B22222">(* +1 from Basis Library *)</FONT></I>
<B><FONT COLOR="#A020F0">infixr</FONT></B>  6  :: @               <I><FONT COLOR="#B22222">(* +1 from Basis Library *)</FONT></I>
<B><FONT COLOR="#A020F0">infix</FONT></B>   5  = &lt;&gt; &gt; &gt;= &lt; &lt;=     <I><FONT COLOR="#B22222">(* +1 from Basis Library *)</FONT></I>
<B><FONT COLOR="#A020F0">infix</FONT></B>   4  &lt;\ \&gt;
<B><FONT COLOR="#A020F0">infixr</FONT></B>  4  &lt;/ /&gt;
<B><FONT COLOR="#A020F0">infix</FONT></B>   3  o
<B><FONT COLOR="#A020F0">infix</FONT></B>   2  &gt;|
<B><FONT COLOR="#A020F0">infixr</FONT></B>  2  |&lt;
<B><FONT COLOR="#A020F0">infix</FONT></B>   1  :=                 <I><FONT COLOR="#B22222">(* -2 from Basis Library *)</FONT></I>
<B><FONT COLOR="#A020F0">infix</FONT></B>   0  before &amp;

<I><FONT COLOR="#B22222">(* Some basic combinators *)</FONT></I>
<B><FONT COLOR="#A020F0">fun</FONT></B> const x _ = x
<B><FONT COLOR="#A020F0">fun</FONT></B> cross (f, g) (x, y) = (f x, g y)
<B><FONT COLOR="#A020F0">fun</FONT></B> curry f x y = f (x, y)
<B><FONT COLOR="#A020F0">fun</FONT></B> fail e _ = <B><FONT COLOR="#A020F0">raise</FONT></B> e
<B><FONT COLOR="#A020F0">fun</FONT></B> id x = x

<I><FONT COLOR="#B22222">(* Product type *)</FONT></I>
<B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> ('a, 'b) product </FONT></B>=<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">&amp;</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a * 'b

<I><FONT COLOR="#B22222">(* Sum type *)</FONT></I>
</FONT></B><B><FONT COLOR="#A020F0">datatype</FONT></B><B><FONT COLOR="#228B22"> ('a, 'b) sum </FONT></B>=<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">INL</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'a </FONT></B>|<B><FONT COLOR="#228B22"> <FONT COLOR="#B8860B">INR</FONT> <B><FONT COLOR="#A020F0">of</FONT></B> 'b

<I><FONT COLOR="#B22222">(* Some type shorthands *)</FONT></I>
</FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a uop </FONT></B>=<B><FONT COLOR="#228B22"> 'a -&gt; 'a
</FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a fix </FONT></B>=<B><FONT COLOR="#228B22"> 'a uop -&gt; 'a
</FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a thunk </FONT></B>=<B><FONT COLOR="#228B22"> unit -&gt; 'a
</FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> 'a effect </FONT></B>=<B><FONT COLOR="#228B22"> 'a -&gt; unit
</FONT></B><B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> ('a, 'b) emb </FONT></B>=<B><FONT COLOR="#228B22"> ('a -&gt; 'b) * ('b -&gt; 'a)

<I><FONT COLOR="#B22222">(* Infixing, sectioning, and application operators *)</FONT></I>
</FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> x &lt;\ f = <B><FONT COLOR="#A020F0">fn</FONT></B> y =&gt; f (x, y)
<B><FONT COLOR="#A020F0">fun</FONT></B> f \&gt; y = f y
<B><FONT COLOR="#A020F0">fun</FONT></B> f /&gt; y = <B><FONT COLOR="#A020F0">fn</FONT></B> x =&gt; f (x, y)
<B><FONT COLOR="#A020F0">fun</FONT></B> x &lt;/ f = f x

<I><FONT COLOR="#B22222">(* Piping operators *)</FONT></I>
<B><FONT COLOR="#A020F0">val</FONT></B> <B><FONT COLOR="#A020F0">op</FONT></B>&gt;| = <B><FONT COLOR="#A020F0">op</FONT></B>&lt;/
<B><FONT COLOR="#A020F0">val</FONT></B> <B><FONT COLOR="#A020F0">op</FONT></B>|&lt; = <B><FONT COLOR="#A020F0">op</FONT></B>\&gt;
</PRE>
<p>
 
</p>
</div>



<p>
<hr>
Last edited on 2006-08-13 14:40:14 by <span title="cs181143070.pp.htv.fi"><a href="VesaKarvonen">VesaKarvonen</a></span>.
</body></html>