Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Hindley Milner が system-f の制限であるとどこかで読んだことを覚えています。その場合、system-f では入力できるが HM では入力できない用語を誰か教えてください。
高ランク (つまり、「ファーストクラス」) のポリモーフィズムに関係するもの。例えば:
lambda (f : forall A. A -> A). (f Int 1, f String "hello")
この関数は type を持ちますが(forall A. A -> A) -> Int * String、これは HM では表現できません。すべての多相型スキームは「プレネックス」形式でなければなりません (つまり、量指定子は外側でのみ発生し、ネストすることはできません)。
(forall A. A -> A) -> Int * String