Quali sono alcuni tipi e / o termini in System-F che non può essere espresso in Hindley Milner
-
14-11-2019 - |
Domanda
Ricordo di aver letto da qualche parte che Hindley Milner era una restrizione su System-F.Se questo è il caso, qualcuno potrebbe per favore fornirmi alcuni termini che possono essere digitati in System-F ma non in HM.
Soluzione
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).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow