24.3 シグネチャ式 : sigexp
シグネチャ式の文法は以下の通りである.
sigexp | ::= | sig spec end |
sigid | ||
sigexp where type tyvarSeq longTycon = ty |
-
•
基本シグネチャ式 (sig spec end)
宣言仕様specの列である.
-
•
シグネチャ名 (sigid)
トップレベルのシグネチャ宣言でシグネチャ式に束縛された名前である.
-
•
型定義付きのシグネチャ名
シグネチャ名sigidに束縛されたシグネチャ式の中の tyvarSeq longTyconをtyで置き換えて得られる シグネチャ式を表す.
宣言仕様specの構文は以下の通りである.
spec | ::= | val valdesc |
type typdesc | ||
eqtype typdesc | ||
datatype datdesc | ||
datatype tycon = datatype longTycon | ||
exception exdesc | ||
structure strdesc | ||
include sigexp | ||
spec sharing type longTycon = = longTycon | ||
spec ; spec | ||
valdesc | ::= | vid : ty and valdesc |
typdesc | ::= | tyvarSeq tycon and typdesc |
datdesc | ::= | tyvarSeq tycon = condesc and datdesc |
condesc | ::= | vid of ty | condesc |
exdesc | ::= | vid of ty and exdesc |
strdesc | ::= | strid : sigexp and strdesc |
それぞれの要素の意味は以下の通りである.
-
•
val valdesc. val宣言で束縛される変数の型を指定する.
-
•
type typdesc. 指定されたロング名をもつtype宣言またはdatatype宣言が存在すること の指定である.
参照透明なシグネチャ指定の場合,この仕様は,ストラクチャの type宣言で定義される型関数をそのまま有効にする. datatype宣言の場合,ストラクチャの型構成子が有効になるが,データ構成子 は束縛されない.
参照不透明なシグネチャ指定の場合,この仕様は,宣言で定義される の型関数の内部構造およびdatatypeで生成された型構成子の同一性を隠蔽し, 抽象型構成子として使用可能とする.
-
•
eqtype typdesc
type typdescと同一であるが, ストラクチャで宣言される型が同値演算が可能な型に限定される.
-
•
datatype datdesc
同一のdatatype宣言が存在することの指定である. datatype宣言が有効になる.
-
•
datatype tycon = datatype longTycon
型構成子名tyconに束縛された型構成子が, longTyconに束縛されたものと同一であることの指定.
-
•
exception exdesc
exception宣言が存在することの指定である. exception宣言が有効になる.
-
•
structure strdesc
ストラクチャが指定されたシグネチャ式を持つストラクチャを含むことの指定である.
-
•
include
指定されたシグネチャ名に束縛されたシグネチャ式の内容(specの列) がこの位置に展開される.
-
•
sharing type
指定されたロング型構成子名がすべて同じ型構成子に束縛されていることの指定 である.