
#7873: A poly-kinded newtype existential crisis --------------------------------------+------------------------------------- Reporter: ekmett | Owner: Type: bug | Status: new Priority: normal | Component: Compiler Version: 7.6.3 | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: GHC rejects valid program | Blockedby: Blocking: | Related: --------------------------------------+------------------------------------- Comment(by goldfire): I agree with kosmikus. With {{{PolyKinds}}}, {{{Magic}}} is indeed existential. Here is the version with explicit kinds (which isn't valid Haskell): {{{ newtype Magic = forall (k :: BOX). Magic (forall (p :: k -> *) (a :: k). p a -> Int) }}} However, there is a happy workaround. GHC scopes the kind variable {{{k}}} appropriately when the annotation is explicit. The following compiles: {{{ newtype Magic = Magic (forall (p :: k -> *) (a :: k). p a -> Int) }}} This is slightly strange behavior, but I don't see an easy fix short of allowing explicit kind quantification. (Of course, I would love to have explicit kind quantification, but that's a story for another time.) -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7873#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler