<div dir="ltr"><div dir="ltr">On Wed, 9 Dec 2020 at 13:40, Joachim Breitner <<a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
Am Mittwoch, den 09.12.2020, 12:08 +0000 schrieb Simon Peyton Jones via<br>
ghc-steering-committee:<br>
> I agree with this.  Not having scoped type variables (in any form) is<br>
> a huge blemish.  The existing design may not be perfect, but it’s<br>
> worked rather well for a long time.<br>
<br>
The same is true for ViewPatterns, which are even more harmless (clear<br>
syntactic opt-in; no spooky effect at a distance when type signature<br>
and definition are far apart).<br>
<br>
There we argued that the fact that we don’t think it’s perfect, and<br>
some wiki page with an alternative design exists, was enough to plea<br>
against it.<br>
<br>
Here, the situation seems equivalent (we know of better designs, namely<br>
binding type variables on the LHS of the equation).<br>
<br>
Can we justify why we go one way here and another way there? Is it<br>
because ViewPatterns are just mere convenience, and ScopedTypeVariables<br>
are absolutely needed for some things?<br></blockquote><div><br></div><div>Yes to your last point here. But other points to note about ViewPatterns:<br></div><div><br></div><div>Technically ViewPatterns are not just a convenience, at least when combined with PatternSynonyms. The only way that you can write a PatternSynonym that does some arbitrary computation in the pattern is to use ViewPatterns - *this* is the killer feature of PatternSynonyms, because it provides full power to abstract over constructor names. You can define a constructor that expands to some arbitrary computation in the pattern. Here's an example: <a href="https://stackoverflow.com/questions/43838550/using-viewpatterns-and-patternsynonyms-to-simply-pattern-matches">https://stackoverflow.com/questions/43838550/using-viewpatterns-and-patternsynonyms-to-simply-pattern-matches</a></div><div><br></div><div>(The alternative ViewPatterns design would also provide this functionality, incidentally.)<br></div><div><br></div><div>But anyway, this is not an argument to accept ViewPatterns, because it doesn't look like PatternSynonyms will be in GHC2021 (shame!).<br></div><div><br></div><div>Outside of the PatternSynonyms use-case, I don't think ViewPatterns are all that widely used. We have figures of 7% proliferation and 20% popularity, but that doesn't tell us (1) how much the extension is really used, and (2) how often it is used because it's the only way to do certain things with PatternSynonyms. Some more data would be nice. I base my intuition here on the fact that I hardly ever encounter any ViewPatterns, but I could well be living in a bubble of some kind.<br></div><div><br></div><div>If the extension really isn't very widely-used, and we think the design might change, we can limit the churn in the future by avoiding having the extension on by default.</div></div><div class="gmail_quote"><br><div>Cheers</div><div>Simon</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Cheers,<br>
Joachim<br>
<br>
<br>
<br>
-- <br>
Joachim Breitner<br>
  <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a><br>
  <a href="http://www.joachim-breitner.de/" rel="noreferrer" target="_blank">http://www.joachim-breitner.de/</a><br>
<br>
<br>
_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</blockquote></div></div>