Quels sont certains types et / ou termes dans System-F qui ne peuvent pas être exprimés à Hindley Milner

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

Question

Je me souviens de lire quelque part que Hindley Milner était une restriction sur le système-f.Si tel est le cas, quelqu'un pourrait-il me fournir quelques termes qui peuvent être saisis dans le système-f mais pas dans HM.

Était-ce utile?

La solution

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top