プログラミング言語SML#解説 4.0.0版
19.5 組式(exp,,exp)とunit式()
組式(exp, , exp)は, 数字をラベルとするレコード式 {1 = exp, , = exp} の糖衣構文である. 構文的にレコード式に変換された後に,レコードとして評価される. ただし,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 = {} : {}