Coercion logic

Richard Eisenberg eir at
Thu Oct 22 13:57:56 UTC 2015

The Coercible solver has evolved steadily. It should know that (Coercible a b <=> Coercible b a). Do you have a concrete example of where it's not doing this? Have you tested against HEAD?


On Oct 22, 2015, at 9:56 AM, David Feuer <david.feuer at> wrote:

> At present, any time we write a function with a `Coercible`
> constraint, we must take great care to choose `Coercible a b` or
> `Coercible b a` depending on which will ultimately lead to fewer silly
> conversions. This is particularly sad because the whole Coercible
> mechanism guarantees that these have exactly the same run-time
> representation, and because People Wiser Than Me believe Coercible
> should *always* remain symmetric. My (admittedly reptilian) brain
> wonders what it would take to tell the type checker that
> forall a b . Coercible a b ~ Coercible b a
> and have it over with.
> David Feuer
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at

More information about the ghc-devs mailing list