Make exports from Data.Typeable and Type.Reflection consistent
authorRyan Scott <ryan.gl.scott@gmail.com>
Mon, 13 Mar 2017 19:19:03 +0000 (15:19 -0400)
committerBen Gamari <ben@smart-cactus.org>
Mon, 13 Mar 2017 19:19:26 +0000 (15:19 -0400)
commit11ea370107c5b354918ff885c582299fadfe5ea9
treeaf2c151413ad17d77ad81b67acd5ad5583ce3e63
parentdd3b06aa2d44fa160e36097ce90c4574160bd4eb
Make exports from Data.Typeable and Type.Reflection consistent

This fixes some idiosyncracies I noticed between `Data.Typeable` and
`Type.Reflection`:

* `showsTypeRep` (from `Data.Typeable`) had the type `SomeTypeRep ->
  ShowS`, despite the fact that `SomeTypeRep` isn't exported from
  `Data.Typeable`. I changed it to be `Data.Typeable.TypeRep -> ShowS`.

* Similarly, `typeRepFingerprint` (reexported from `Data.Typeable`) had
  the type `SomeTypeRep -> Fingerprint`. I changed it to `Data.Typeable.TypeRep
  -> Fingerprint`.

* `Type.Reflection` wasn't exporting `typeRepX` or `typeRepXFingerprint`,
  despite the fact that their counterparts were exported from `Data.Typeable`.
  `Type.Reflection` now exports them as well.

* `withTypeable :: TypeRep (a :: k) -> (Typeable a => r) -> r` was being
   reexported from `Data.Typeable`. This is in spite of the fact that you
   can't actually use the type-indexed `TypeRep a` by importing
   `Data.Typeable` alone. I decided to remove this export from `Data.Typeable`.

Reviewers: bgamari, austin, hvr

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3309
libraries/base/Data/Typeable.hs
libraries/base/Type/Reflection.hs