プログラミング言語SML#解説 4.1.0版
19.7 リスト式 [exp, , exp]
リスト式は,[と]の中にコンマで区切った式の値のリス トであり,リスト型のその値を生成する. リスト型は,予め以下のように定義されたデータ型である.
infixr 5 ::
datatype ’a list = op :: of ’a * ’a list | nil
リスト式は以下のように構文変換が行われ,その結果のネストしたコンストラクタ適用式が評価される.
|
この変換から,リスト式の要素の式はすべて同じ型を持たなければなら ず,その型を要素の型とするリスト型 listが,この式の型となり, ::(, ::(, ::(,nil)))の形の値がこの式の値 となることがわかる.
以下にリスト式の例を示す.
# [1, 2, 3, 4];
val it = [1, 2, 3, 4] : int list
# [fn x => x, fn x => x + 1];
val it = [fn, fn] : (int -> int) list
# [];
val it = [] : [’a. ’a list]
最後の例のように,[]は多相型を持つ空のリストである.