Quoting AntC <anthony_clay...@clear.net.nz>:
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
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users