プログラミング言語SML#解説 4.0.0版
19.4 レコード式 {⟨lab1⟩ = ⟨exp1⟩, …, ⟨labn⟩ = ⟨expn⟩}
レコード式はラベル⟨labi⟩と式⟨expi⟩の組みか らなるレコードフィールドの集合である.
レコード式は以下のように評価される.
-
1.
レコード式のラベルがすべて異なるかチェックされ,同一のラベルが複 数現れれば,型エラーとなる.
-
2.
次に,各式⟨expi⟩が,レコード式に出現する順に評価され,その 型⟨tyi⟩と値viが計算される.
-
3.
それらを使い,ラベル文字列でソートされたコード型
{⟨lab1′⟩ : ⟨ty1′⟩, …, ⟨labn′⟩ : ⟨tyn′⟩}
とレコード値
{⟨lab1′⟩ = v1′, …, ⟨labn′⟩ = vn′}
が求められ,レコード式の型と値となる.
従って,例えば
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に束縛される.