
#10343: Make Typeable track kind information better -------------------------------------+------------------------------------- Reporter: oerjan | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: typeOf :: Related Tickets: #9858 | Typeable (a::k) => Proxy a -> | TypeRep | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by oerjan): I am not sure I can be called a client, I don't have actual useful code hinging on this. As a hobbyist, I spend more time ''thinking'' about Haskell than actually programming in it. I think that simply adding `kindRep :: TypeRep -> TypeRep` as a field of `TypeRep` would make the necessary information available at runtime. This ought to fit just as well into the current design as into the proposed `TTypeRep` on the wiki. I also have a hunch this might make the already existing list of `KindRep`s redundant. The question of how to make the `Typeable` solver make use of that information for building kind evidence seems to me like the more complicated part of this. Just to prove it is possible in principle, I'll restate my mock representation from back in [comment:48:ticket:9858]: {{{ class (KindableParts a, a ~ Proxy) => Kindable (a :: k -> *) where type KindableParts a :: Constraint kindRep :: KindRep a class Kindable (Proxy :: k -> *) => Typeable (a :: k) where typeRep :: proxy a -> TypeRep }}} This worked well enough to be a basis for [http://oerjan.nvg.org/haskell/TypeableDesign/ running my kitchen sink test case] in 7.8.3. However, it doesn't support Richard's ideas for avoiding exposing "`Kindable`" constraints when doing type inference. And of course the representation's made for reusing already existing type features rather than for efficiency. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10343#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler