[ghc-steering-committee] #176: SCC Parsing, recommendation: accept

Simon Marlow marlowsd at gmail.com
Wed Feb 6 08:35:45 UTC 2019


Proposal #176 is a small change to the syntax to make the parsing of
certain pragmas (SCC, GENERATED, CORE) more principled and less likely to
lead to confusion for users. The proposal itself has a nice motivation
section that explains the problem (
https://github.com/int-index/ghc-proposals/blob/scc-parsing/proposals/0000-scc-parsing.rst)
but if that's too long then the summary is to adopt these principles:

   1. Annotations have the lowest precedence of all syntactic constructs.
   2. Adding an annotation does not affect the structure or meaning of an
   expression in ways other than adding an annotation to a subexpression.

and it turns out that doing that means that there are places where an SCC
annotation should be illegal. Some of those places were illegal already,
but not all - some places were SCC is currently legal have the effect of
violating principle (2) above.

The change itself is to move a few productions in the grammar, making SCC
annotations have the same precedence and associativity as the family of
constructs including lambda, let, and do. That is, they have the lowest
precedence and are right-associative, which is what we normally expect (the
informal description is usually "extends as far to the right as possible").

A lot of the discussion has been around how to precisely specify and
document the rule for users, and I'm satisfied that we can do this.

The only reason not to accept this would be that some existing code may
fail to compile with the new grammar. However, it's likely to be rare and
easy to fix, and within the bounds of the kinds of breaking change that we
normally make in a major GHC release. Furthermore fixing the code to work
with both old and new compilers doesn't require any conditional compilation.

So, I propose we accept this.

Cheers,
Simon


On Sun, 3 Feb 2019 at 22:48, Joachim Breitner <mail at joachim-breitner.de>
wrote:

> Dear Committee,
>
> this is your secretary speaking:
>
> Meaning-preserving parsing rules for SCC annotations
> has been proposed by Vladislav Zavialov:
> https://github.com/ghc-proposals/ghc-proposals/pull/176
>
> https://github.com/int-index/ghc-proposals/blob/scc-parsing/proposals/0000-scc-parsing.rst
>
> I propose Simon Marlow as the shepherd (he already glimpsed at it, so
> hopefully already has an opinion.)
>
> Please reach consensus as described in
> https://github.com/ghc-proposals/ghc-proposals#committee-process
> I suggest you make a recommendation, in a new e-mail thread with the
> proposal number in the subject, about the decision, maybe point out
> debatable points, and assume that anyone who stays quiet agrees with
> you.
>
> Thanks,
> Joachim
> --
> Joachim Breitner
>   mail at joachim-breitner.de
>   http://www.joachim-breitner.de/
>
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20190206/79e77b04/attachment.html>


More information about the ghc-steering-committee mailing list