File: eqtype.sml

package info (click to toggle)
mlton 20130715-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 60,900 kB
  • ctags: 69,386
  • sloc: xml: 34,418; ansic: 17,399; lisp: 2,879; makefile: 1,605; sh: 1,254; pascal: 256; python: 143; asm: 97
file content (88 lines) | stat: -rw-r--r-- 1,806 bytes parent folder | download | duplicates (7)
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
signature T =   
   sig
      eqtype s
      structure V:
         sig
            datatype v = V
         end where type v = s
   end 

signature S =
   sig
      eqtype v
      structure T: sig
                      eqtype t
                   end where type t = v
   end

signature S =
   sig
      eqtype v
      structure S: sig
                      type 'a t
                   end where type 'a t = v
      structure T: sig
                      eqtype t
                   end where type t = int S.t
   end

signature S =
   sig
      eqtype v
      structure S: sig
                      type 'a t
                   end where type 'a t = v
      structure T: sig
                      eqtype t
                   end where type t = real S.t
   end

signature S =
   sig
      eqtype v
      structure S: sig
                      type 'a t
                      type u = real t
                   end where type 'a t = v
      structure T: sig
                      eqtype t
                   end where type t = S.u
   end

functor F (eqtype v
           structure S: sig
                           type 'a t
                           type u = real t
                        end where type 'a t = v) =
   struct
      fun f (x: 'a S.t) = x = x
      fun f (x: S.u) = x = x
   end

signature T =   
   sig
      eqtype s
      structure U:
         sig
            type 'a t
            type u = (int * real) t
         end where type 'a t = s
      structure V:
         sig
            datatype v = V
         end where type v = U.u
   end

structure T: T =
   struct
      datatype s = V
      structure U =
         struct
            type 'a t = s
            type u = (int * real) t
         end
      structure V =
         struct
            datatype v = datatype s
         end
   end