プログラミング言語SML#解説 3.7.1版
23.4 type宣言 : typDecl
type宣言は,以下の文法で型に名をつける宣言である.
typeDecl | := | type typbind |
tybind | ::= | tyvarSeq tycon = ty and tybind |
23.4.1 type仕様 : typSpec
type宣言のインタフェイスは,type仕様と抽象型仕様がある. type仕様の構文はtype宣言と同一である. 抽象型仕様の構文は以下の通りである.
opequeTypeSpec | := | type tyvarSeq tycon ( = runtimeTypeSpec ) |
runtimeTypeSpec | := | tycon {} * -> |
型がレコード型,組型,関数型で実装されているならば, runtimeTypeSpecにはそれぞれ{},*, ->を指定する. そうでなければ,型を実装する型コンストラクタを runtimeTypeSpecに指定する. 実行時表現さえ合っているならば, runtimeTypeSpecは実装型と厳密に一致しなくてもよい. 実行時表現について詳しくは29章を 参照せよ.
23.4.2 型宣言とインタフェイスの例
以下は,型宣言を含むソースファイルとインターフェイスの例である.
Data.sml file:
type ’a set = ’a list
type ’a queue = ’a list * ’a list type index = int type id = int Data.smi file: type ’a set (= list) type ’a queue (= *) type index = int type id (= int) |