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

19.6 フィールドセレクタ式 #lab

以下の型をもつ多相型フィールドセレクタプリミティブ関数である.

[’a#{lab:’b}, ’b. ’a -> ’b]

この型は,’blabフィールドを含むレコード型 ’aから型’bへの多相関数を表す. この型から,このプリミティブが適用可能な式は,ラベルlabを含む種々 のレコード型を持つものに制約される. このプリミティブの適用結果の型と値は,適用されたlabを含むレコード のlabフィールドの型と値である.

以下は,レコードフィールドセレクタを含む式の評価例である.

# #y;
val it = fn : [’a#{y: ’b}, ’b. ’a -> ’b]
# #y {x = 1, y = 2};
val it = 2 : int
# #2;
val it = fn : [’a#{2: ’b}, ’b. ’a -> ’b]
# #2 (1, 2, 3);
val it = 2 : int

組型は,レコード型の特殊な場合であるため,組みに対してもレコード フィールドセレクタが使用できる.