Dear Steering Committee
Vlad proposes to amend
proposal #425 to permit more wildcard binder forms in type declarations:
This is a pretty small generalisation which would allow
data T (( (a :: k1) :: k2)) = ...
in which the binder has multiple kind signatures and redundant parens. The change is not driven by user need, but rather solely by uniformity: these same forms are permitted in function definitions:
f :: forall (a :: k). blah
f @(((a::k1)::k2))) = ...
is permitted.
It imposes a change on Template Haskell syntax too.
The implementation becomes a bit more complicated; more recursive data types, etc. Nothing hard, but more.
It's not a big deal either way. Very few people expressed a view on GitHub. My personal view is that the modest (albeit non-zero) gain does not justify the definite (albeit modest) pain. I would leave this until someone actually wants it.
Vlad argues for future-proofing, but my experience is that an eye to the future is sensible when you are making changes anyway; but making unforced changes solely for the future risks incurring pain now that, when the future comes, turns out to have been a poor investment. We may have correctly anticipated, or we may not.
So my recommendation is to park this until we get a real user demand.
It's a perfectly sensible proposal, but adopting it is a judgement call. I'll leave a week for committee responses, and then we can just vote.
Simon