
#10343: Make Typeable track kind information better -------------------------------------+------------------------------------- Reporter: oerjan | Owner: goldfire Type: feature request | Status: new Priority: normal | Milestone: 8.0.1 Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: typeOf :: | Typeable (a::k) => Proxy a -> | TypeRep Blocked By: | Blocking: Related Tickets: #9858 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): Perhaps something like this? {{{#!hs data Fingerprint = Fingerprint {- Int -} data TyCon a = TyCon Fingerprint String data TypeRep (a :: k) where TypeCon :: TyCon a -> TypeRep k -> TypeRep (a :: k) TypeApp :: forall k a (b :: k). TypeRep (a -> b) -> TypeRep a -> TypeRep (b :: k) class Typeable k => Typeable (a :: k) where typeRep :: Proxy a -> TypeRep a typeRepKind :: TypeRep (a :: k) -> TypeRep k typeRepKind (TypeCon _ k) = k typeRepName :: TypeRep a -> String typeRepName (TypeCon (TyCon _ n) _) = n }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10343#comment:27 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler