我记得在某处读过Hindley Milner是对system-f的限制。如果是这种情况,有人可以请我提供一些可以输入system-f但不能输入HM的条款。
答案 0 :(得分:10)
涉及更高级别(即“一流”)多态性的任何事物。例如:
lambda f : (forall A. A -> A). (f Int 1, f String "hello")
此函数的类型为(forall A. A -> A) -> Int * String
,这在HM中是不可表达的,其中所有多态类型方案必须采用“prenex”形式(即量词可能只出现在外部,从不嵌套)。 / p>