3 ms·
The Frege page says that Frege features Higher rank types but says nothing about higher-kinded types (HKTs). The two are different. The rank of a type des
by mafribe 11y ago
The Frege page says that Frege features
Higher rank types
but says nothing about higher-kinded types (HKTs). The two are different.
The rank of a type describes the depth at which universal quantifiers appear contravariantly. This is quite different from higher-kinded types, which allow type-level computation. For good monad support one uses HKTs. I wonder if Frege has HKTs and the description on the original page made a mistake?
- voxfrege 11y agoIt has both. Somewhere it is said that it has all language features of Haskell 2010. This implies higher kinded types. But in addition to Haskell 2010, Frege has also higher rank types.
- mafribe 11y agoThanks. Type inference for types of rank > 2 is undecidable, how does this go together with the claim that Frege has type inference? I'm not a Haskell expert, but I think the {-# LANGUAGE RankNTypes #-} extension enables HRTs in Haskell too.
- voxfrege 11y agoType inference for higher ranks is in fact undecidable, but not type checking. Hence, exactly like in Haskell with RankNTypes, you need to annotate your higher rank functions. Actually, the Frege compiler employs an algorithm described in Simon Peyton-Jones paper "Practical Type Inference for Higher Ranked Types". Ordinary HM types are inferred, and higher ranked types checked.
- mafribe 11y agoThanks. It's great to have basically Haskell on the JVM. I'll give it a try.