Conversation
|
The reason we need the reifyTypeable' :: a -> (forall (s :: Nat). (Typeable s, Reifies (Stable s a) a) => Proxy s -> r) -> rThat feels a bit weird. With a bit of annoyance in the compatibility department, I'm pretty sure we could clean it up: reifyTypeable' :: a -> (forall (k :: Type) (s :: k). (Typeable s, Reifies (Stable s a) a) => Proxy s -> r) -> r |
4705a92 to
468f4e9
Compare
In GHC 8.0 and later, `KnownNat` implies `Typeable`. This lets us implement `reifyTypeable` much more easily, and probably also considerably more efficiently.
|
This does have the downside of forcing a kind change on We could use a small type level shim to convert the |
|
Sorry for taking so long to look at this. (I think this PR predates me becoming a co-maintainer of the library.) The new implementation of |
|
I'll have to page this back in.... |
In GHC 8.0 and later,
KnownNatimpliesTypeableso we can implementreifyTypeablemuch more easily, and probably also considerably more efficiently.