signature S = sig datatype t = Hoge | Fuga end structur A = struct structure B = struct structure C = struct type t = int * real * string * bool ref end end end functor F(X:sig type t; val compare: t * t -> order): S = struct datatype t = Hoge | Fuga end structure Main = struct local structure M = F(Int) open M in fun id x = x val bool = if true then false orelse false else true andalso true val int = ~1 + 1 val real = 0.7 - 0.32E5 * E3~7 val string = "a\a\b\t\n\v\f\r\^M\097\u00a1\"\\\ \" (* (* comments *) *) val ## = 1 val |=| = 2 infix ## infixr ## val op## = case Hoge of Hoge => Fuga | Fuga => Hoge type s = {1: t, label: unit} type u = A.B.C.t val s = {1 = Hoge, label = ()} fun id x = x val rec id = fn x => x exception X and Y raise X handle X => (nil, [1], [1, 2]) end end