How to user-define a type equality constraint?
Richard Eisenberg
rae at richarde.dev
Tue Apr 6 13:24:01 UTC 2021
> On Apr 6, 2021, at 7:44 AM, Anthony Clayden <anthony_clayden at clear.net.nz> wrote:
>
> > But why does this matter?
>
> Because I want the semantics of that equality constraint, without switching on any of these, which I don't otherwise use:
>
> GADTs
> TypeFamilies
> TypeOperators
>
> And if that means I can't use infix `~` in my constraints, I'll put up with that. (I'd user-define a conventional class, say `TypeCast`. Could be that has to be defined in terms of `~`, in which case I'd put that in a shim module as the only place with those extensions.)
>
A shim module would work for you here, indeed.
Individuals' opinions of extensions will differ, but TypeOperators is much less powerful than either of the others: it affects only parsing, and in a fully backward-compatible way.
Richard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/glasgow-haskell-users/attachments/20210406/fa8856fa/attachment.html>
More information about the Glasgow-haskell-users
mailing list