プログラミング言語SML#解説 4.0.0版
19

19.5 組式(exp1,,expn)とunit式()

組式(exp1, , expn)は, 数字をラベルとするレコード式 {1 = exp1, , n = expn} の糖衣構文である. 構文的にレコード式に変換された後に,レコードとして評価される. ただし,SML#の対話型コンパイラは,数字をラベルとするレコー ドの型と値を組として表記する.

unit型は空の組型である. SML#では,Standard MLの定義とは異なり, unit型と空のレコード型{}は 異なる型として扱われる. 空のレコード型{}は空の レコードカインドを持つ.

以下は,対話型環境での組式の評価の例である.

# val a = (1, 2);
val a = (1, 2) : int * int
# val b = {1 = 1, 2 = 2};
val b = (1, 2) : int * int
# type foo = {1: int, 2: int}
type foo = int * int
# fun f (x : foo) = (x, x);
# val f = fn : int * int -> (int * int) * (int * int)
val f = fn : int * int -> (int * int) * (int * int)
# f a;
val it = ((1, 2), (1, 2)) : (int * int) * (int * int)
# f b;
val it = ((1, 2), (1, 2)) : (int * int) * (int * int)
# ();
val it = () : unit
# {};
val it = {} : {}