[GHC] #14582: Review and improve the Typeable API
GHC
ghc-devs at haskell.org
Thu Dec 14 13:54:19 UTC 2017
#14582: Review and improve the Typeable API
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
Keywords: Typeable | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
This ticket is to track improvements in the `Typeable` API
There are a number of points I'm uncomfortable about
* `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 pattern synonyms and suchlike that appear
to be for the benefit of clients, not just internal use.
* The `Typeable` API has `type TypeRep = I.SomeTypeRep` which is
different to the type-indexed `data TypeRep a` defined in
`Data.Typeable.Internals`. 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?
* I cordially dislike this stuff about `IsApplication` in
`Internals`
([https://git.haskell.org/ghc.git/commitdiff/1acb922bb1186662919c1dbc0af596584e5db3ac
this commit]). It's hard for me to understand what's going on. I
believe that the two pattern synonyms `App` and `Con` are supposed
to be exhaustive -- if so, let's just write a COMPLETE pragma.
* The code has many uses of `unsafeCoerce`, whereas the drive of
our "Typed reflection in Haskell" paper was to reduced the size
of the trusted code base. I'd like to see a comment on each of
those uses of `unsafeCoerce` to explain.
* Do we really need `Con'` as well as `Con`?
* The API could do with some careful documentation, in Haddock,
but perhaps also an accomanying wiki page. It's tricky stuff.
Here's the [wiki:Typeable Typeable wiki page]
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14582>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list