Polymorphic kinds are an extension to Haskell\'s type system, supported by UHC, allowing
data A x y = A (y x)
to be typed (kinded?) as a
One possible usage example can be using conal's TypeCompose for composing monad transformers in point-free style.
type MyT = StateT Foo :. MaybeT :. ContT Bar
(just as an example, I have no idea what one's going to do with those foos and bars..)
Instead of:
type MyT m = StateT Foo (MaybeT (ContT Bar m))
(this would have the same result apart from newtype
-wrappers)
Currently you'll need to duplicate the combinators code for different kinds, and this extension abolishes the repetition and allows using one piece of code to rule them all.