Re: How to user-define a type equality constraint?
> 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.) ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Re: How to user-define a type equality constraint?
> On Apr 6, 2021, at 7:44 AM, Anthony Clayden > 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___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Re: How to user-define a type equality constraint?
That sounds like a bug/oversight! Is that not fixed in 9.2? On Mon, Apr 5, 2021 at 11:08 PM David Feuer wrote: > `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 wrote: > >> >> >> On Apr 1, 2021, at 8:12 PM, Anthony Clayden >> 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@haskell.org >> http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users >> > ___ > Glasgow-haskell-users mailing list > Glasgow-haskell-users@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users > ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users