How to user-define a type equality constraint?

David Feuer david.feuer at
Tue Apr 6 03:07:53 UTC 2021

`Char` is defined in user code. What you really can't define are Char# and
TYPE, and you can't modify `RuntimeRep`. Speaking of `Char#`, I see that in
9.0, at least, it has kind TYPE 'WordRep. Why is that not Word32Rep?

On Mon, Apr 5, 2021, 10:50 PM Richard Eisenberg <rae at> wrote:

> On Apr 1, 2021, at 8:12 PM, Anthony Clayden <anthony_clayden at>
> wrote:
> Can I user-define a conventional type-class that behaves more like `(~)`?
> I don't think so.
> But why does this matter? I can't define `Char` in user code, but it's
> exported from the Prelude and requires no extensions. While I can define Eq
> in user code, I can't make `deriving` work with my version. I can't define
> `error` in user code. There are many others, I'm sure.
> So: why does this matter?
> Thanks,
> Richard
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Glasgow-haskell-users mailing list