プログラミング言語SML#解説 4.0.0版
14 SML#の拡張機能:SML#分割コンパイルシステム

14.7 レプリケーション宣言

インタフェイスファイルは,資源の実体の表現です. 従って,例えば

structure Foo =
struct
  structure A = Bar
  structure B = Bar
...
end

のような構造のモジュールに対して,シグネチャと違い,

structure Foo =
struct
  structure A : SigBar
  structure B : SigBar
...
end

のような書き方はできません. これまでのメカニズムのみでは,Barの内容をくり返し書く必要があり ます. この冗長さを抑止するために,インタフェイスファイルは,以下の資源 のレプリケーション(複製)宣言を許しています.

  • structure id = path

  • exception id = path

  • datatype id = datatype path

  • val id = path

これによって,すでに定義済みの資源に対しては,インタフェイスファ イルであっても,通常のソースファイルと同様にその複製の宣言を書くことがで きます. 例えば,Barストラクチャを提供するインタフェイスファイルがbar.smiであるとすると,以下のように書くことができます.

_require "bar.smi"
structure Foo =
struct
  structure A = Bar
  structure B = Bar
...
end