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