
`Data.Typable` is presumably meant to be the public API, and is fairly small. But `Data.Typeable.Internal` has a much larger API, which includes
#14582: Review and improve the Typeable API -------------------------------------+------------------------------------- Reporter: simonpj | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.1 Resolution: | Keywords: Typeable Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): pattern synonyms and suchlike that appear to be for the benefit of clients, not just internal use. As noted in its documentation, `Data.Typeable` is the home of the old, non-type-indexed `Typeable` mechanism whereas the new mechanism lives in `Type.Reflection`. The goal of this design was to preserve compatibility with existing programs by minimizing the changes in `Data.Typeable`. All of the new bits, including the pattern synonyms (which are really only useful with the type-indexed variant), are exposed in `Type.Reflection`.
This is exteremly confusing. Perhaps this is intended to be temporary, while we are moving over to the new type-indexed representation. But then what's the transition plan?
My original intent was for this to be permanent. While working on the new `Typeable` implementation I viewed `Data.Typeable` and `Type.Reflection` as two mechanisms that, which while they happened to share implementation, serve rather different purposes. However, the name `TypeRep` seems to be quite applicable in both cases. I can see how the naming may be confusing and ideally the quantified variant would be called `SomeTypeRep` but I'm skeptical that deprecating the `Data.Typeable.TypeRep` synonym is worth the breakage that it would cause. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14582#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler