Reputation: 4412
In Haskell, kinds (types of types) allow for some useful things such as type constructors. My question is, would there be any benefit at all to also having kinds of kinds (types of types of types), or is there nothing they could do that couldn't easily be done with just kinds and types?
Upvotes: 4
Views: 177
Reputation: 20950
Ωmega has sorts all the way up. Basically, it is claimed that an infinite kind hierarchy together with appropriate GADTs is as powerful as dependent types.
Also, when trying out stuff using DataKinds
, PolyKinds
and the like, I sometimes feel constrained somewhat by how type constructors are not lifted to kind constructors, or that lifted kinds cannot be constrained (i.e., there are no kind classes). Ωmega seems to solve a lot of these restrictions -- unfortunately, as it is often the case, at the cost of becoming a more academic language. But I still find it easier to read compared to "real" dependently typed languages like Agda and Coq (although at least Agda does have an infinite hierarchy of sorts, too). Maybe that's because Ωmega just fits more to a Haskell mindset.
Upvotes: 6