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

19.4 レコード式 {lab1 = exp1, , labn = expn}

レコード式はラベルlabiと式expiの組みか らなるレコードフィールドの集合である.

レコード式は以下のように評価される.

  1. 1.

    レコード式のラベルがすべて異なるかチェックされ,同一のラベルが複 数現れれば,型エラーとなる.

  2. 2.

    次に,各式expiが,レコード式に出現する順に評価され,その 型tyiと値viが計算される.

  3. 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に束縛される.