プログラミング言語SML#解説 4.0.0版
19.4 レコード式 {lab = exp, , lab = exp}
レコード式はラベルlabと式expの組みか らなるレコードフィールドの集合である.
レコード式は以下のように評価される.
-
1.
レコード式のラベルがすべて異なるかチェックされ,同一のラベルが複 数現れれば,型エラーとなる.
-
2.
次に,各式expが,レコード式に出現する順に評価され,その 型tyと値が計算される.
-
3.
それらを使い,ラベル文字列でソートされたコード型
{lab : ty, , lab : ty}
とレコード値
{lab = , , lab = }
が求められ,レコード式の型と値となる.
従って,例えば
val x = {SML = (print "SML#";"SML#"), IS = (print " is ";" is "), SHARP = (print " sharp!
\
n";" sharp!\
n")}
を評価すると,"SML# is sharp!"とプリントされた後,
val x = {IS = " is ", SHARP = " sharp!
\
n", SML = "SML#"} : {IS: string, SHARP: string, SML: string}
のような型と値がxに束縛される.