
#10114: Kind mismatches with AnyK in rank-2 types -------------------------------------+------------------------------------- Reporter: cam | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.4 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by simonpj): NB the [https://downloads.haskell.org/~ghc/latest/docs/html/users_guide /kind-polymorphism.html rule for kind generalisation in 7.8.2 of the user manual]. {{{ f1 :: (forall a. Proxy a) -> Int -- Means f :: forall k. (forall (a:k). Proxy k a) -> Int f2 :: (forall (a::k). Proxy a) -> Int -- Means f :: (forall k. forall (a:k). Proxy k a) -> Int }}} (Richard's new branch, which collapses types and kinds, allows explicit kind quantification, so we can then control this more explicitly.) So maybe the same should be true for `T`: {{{ type T = forall f a. f a -- Means type T k = forall (f::k->*) (a::k). f a type T = forall f (a::k). f a -- Means type T = forall k (f::k->*) (a::k). f a }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10114#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler