Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | abstype t = T |
2 | with | |
3 | val eq = op = | |
4 | end | |
5 | val _ = eq (3, 3) | |
6 | ||
7 | abstype t = T | |
8 | with | |
9 | val t = T | |
10 | val eq = op = | |
11 | end | |
12 | val _ = eq (t, t) | |
13 | ||
14 | abstype t = T | |
15 | with | |
16 | val t = T | |
17 | val eq = op = | |
18 | val _ = eq (t, t) | |
19 | end | |
20 | val _ = eq (2, 3) | |
21 | ||
22 | abstype t = T | |
23 | with | |
24 | val t = T | |
25 | val eq = op = | |
26 | val _ = eq (t, t) | |
27 | end | |
28 | val _ = eq (t, t) | |
29 | ||
30 | abstype t = T | |
31 | with | |
32 | val t = T | |
33 | val eq = op = | |
34 | val _ = eq (t, t) andalso eq (2, 3) | |
35 | end | |
36 | val _ = eq (2, 3) | |
37 | ||
38 | (* with abstype *) | |
39 | ||
40 | structure S = | |
41 | struct | |
42 | abstype s = S | |
43 | with | |
44 | val a = S | |
45 | end | |
46 | end | |
47 | ||
48 | signature F = | |
49 | sig | |
50 | val b : S.s | |
51 | end | |
52 | ||
53 | functor F() : F = | |
54 | struct | |
55 | type s = S.s | |
56 | val b = S.a | |
57 | end | |
58 | ||
59 | ||
60 | functor K() = | |
61 | struct | |
62 | structure F = F() | |
63 | end | |
64 | ||
65 | structure K = K() | |
66 | ||
67 | (* abstype.sml *) | |
68 | ||
69 | (* Checks equality inferred for abstype environments. *) | |
70 | ||
71 | abstype t = T with | |
72 | datatype u = U of t | |
73 | val eq = op= | |
74 | end | |
75 | ||
76 | fun eq1(t1, t2) = U t1 = U t2; | |
77 | fun eq2(t1, t2 : t) = eq(t1, t2); |