28 lines · 1.2 KB · Standard ML
RawDownload
val (v1,v2,v3,v4,v5) = (1,2,3,4,5)signature S = sig end;functor F(X:S)(Y:S)(Z:S)=struct val _ = printVal v5 end;structure R = (let val _ = printVal v4 in F end)(val x = printVal v3)(val x = printVal v2)(val x = printVal v1);  functor F(X:sig val x:int end)(Y: sig val y:int end)(Z: sig val z:int end)=struct val _ = printVal v5 end;structure R =  (let val _ = printVal v4 in F end)(val x = printVal v3)(val y = printVal v2)(val z = printVal v1); signature S = sig val x: int end;functor F(X:S)(Y:S)(Z:S)=struct val _ = printVal v5 end;structure R = (let val _ = printVal v4 in F end) (val x = printVal v3 val y = ())(val x = printVal v2 val y = ())(val x = printVal v1 val y = ()); signature S = sig val x: int end;functor F(X:S)(Y:S)(Z:S)=struct val _ = printVal v4 end;functor R = (let val _ = printVal v4 in F end) (val x = printVal v1 val y = ()); fun f x y z = printVal v4;f (printVal v1) (printVal v2) (printVal v3); val g = fn x => (fn y => (fn z => printVal v4));g (printVal v1) (printVal v2) (printVal v3); val h = fn x => let in fn y => let in fn z => printVal v4 end end;h (printVal v1) (printVal v2) (printVal v3); val h = fn x => let val x = 1 in fn y => let val x = 2 in fn z => printVal v4 end end;h (printVal v1) (printVal v2) (printVal v3);