10

Hindley Milner が system-f の制限であるとどこかで読んだことを覚えています。その場合、system-f では入力できるが HM では入力できない用語を誰か教えてください。

4

1 に答える 1

11

高ランク (つまり、「ファーストクラス」) のポリモーフィズムに関係するもの。例えば:

lambda (f : forall A. A -> A). (f Int 1, f String "hello")

この関数は type を持ちますが(forall A. A -> A) -> Int * String、これは HM では表現できません。すべての多相型スキームは「プレネックス」形式でなければなりません (つまり、量指定子は外側でのみ発生し、ネストすることはできません)。

于 2012-03-01T12:41:53.100 に答える