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

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

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

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

この型は,’bの⟨lab⟩フィールドを含むレコード型 ’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

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