Каковы некоторые виды и / или условия в System-F, которые не могут быть выражены в Hindley Milner

StackOverflow https://stackoverflow.com/questions/9515956

Вопрос

Я помню, что читал где-то, что Hindley Milner был ограничением System-F.Если это так, может ли кто-нибудь, пожалуйста, предоставьте мне некоторые термины, которые можно напечатать в System-F, но не в HM.

Это было полезно?

Решение

Anything involving higher-ranked (i.e. "first-class") polymorphism. For example:

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

This function would have the type (forall A. A -> A) -> Int * String, which is not expressible in HM, where all polymorphic type schemes must be in "prenex" form (i.e. the quantifier may only occur on the outside, never nested).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top