Backport from sid to buster
[hcoop/debian/mlton.git] / regression / functor.sml
CommitLineData
7f918cf1
CE
1signature A = sig type t val a : t end
2
3functor F(A : sig type t val pr : t -> string end) =
4 struct datatype k = A of A.t
5 fun pr (A t) = "A(" ^ A.pr t ^ ")"
6 end
7
8functor G(A : A) =
9 struct type t = A.t val b = A.a end
10
11functor H(A : sig type t type s val a : s
12 sharing type t = s
13 val pr : t -> string
14 end) =
15 struct
16 structure A1 : sig type t val pr : t -> string end = A
17 structure A2 = F(A1)
18 structure A3 = G(A)
19 val a = A2.A A.a
20 val _ = print ("value is " ^ A2.pr a ^ "\n")
21 end
22
23structure B1 =
24 struct
25 datatype t = J | K
26 type s = t
27 val a = K
28 fun pr K = "K"
29 | pr J = "J"
30 end
31
32structure B2 =
33 struct open B1
34 val a = J
35 end
36
37structure H1 = H(B1)
38structure H2 = H(B2)
39
40signature S = sig end
41
42functor F (): S = struct end
43
44signature S = sig val y: int end
45
46structure C = F ()