structure C = struct val _ = TextIO.print "linking values";fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting value A."^id^" found "^s);val _ = check A.a "a";val _ = check A.b "b";val _ = check A.c "c";val _ = check A.d "d";val _ = check A.e "e";val _ = check A.f "f";val _ = check A.g "g";val _ = check A.h "h";val _ = check A.i "i";val _ = check A.j "j";val _ = check A.k "k";val _ = check A.l "l";(* unqualified *)val _ = TextIO.print "\nopen A";open A;fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting value "^id^" found "^s);val _ = check a "a";val _ = check b "b";val _ = check c "c";val _ = check d "d";val _ = check e "e";val _ = check f "f";val _ = check g "g";val _ = check h "h";val _ = check i "i";val _ = check j "j";val _ = check k "k";val _ = check l "l";(* local unqualified *)val _ = TextIO.print "\nlocal open A";local open A infun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting value "^id^" found "^s);val _ = check a "a";val _ = check b "b";val _ = check c "c";val _ = check d "d";val _ = check e "e";val _ = check f "f";val _ = check g "g";val _ = check h "h";val _ = check i "i";val _ = check j "j";val _ = check k "k";val _ = check l "l";end (* structures *)val _ = TextIO.print "linking structures";fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure A."^id^" found "^s);val _ = check A.a.v "a";val _ = check A.b.v "b";val _ = check A.c.v "c";val _ = check A.d.v "d";val _ = check A.e.v "e";val _ = check A.f.v "f";val _ = check A.g.v "g";val _ = check A.h.v "h";val _ = check A.i.v "i";val _ = check A.j.v "j";val _ = check A.k.v "k";val _ = check A.l.v "l";(* unqualified *)val _ = TextIO.print "\nopen A";fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure "^id^" found "^s);open A;val _ = check a.v "a";val _ = check b.v "b";val _ = check c.v "c";val _ = check d.v "d";val _ = check e.v "e";val _ = check f.v "f";val _ = check g.v "g";val _ = check h.v "h";val _ = check i.v "i";val _ = check j.v "j";val _ = check k.v "k";val _ = check l.v "l";(* local unqualified *)val _ = TextIO.print "\nlocal open A";fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure "^id^" found "^s);local open A inval _ = check a.v "a";val _ = check b.v "b";val _ = check c.v "c";val _ = check d.v "d";val _ = check e.v "e";val _ = check f.v "f";val _ = check g.v "g";val _ = check h.v "h";val _ = check i.v "i";val _ = check j.v "j";val _ = check k.v "k";val _ = check l.v "l";end(* functors *)val _ = TextIO.print "linking functors";fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting sfunctor A."^id^" found "^s);val _ = check let structure V = A.a() in V.v end "a";val _ = check let structure V = A.b() in V.v end "b";val _ = check let structure V = A.c() in V.v end "c";val _ = check let structure V = A.d() in V.v end "d";val _ = check let structure V = A.e() in V.v end "e";val _ = check let structure V = A.f() in V.v end "f";val _ = check let structure V = A.g() in V.v end "g";val _ = check let structure V = A.h() in V.v end "h";val _ = check let structure V = A.i() in V.v end "i";val _ = check let structure V = A.j() in V.v end "j";val _ = check let structure V = A.k() in V.v end "k";val _ = check let structure V = A.l() in V.v end "l";(* unqualified *)val _ = TextIO.print "\nopen A";fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure "^id^" found "^s);open A;val _ = check let structure V = a() in V.v end "a";val _ = check let structure V = b() in V.v end "b";val _ = check let structure V = c() in V.v end "c";val _ = check let structure V = d() in V.v end "d";val _ = check let structure V = e() in V.v end "e";val _ = check let structure V = f() in V.v end "f";val _ = check let structure V = g() in V.v end "g";val _ = check let structure V = h() in V.v end "h";val _ = check let structure V = i() in V.v end "i";val _ = check let structure V = j() in V.v end "j";val _ = check let structure V = k() in V.v end "k";val _ = check let structure V = l() in V.v end "l";(* local unqualified *)val _ = TextIO.print "\nlocal open A in";fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure "^id^" found "^s);local open A inval _ = check let structure V = a() in V.v end "a";val _ = check let structure V = b() in V.v end "b";val _ = check let structure V = c() in V.v end "c";val _ = check let structure V = d() in V.v end "d";val _ = check let structure V = e() in V.v end "e";val _ = check let structure V = f() in V.v end "f";val _ = check let structure V = g() in V.v end "g";val _ = check let structure V = h() in V.v end "h";val _ = check let structure V = i() in V.v end "i";val _ = check let structure V = j() in V.v end "j";val _ = check let structure V = k() in V.v end "k";val _ = check let structure V = l() in V.v end "l";end(* shadowing of units by structures *)structure X = struct val a = "X.a" structure a = struct val v = "X.a" end functor a ()= struct val v = "X.a" end val x = "X.x" structure x = struct val v = "X.x" end functor x ()= struct val v = "X.x" end endfun check d id s = TextIO.print ("\n"^d^(if id = s then " OK: "^s else "FAIL expecting "^id^" found "^s));(* open A B X *)val _ = TextIO.print "\n open A B X";open A B Xval _ = check "value" a "X.a";val _ = check "value" b "B.b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "X.a";val _ = check "structure" b.v "B.b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "X.a";val _ = check "functor" (let structure V = b() in V.v end) "B.b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";val _ = TextIO.print "\nlocal open A B X";local open A B X inval _ = check "value" a "X.a";val _ = check "value" b "B.b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "X.a";val _ = check "structure" b.v "B.b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "X.a";val _ = check "functor" (let structure V = b() in V.v end) "B.b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";end(* open B A X *)val _ = TextIO.print "\nopen B A X";open B A Xval _ = check "value" a "X.a";val _ = check "value" b "b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "X.a";val _ = check "structure" b.v "b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "X.a";val _ = check "functor" (let structure V = b() in V.v end) "b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";val _ = TextIO.print "\nlocal open B A X";local open B A X inval _ = check "value" a "X.a";val _ = check "value" b "b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "X.a";val _ = check "structure" b.v "b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "X.a";val _ = check "functor" (let structure V = b() in V.v end) "b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";end(* open B X A *)val _ = TextIO.print "\nopen B X A" ;open B X Aval _ = check "value" a "a";val _ = check "value" b "b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "a";val _ = check "structure" b.v "b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "a";val _ = check "functor" (let structure V = b() in V.v end) "b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";val _ = TextIO.print "\nlocal open B X A";local open B X A inval _ = check "value" a "a";val _ = check "value" b "b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "a";val _ = check "structure" b.v "b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "a";val _ = check "functor" (let structure V = b() in V.v end) "b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";end(* open A X B *)val _ = TextIO.print "\nopen A X B" ;open A X Bval _ = check "value" a "B.a";val _ = check "value" b "B.b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "B.a";val _ = check "structure" b.v "B.b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "B.a";val _ = check "functor" (let structure V = b() in V.v end) "B.b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";val _ = TextIO.print "\nlocal open A X B";local open A X B inval _ = check "value" a "B.a";val _ = check "value" b "B.b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "B.a";val _ = check "structure" b.v "B.b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "B.a";val _ = check "functor" (let structure V = b() in V.v end) "B.b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";end(* open X A B *)val _ = TextIO.print "\nopen X A B" ;open X A Bval _ = check "value" a "B.a";val _ = check "value" b "B.b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "B.a";val _ = check "structure" b.v "B.b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "B.a";val _ = check "functor" (let structure V = b() in V.v end) "B.b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";val _ = TextIO.print "\nlocal open X A B";local open X A B inval _ = check "value" a "B.a";val _ = check "value" b "B.b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "B.a";val _ = check "structure" b.v "B.b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "B.a";val _ = check "functor" (let structure V = b() in V.v end) "B.b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";end(* open X B A *)val _ = TextIO.print "\nopen X B A" ;open X B Aval _ = check "value" a "a";val _ = check "value" b "b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "a";val _ = check "structure" b.v "b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "a";val _ = check "functor" (let structure V = b() in V.v end) "b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";val _ = TextIO.print "\nlocal open X B A";local open X B A inval _ = check "value" a "a";val _ = check "value" b "b";val _ = check "value" x "X.x";val _ = check "value" y "B.y";val _ = check "structure" a.v "a";val _ = check "structure" b.v "b";val _ = check "structure" x.v "X.x";val _ = check "structure" y.v "B.y";val _ = check "functor" (let structure V = a() in V.v end) "a";val _ = check "functor" (let structure V = b() in V.v end) "b";val _ = check "functor" (let structure V = x() in V.v end) "X.x";val _ = check "functor" (let structure V = y() in V.v end) "B.y";endval _ = TextIO.print "\n";end;
structure C = struct
val _ = TextIO.print "linking values";
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting value A."^id^" found "^s);
val _ = check A.a "a";
val _ = check A.b "b";
val _ = check A.c "c";
val _ = check A.d "d";
val _ = check A.e "e";
val _ = check A.f "f";
val _ = check A.g "g";
val _ = check A.h "h";
val _ = check A.i "i";
val _ = check A.j "j";
val _ = check A.k "k";
val _ = check A.l "l";
(* unqualified *)
val _ = TextIO.print "\nopen A";
open A;
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting value "^id^" found "^s);
val _ = check a "a";
val _ = check b "b";
val _ = check c "c";
val _ = check d "d";
val _ = check e "e";
val _ = check f "f";
val _ = check g "g";
val _ = check h "h";
val _ = check i "i";
val _ = check j "j";
val _ = check k "k";
val _ = check l "l";
(* local unqualified *)
val _ = TextIO.print "\nlocal open A";
local open A in
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting value "^id^" found "^s);
val _ = check a "a";
val _ = check b "b";
val _ = check c "c";
val _ = check d "d";
val _ = check e "e";
val _ = check f "f";
val _ = check g "g";
val _ = check h "h";
val _ = check i "i";
val _ = check j "j";
val _ = check k "k";
val _ = check l "l";
end
(* structures *)
val _ = TextIO.print "linking structures";
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure A."^id^" found "^s);
val _ = check A.a.v "a";
val _ = check A.b.v "b";
val _ = check A.c.v "c";
val _ = check A.d.v "d";
val _ = check A.e.v "e";
val _ = check A.f.v "f";
val _ = check A.g.v "g";
val _ = check A.h.v "h";
val _ = check A.i.v "i";
val _ = check A.j.v "j";
val _ = check A.k.v "k";
val _ = check A.l.v "l";
(* unqualified *)
val _ = TextIO.print "\nopen A";
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure "^id^" found "^s);
open A;
val _ = check a.v "a";
val _ = check b.v "b";
val _ = check c.v "c";
val _ = check d.v "d";
val _ = check e.v "e";
val _ = check f.v "f";
val _ = check g.v "g";
val _ = check h.v "h";
val _ = check i.v "i";
val _ = check j.v "j";
val _ = check k.v "k";
val _ = check l.v "l";
(* local unqualified *)
val _ = TextIO.print "\nlocal open A";
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure "^id^" found "^s);
local open A in
val _ = check a.v "a";
val _ = check b.v "b";
val _ = check c.v "c";
val _ = check d.v "d";
val _ = check e.v "e";
val _ = check f.v "f";
val _ = check g.v "g";
val _ = check h.v "h";
val _ = check i.v "i";
val _ = check j.v "j";
val _ = check k.v "k";
val _ = check l.v "l";
end
(* functors *)
val _ = TextIO.print "linking functors";
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting sfunctor A."^id^" found "^s);
val _ = check let structure V = A.a() in V.v end "a";
val _ = check let structure V = A.b() in V.v end "b";
val _ = check let structure V = A.c() in V.v end "c";
val _ = check let structure V = A.d() in V.v end "d";
val _ = check let structure V = A.e() in V.v end "e";
val _ = check let structure V = A.f() in V.v end "f";
val _ = check let structure V = A.g() in V.v end "g";
val _ = check let structure V = A.h() in V.v end "h";
val _ = check let structure V = A.i() in V.v end "i";
val _ = check let structure V = A.j() in V.v end "j";
val _ = check let structure V = A.k() in V.v end "k";
val _ = check let structure V = A.l() in V.v end "l";
(* unqualified *)
val _ = TextIO.print "\nopen A";
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure "^id^" found "^s);
open A;
val _ = check let structure V = a() in V.v end "a";
val _ = check let structure V = b() in V.v end "b";
val _ = check let structure V = c() in V.v end "c";
val _ = check let structure V = d() in V.v end "d";
val _ = check let structure V = e() in V.v end "e";
val _ = check let structure V = f() in V.v end "f";
val _ = check let structure V = g() in V.v end "g";
val _ = check let structure V = h() in V.v end "h";
val _ = check let structure V = i() in V.v end "i";
val _ = check let structure V = j() in V.v end "j";
val _ = check let structure V = k() in V.v end "k";
val _ = check let structure V = l() in V.v end "l";
(* local unqualified *)
val _ = TextIO.print "\nlocal open A in";
fun check id s = TextIO.print (if id = s then "\nOK: "^s else "\nFAIL expecting structure "^id^" found "^s);
local open A in
val _ = check let structure V = a() in V.v end "a";
val _ = check let structure V = b() in V.v end "b";
val _ = check let structure V = c() in V.v end "c";
val _ = check let structure V = d() in V.v end "d";
val _ = check let structure V = e() in V.v end "e";
val _ = check let structure V = f() in V.v end "f";
val _ = check let structure V = g() in V.v end "g";
val _ = check let structure V = h() in V.v end "h";
val _ = check let structure V = i() in V.v end "i";
val _ = check let structure V = j() in V.v end "j";
val _ = check let structure V = k() in V.v end "k";
val _ = check let structure V = l() in V.v end "l";
end
(* shadowing of units by structures *)
structure X =
struct
val a = "X.a"
structure a = struct val v = "X.a" end
functor a ()= struct val v = "X.a" end
val x = "X.x"
structure x = struct val v = "X.x" end
functor x ()= struct val v = "X.x" end
end
fun check d id s =
TextIO.print ("\n"^d^(if id = s then " OK: "^s else "FAIL expecting "^id^" found "^s));
(* open A B X *)
val _ = TextIO.print "\n open A B X";
open A B X
val _ = check "value" a "X.a";
val _ = check "value" b "B.b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "X.a";
val _ = check "structure" b.v "B.b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "X.a";
val _ = check "functor" (let structure V = b() in V.v end) "B.b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
val _ = TextIO.print "\nlocal open A B X";
local open A B X in
val _ = check "value" a "X.a";
val _ = check "value" b "B.b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "X.a";
val _ = check "structure" b.v "B.b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "X.a";
val _ = check "functor" (let structure V = b() in V.v end) "B.b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
end
(* open B A X *)
val _ = TextIO.print "\nopen B A X";
open B A X
val _ = check "value" a "X.a";
val _ = check "value" b "b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "X.a";
val _ = check "structure" b.v "b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "X.a";
val _ = check "functor" (let structure V = b() in V.v end) "b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
val _ = TextIO.print "\nlocal open B A X";
local open B A X in
val _ = check "value" a "X.a";
val _ = check "value" b "b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "X.a";
val _ = check "structure" b.v "b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "X.a";
val _ = check "functor" (let structure V = b() in V.v end) "b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
end
(* open B X A *)
val _ = TextIO.print "\nopen B X A" ;
open B X A
val _ = check "value" a "a";
val _ = check "value" b "b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "a";
val _ = check "structure" b.v "b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "a";
val _ = check "functor" (let structure V = b() in V.v end) "b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
val _ = TextIO.print "\nlocal open B X A";
local open B X A in
val _ = check "value" a "a";
val _ = check "value" b "b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "a";
val _ = check "structure" b.v "b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "a";
val _ = check "functor" (let structure V = b() in V.v end) "b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
end
(* open A X B *)
val _ = TextIO.print "\nopen A X B" ;
open A X B
val _ = check "value" a "B.a";
val _ = check "value" b "B.b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "B.a";
val _ = check "structure" b.v "B.b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "B.a";
val _ = check "functor" (let structure V = b() in V.v end) "B.b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
val _ = TextIO.print "\nlocal open A X B";
local open A X B in
val _ = check "value" a "B.a";
val _ = check "value" b "B.b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "B.a";
val _ = check "structure" b.v "B.b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "B.a";
val _ = check "functor" (let structure V = b() in V.v end) "B.b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
end
(* open X A B *)
val _ = TextIO.print "\nopen X A B" ;
open X A B
val _ = check "value" a "B.a";
val _ = check "value" b "B.b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "B.a";
val _ = check "structure" b.v "B.b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "B.a";
val _ = check "functor" (let structure V = b() in V.v end) "B.b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
val _ = TextIO.print "\nlocal open X A B";
local open X A B in
val _ = check "value" a "B.a";
val _ = check "value" b "B.b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "B.a";
val _ = check "structure" b.v "B.b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "B.a";
val _ = check "functor" (let structure V = b() in V.v end) "B.b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
end
(* open X B A *)
val _ = TextIO.print "\nopen X B A" ;
open X B A
val _ = check "value" a "a";
val _ = check "value" b "b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "a";
val _ = check "structure" b.v "b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "a";
val _ = check "functor" (let structure V = b() in V.v end) "b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
val _ = TextIO.print "\nlocal open X B A";
local open X B A in
val _ = check "value" a "a";
val _ = check "value" b "b";
val _ = check "value" x "X.x";
val _ = check "value" y "B.y";
val _ = check "structure" a.v "a";
val _ = check "structure" b.v "b";
val _ = check "structure" x.v "X.x";
val _ = check "structure" y.v "B.y";
val _ = check "functor" (let structure V = a() in V.v end) "a";
val _ = check "functor" (let structure V = b() in V.v end) "b";
val _ = check "functor" (let structure V = x() in V.v end) "X.x";
val _ = check "functor" (let structure V = y() in V.v end) "B.y";
end
val _ = TextIO.print "\n";
end;