ランク1多相性

SML#では,MLの多相性がランク1多相性に拡張され,以下のように入れ子になった多相型を推論可能である.

# fun f x y = (x, ref y);
val f = fn : ['a .'a  -> ['b .'b  -> 'a * 'b ref]]
# f 1;
val it = fn : ['a .'a  -> int * 'a ref]

この例から理解されるように,このランク1多相性への拡張によって,Standard MLの値多相性の制約が大幅に緩和されている.

さらにSML#は,このランク1多相性によって,レコード多相性などの実現に必要な型主導コンパイルのオーバーヘッドを軽減することに成功している.

Last modified:2007/03/30 10:33:03
Keyword(s):
References:[ランク1多相性の理論] [SML#の特徴]