
I think that the linear types part is a no-brainer.
The infix operator one is less clear. Adam feels that it'd be weird if “a
`op` b” yielded a different order than “op a b” as is being proposed. It's
definitely something you could go both ways about. I'm personally worried
about backward compatibility. Admittedly, this case where we quantify
implicitly over a variable in infix position is probably rare. But the
breakage would be quite subtle. I'm just not sure it's worth it. Do we care
enough about the order of implicit quantification that we want to change
this long established one? Richard is more optimistic
https://github.com/ghc-proposals/ghc-proposals/pull/640#issuecomment-1988401...
So, anyway, I'm open to be swayed by arguments, but my current thinking is:
make the change for a %m -> b, but not for a `op` b.
On Sat, 9 Mar 2024 at 22:46, Malte Ott
Dear all,
Vlad proposes to change the order of implicit quantification for type variables occurring as type operators or in multiplicity annotations:
https://github.com/ghc-proposals/ghc-proposals/pull/640
https://github.com/int-index/ghc-proposals/blob/int-index/tyop-quantificatio...
The proposal is thankfully very simple. Change the implicit quantification order for
"a `op` b" from "forall op a b" to "forall a op b".
and
"a %m -> b" from "forall a b m" to "forall a m b".
The proposed new behavior corresponds to the original paper and our user guide. This can be considered a bug fix and while we could also just change the specification I think having a simple and memorable rule for quantification order is valuable. Especially the currently implemented quantification order for multiplicities is weird.
The only painful point here is as usual a question of stability. What I don’t like about this change is, that if any code base uses it (which Vlad doubts and I tend to agree), the type error on GHC upgrade will be very incomprehensible for users who didn’t read and understand the changelog.
However multiplicities are new and explicitely unstable and I don’t really see a reason why anyone would use infix notation on a qantified function. So I agree that this very unlikely to happen in the wild. Also, users who rely on the type application order right now should have noticed that something is off.
Thus I recommend acceptance as is.
Please voice your opinions!
Malte _______________________________________________ ghc-steering-committee mailing list ghc-steering-committee@haskell.org https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
-- Arnaud Spiwack Director, Research at https://moduscreate.com and https://tweag.io.