プログラミング言語SML#解説 4.0.0版
24 モジュール言語の宣言とインタフェイス

24.2 ストラクチャ式とその評価 : strexp

ストラクチャ式の構文は以下の通りである.

strexp ::= struct strdec end
 | longStrid
 | strexp :sigexp
 | strexp :>sigexp
 | funid (strid :sigexp)
 | funid (strdec )
strdec ::= decl 核言語の宣言
 | structure strbind
 | local strdec in strdec end
 | strdec (;)? strdec

各ストラクチャ式の評価は以下のように行われる.

  • 基本ストラクチャ式 : struct strdec end.

    基本ストラクチャ式の評価は,宣言strdecを順次評価することよって行われる. その結果は,核言語の宣言に対しては,第 23章での定義にしたがい,変数や型構成子等 の名前の束縛が生成される. ストラクチャ宣言に対しては,上記の評価規則に従い,ストラクチャ名からなるロング名の束縛が 生成される.

  • ロングストラクチャ名 : longStrId.

    現在の環境において,longStrIdが束縛されている型環境と 実行時環境が返される. 現在の束縛の集合の中でlongStrIdプリフィックをもつロング名 の束縛から,longStrIdプリフィックを取り除いてえられる束縛の集 合と同一である.

  • シグネチャ制約付きストラクチャ式. (strexp :sigexp, strexp :>sigexp)

    シグネチャ制約付きストラクチャ式の評価は以下のように行われる.

    1. 1.

      ストラクチャ式を評価し,静的な型環境Γを求める.

    2. 2.

      次項(24.3)の定義に従いシグネチャ 式を評価し,ロング名の静的な値の制約の集合Σを求める.

    3. 3.

      Σに含まれる各ロング名の静的制約に対しして,Γにロング 名束縛が存在し,かつそのその静的値が制約を満たすことをチェックする.

    4. 4.

      ΓΣで指定されたロング名に制約しや型環境Γを生成する.

    5. 5.

      もしstrexp :>sigexpの形の参照不透明な シグネチャ制約であれば,さらに,シグネチャの型指定typdescに対 応するΓの型を,抽象型で置き換えて得られる型環境Γを生成する.

    6. 6.

      実行時環境の生成は,動的な値の生成はシグネチャ制約がないストラク チャ式と同一であるが,生成される動的束縛はΓに含まれる変数とコンス トラクタに限定される.