
Quoting AntC
GHC 7.2.1> :k (->) :: ?? -> ? -> *
GHC 7.4.1> :k (->) :: * -> * -> *
At first sight (->) is becoming less polyKinded. Is the eventual aim to be:
GHC 7.6+> :k (->) :: AnyKind1 -> AnyKind2 -> *
I sort of doubt it. After all, the prototypical thing to do with a function is to apply it to something, and Haskell expressions are categorized by types of OpenKind -- the new kinds you create with the new extension don't classify inhabited types. It looks to me like "a -> b" and "(->) a b" are just different syntactic classes now, not interconvertible with each other: Prelude GHC.Exts> :set -XMagicHash Prelude GHC.Exts> :k Int# -> Int# Int# -> Int# :: * Prelude GHC.Exts> :k (->) Int# Int# <interactive>:1:6: Expecting a lifted type, but `Int#' is unlifted In a type in a GHCi command: (->) Int# Int# Perhaps this is a side-effect of the introduction of PolyKinds; from the release notes: "There is a new feature kind polymorphism (-XPolyKinds): Section 7.8.1, ?Kind polymorphism?. A side-effect of this is that, when the extension is not enabled, in certain circumstances kinds are now defaulted to * rather than being inferred." Though I must say it's not 100% clear to me exactly what's changed, or whether it was intentional. ~d