プログラミング言語SML#解説 4.0.0版
19

19.12 型制約式 exp : ty

expの型をtyに制約する式である. expは型tyより一般的な型である必要がある. 以下に例を示す.

# [] : int list;
val it = [] : int list
# 1 : intInf;
val it = 1 : intInf
# fn x => x : int;
val it = fn : int -> int
# fn x => x : ’a -> ’a;
val it = fn : [’a. (’a -> ’a) -> ’a -> ’a]

最後の例のようにtyは型変数を含んでも良い. 含まれる型変数は,インスタンス化されない. また型変数のスコープは,特に型変数の宣言がなければ,その型変数が 現れるもっとも内側のval宣言全体である. 型変数の宣言およびそのスコープ規則については,第23.1 節で定義する.