
#9858: Typeable instances should be kind-aware -------------------------------------+------------------------------------- Reporter: dreixel | Owner: dreixel Type: bug | Status: new Priority: highest | Milestone: 7.10.1 Component: Compiler | Version: 7.9 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by int-e): Here is another testcase, geared towards motivating kind-level `Typeable` evidence (also known as `Kindable`): {{{ f :: Proxy (a :: k) -> Proxy (b :: k) -> Proxy (Proxy :: k -> *) f _ _ = Proxy g pa pb = typeRep (f pa pb) }}} If we allow kind-level `Typeable` constraints, i.e., `Typeable (k :: BOX)`, we would have {{{ g :: Typeable k => Proxy (a :: k) -> Proxy (b :: k) -> TypeRep }}} With just the type-level `Typeable`, we can choose between two constraints, {{{ g :: Typeable (Proxy (a :: k)) => Proxy (a :: k) -> Proxy (b :: k) -> TypeRep g :: Typeable (Proxy (b :: k)) => Proxy (a :: k) -> Proxy (b :: k) -> TypeRep }}} so which one should type inference prefer? Or would `g` require a type signature? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9858#comment:54 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler