Fwd: Availability of Coercible Instances at TH Runtime

Travis Whitaker pi.boy.travis at gmail.com
Fri May 4 07:44:04 UTC 2018

Given that Coercible instances are Deeply Magical, perhaps I'm being a bit
naive here, but I recently tried to write a TH function that can check if
one type is a newtype of another (or a newtype of a newtype of another,

coercibleToFrom :: Type -> Type -> Q Bool
coercibleToFrom tx ty = (&&) <$> isInstance ''Coercible [tx, ty]
                             <*> isInstance ''Coercible [ty, tx]

If this worked as I'd hoped, I'm almost certain checking reflexively is
redundant. However, I can't seem to get reifyInstances to ever return an
InstanceDec for a Coercible instance. Given that these instances are
generated on the fly by the typechecker, there's no way to make them
available at TH runtime, correct? And, given that, is there an easy way to
find out with TH whether not I'll be able to use coerce without taking all
the Decs apart to hunt for NewtypeD?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180504/1ecf9dcf/attachment.html>

More information about the ghc-devs mailing list