Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | (* nonexhaustive.sml *) |
2 | ||
3 | val _ = | |
4 | case 2 of | |
5 | 2 => 3 | |
6 | | 3 => 4 | |
7 | ||
8 | val _ = | |
9 | case [] of | |
10 | [] => 1 | |
11 | ||
12 | val _ = | |
13 | case [] of | |
14 | [] => 0 | |
15 | | [_] => 1 | |
16 | | [_, _] => 2 | |
17 | ||
18 | fun first l = | |
19 | case l of | |
20 | SOME x :: _ => x | |
21 | ||
22 | fun f x = | |
23 | case x of | |
24 | (false, false) => () | |
25 | | (true, true) => () | |
26 | ||
27 | datatype z = A | B | C | |
28 | ||
29 | fun f x = | |
30 | case x of | |
31 | (A, B, C) => () | |
32 | ||
33 | val _ = | |
34 | case Fail "foo" of | |
35 | Fail _ => false | |
36 | ||
37 | val _ = | |
38 | case (1, []) of | |
39 | (1, []) => true | |
40 | ||
41 | val _ = | |
42 | case (1, []) of | |
43 | (1, _) => true | |
44 | ||
45 | fun f 1 2 = 3 | |
46 | ||
47 | fun f "" = () | |
48 | ||
49 | fun f #"a" = 13 | |
50 | ||
51 | fun f (0w0: Word8.word) = 13 | |
52 | ||
53 | (* Checks for non-exhaustive pattern matches (compiler should warn). *) | |
54 | ||
55 | fun ord #"\000" = 0 | |
56 | | ord #"\002" = 2 | |
57 | | ord #"\003" = 3 | |
58 | | ord #"\004" = 4 | |
59 | | ord #"\005" = 5 | |
60 | | ord #"\006" = 6 | |
61 | | ord #"\007" = 7 | |
62 | | ord #"\008" = 8 | |
63 | | ord #"\009" = 9 | |
64 | | ord #"\010" = 10 | |
65 | | ord #"\011" = 11 | |
66 | | ord #"\012" = 12 | |
67 | | ord #"\013" = 13 | |
68 | | ord #"\014" = 14 | |
69 | | ord #"\015" = 15 | |
70 | | ord #"\016" = 16 | |
71 | | ord #"\017" = 17 | |
72 | | ord #"\018" = 18 | |
73 | | ord #"\019" = 19 | |
74 | | ord #"\020" = 20 | |
75 | | ord #"\021" = 21 | |
76 | | ord #"\022" = 22 | |
77 | | ord #"\023" = 23 | |
78 | | ord #"\024" = 24 | |
79 | | ord #"\025" = 25 | |
80 | | ord #"\026" = 26 | |
81 | | ord #"\027" = 27 | |
82 | | ord #"\028" = 28 | |
83 | | ord #"\029" = 29 | |
84 | | ord #"\030" = 30 | |
85 | | ord #"\031" = 31 | |
86 | | ord #"\032" = 32 | |
87 | | ord #"\033" = 33 | |
88 | | ord #"\034" = 34 | |
89 | | ord #"\035" = 35 | |
90 | | ord #"\036" = 36 | |
91 | | ord #"\037" = 37 | |
92 | | ord #"\038" = 38 | |
93 | | ord #"\039" = 39 | |
94 | | ord #"\040" = 40 | |
95 | | ord #"\041" = 41 | |
96 | | ord #"\042" = 42 | |
97 | | ord #"\043" = 43 | |
98 | | ord #"\044" = 44 | |
99 | | ord #"\045" = 45 | |
100 | | ord #"\046" = 46 | |
101 | | ord #"\047" = 47 | |
102 | | ord #"\048" = 48 | |
103 | | ord #"\049" = 49 | |
104 | | ord #"\050" = 50 | |
105 | | ord #"\051" = 51 | |
106 | | ord #"\052" = 52 | |
107 | | ord #"\053" = 53 | |
108 | | ord #"\054" = 54 | |
109 | | ord #"\055" = 55 | |
110 | | ord #"\056" = 56 | |
111 | | ord #"\057" = 57 | |
112 | | ord #"\058" = 58 | |
113 | | ord #"\059" = 59 | |
114 | | ord #"\060" = 60 | |
115 | | ord #"\061" = 61 | |
116 | | ord #"\062" = 62 | |
117 | | ord #"\063" = 63 | |
118 | | ord #"\064" = 64 | |
119 | | ord #"\065" = 65 | |
120 | | ord #"\066" = 66 | |
121 | | ord #"\067" = 67 | |
122 | | ord #"\068" = 68 | |
123 | | ord #"\069" = 69 | |
124 | | ord #"\070" = 70 | |
125 | | ord #"\071" = 71 | |
126 | | ord #"\072" = 72 | |
127 | | ord #"\073" = 73 | |
128 | | ord #"\074" = 74 | |
129 | | ord #"\075" = 75 | |
130 | | ord #"\076" = 76 | |
131 | | ord #"\077" = 77 | |
132 | | ord #"\078" = 78 | |
133 | | ord #"\079" = 79 | |
134 | | ord #"\080" = 80 | |
135 | | ord #"\081" = 81 | |
136 | | ord #"\082" = 82 | |
137 | | ord #"\083" = 83 | |
138 | | ord #"\084" = 84 | |
139 | | ord #"\085" = 85 | |
140 | | ord #"\086" = 86 | |
141 | | ord #"\087" = 87 | |
142 | | ord #"\088" = 88 | |
143 | | ord #"\089" = 89 | |
144 | | ord #"\090" = 90 | |
145 | | ord #"\091" = 91 | |
146 | | ord #"\092" = 92 | |
147 | | ord #"\093" = 93 | |
148 | | ord #"\094" = 94 | |
149 | | ord #"\095" = 95 | |
150 | | ord #"\096" = 96 | |
151 | | ord #"\097" = 97 | |
152 | | ord #"\098" = 98 | |
153 | | ord #"\099" = 99 | |
154 | | ord #"\100" = 100 | |
155 | | ord #"\101" = 101 | |
156 | | ord #"\102" = 102 | |
157 | | ord #"\103" = 103 | |
158 | | ord #"\104" = 104 | |
159 | | ord #"\105" = 105 | |
160 | | ord #"\106" = 106 | |
161 | | ord #"\107" = 107 | |
162 | | ord #"\108" = 108 | |
163 | | ord #"\109" = 109 | |
164 | | ord #"\110" = 110 | |
165 | | ord #"\111" = 111 | |
166 | | ord #"\112" = 112 | |
167 | | ord #"\113" = 113 | |
168 | | ord #"\114" = 114 | |
169 | | ord #"\115" = 115 | |
170 | | ord #"\116" = 116 | |
171 | | ord #"\117" = 117 | |
172 | | ord #"\118" = 118 | |
173 | | ord #"\119" = 119 | |
174 | | ord #"\120" = 120 | |
175 | | ord #"\121" = 121 | |
176 | | ord #"\122" = 122 | |
177 | | ord #"\123" = 123 | |
178 | | ord #"\124" = 124 | |
179 | | ord #"\125" = 125 | |
180 | | ord #"\126" = 126 | |
181 | | ord #"\127" = 127 | |
182 | | ord #"\128" = 128 | |
183 | | ord #"\129" = 129 | |
184 | | ord #"\130" = 130 | |
185 | | ord #"\131" = 131 | |
186 | | ord #"\132" = 132 | |
187 | | ord #"\133" = 133 | |
188 | | ord #"\134" = 134 | |
189 | | ord #"\135" = 135 | |
190 | | ord #"\136" = 136 | |
191 | | ord #"\137" = 137 | |
192 | | ord #"\138" = 138 | |
193 | | ord #"\139" = 139 | |
194 | | ord #"\140" = 140 | |
195 | | ord #"\141" = 141 | |
196 | | ord #"\142" = 142 | |
197 | | ord #"\143" = 143 | |
198 | | ord #"\144" = 144 | |
199 | | ord #"\145" = 145 | |
200 | | ord #"\146" = 146 | |
201 | | ord #"\147" = 147 | |
202 | | ord #"\148" = 148 | |
203 | | ord #"\149" = 149 | |
204 | | ord #"\150" = 150 | |
205 | | ord #"\151" = 151 | |
206 | | ord #"\152" = 152 | |
207 | | ord #"\153" = 153 | |
208 | | ord #"\154" = 154 | |
209 | | ord #"\155" = 155 | |
210 | | ord #"\156" = 156 | |
211 | | ord #"\157" = 157 | |
212 | | ord #"\158" = 158 | |
213 | | ord #"\159" = 159 | |
214 | | ord #"\160" = 160 | |
215 | | ord #"\161" = 161 | |
216 | | ord #"\162" = 162 | |
217 | | ord #"\163" = 163 | |
218 | | ord #"\164" = 164 | |
219 | | ord #"\165" = 165 | |
220 | | ord #"\166" = 166 | |
221 | | ord #"\167" = 167 | |
222 | | ord #"\168" = 168 | |
223 | | ord #"\169" = 169 | |
224 | | ord #"\170" = 170 | |
225 | | ord #"\171" = 171 | |
226 | | ord #"\172" = 172 | |
227 | | ord #"\173" = 173 | |
228 | | ord #"\174" = 174 | |
229 | | ord #"\175" = 175 | |
230 | | ord #"\176" = 176 | |
231 | | ord #"\177" = 177 | |
232 | | ord #"\178" = 178 | |
233 | | ord #"\179" = 179 | |
234 | | ord #"\180" = 180 | |
235 | | ord #"\181" = 181 | |
236 | | ord #"\182" = 182 | |
237 | | ord #"\183" = 183 | |
238 | | ord #"\184" = 184 | |
239 | | ord #"\185" = 185 | |
240 | | ord #"\186" = 186 | |
241 | | ord #"\187" = 187 | |
242 | | ord #"\188" = 188 | |
243 | | ord #"\189" = 189 | |
244 | | ord #"\190" = 190 | |
245 | | ord #"\191" = 191 | |
246 | | ord #"\192" = 192 | |
247 | | ord #"\193" = 193 | |
248 | | ord #"\194" = 194 | |
249 | | ord #"\195" = 195 | |
250 | | ord #"\196" = 196 | |
251 | | ord #"\197" = 197 | |
252 | | ord #"\198" = 198 | |
253 | | ord #"\199" = 199 | |
254 | | ord #"\200" = 200 | |
255 | | ord #"\201" = 201 | |
256 | | ord #"\202" = 202 | |
257 | | ord #"\203" = 203 | |
258 | | ord #"\204" = 204 | |
259 | | ord #"\205" = 205 | |
260 | | ord #"\206" = 206 | |
261 | | ord #"\207" = 207 | |
262 | | ord #"\208" = 208 | |
263 | | ord #"\209" = 209 | |
264 | | ord #"\210" = 210 | |
265 | | ord #"\211" = 211 | |
266 | | ord #"\212" = 212 | |
267 | | ord #"\213" = 213 | |
268 | | ord #"\214" = 214 | |
269 | | ord #"\215" = 215 | |
270 | | ord #"\216" = 216 | |
271 | | ord #"\217" = 217 | |
272 | | ord #"\218" = 218 | |
273 | | ord #"\219" = 219 | |
274 | | ord #"\220" = 220 | |
275 | | ord #"\221" = 221 | |
276 | | ord #"\222" = 222 | |
277 | | ord #"\223" = 223 | |
278 | | ord #"\224" = 224 | |
279 | | ord #"\225" = 225 | |
280 | | ord #"\226" = 226 | |
281 | | ord #"\227" = 227 | |
282 | | ord #"\228" = 228 | |
283 | | ord #"\229" = 229 | |
284 | | ord #"\230" = 230 | |
285 | | ord #"\231" = 231 | |
286 | | ord #"\232" = 232 | |
287 | | ord #"\233" = 233 | |
288 | | ord #"\234" = 234 | |
289 | | ord #"\235" = 235 | |
290 | | ord #"\236" = 236 | |
291 | | ord #"\237" = 237 | |
292 | | ord #"\238" = 238 | |
293 | | ord #"\239" = 239 | |
294 | | ord #"\240" = 240 | |
295 | | ord #"\241" = 241 | |
296 | | ord #"\242" = 242 | |
297 | | ord #"\243" = 243 | |
298 | | ord #"\244" = 244 | |
299 | | ord #"\245" = 245 | |
300 | | ord #"\246" = 246 | |
301 | | ord #"\247" = 247 | |
302 | | ord #"\248" = 248 | |
303 | | ord #"\249" = 249 | |
304 | | ord #"\250" = 250 | |
305 | | ord #"\251" = 251 | |
306 | | ord #"\252" = 252 | |
307 | | ord #"\253" = 253 | |
308 | | ord #"\254" = 254 | |
309 | | ord #"\255" = 255; |