[GHC] #11706: Increase precedence of lexps (if-then-else, case-of, do, lambda and let-in)
GHC
ghc-devs at haskell.org
Mon Mar 14 15:09:48 UTC 2016
#11706: Increase precedence of lexps (if-then-else, case-of, do, lambda and let-in)
-------------------------------------+-------------------------------------
Reporter: YoYoYonnY | Owner:
Type: feature request | Status: infoneeded
Priority: lowest | Milestone: ⊥
Component: Compiler | Version:
(Parser) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by YoYoYonnY:
@@ -16,1 +16,1 @@
- Basically, these are the rule Haskell already uses.
+ Basically, these are the rules Haskell already uses.
@@ -30,3 +30,3 @@
- [https://ghc.haskell.org/trac/ghc/ticket/10843#comment:12 in this
- comment]); combining {{{lexp}}} with {{{aexp}}} would make the Haskell
- syntax more consistent.
+ [https://ghc.haskell.org/trac/ghc/ticket/10843#comment:12 this comment]);
+ combining {{{lexp}}} with {{{aexp}}} would make the Haskell syntax more
+ consistent.
@@ -71,0 +71,1 @@
+
@@ -72,0 +73,1 @@
+
@@ -74,0 +76,1 @@
+
New description:
== Intro ==
For readability, the intro is now available [http://pastebin.com/8Fsh7pAE
here].
== How it works ==
* Implicit parenthesis will be put around ''all'' {{{lexps}}}, according
to the following rules:
1. Parenthesis will be opened at the start of the {{{lexp}}}.
2. Parenthesis will be closed at the end of the {{{lexp}}}. The end of
the {{{lexp}}} is determined by
1. The curly brackets around the {{{lexp}}} (If possible), or;
2. The indentation of the {{{lexp}}}
Basically, these are the rules Haskell already uses.
As for the Context-Free Syntax found at
https://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3|layout,
{{{lexp}}} would have to be moved up, dropped out of {{{infixexp}}}, and
added into {{{exp}}} (As well as a few other places in {{{aexp}}} and
{{{guard}}})
== Motivation ==
As for my personal motivation, I think that, with all the other syntactic
extensions already implemented, this feature is definitly missing.
As Richard Eisenberg already pointed out (See
[https://ghc.haskell.org/trac/ghc/ticket/10843#comment:12 this comment]);
combining {{{lexp}}} with {{{aexp}}} would make the Haskell syntax more
consistent.
bgamari listed above argument and quite a few other pros and cons
[https://ghc.haskell.org/trac/ghc/ticket/10843#comment:12 here].
A few arguments not listed there:
* If the Haskell community ever decides to implement this feature in the
main language, we will already be prepared.
* Similairly, if this feature ever gives problems or adds new interesting
possibilities to the language, we will be prepared.
* Yet another syntactical extension means yet another thing to look out
for;
* However, this also means people will become more aware of LANGUAGE
pragmas.
== Naming ==
Here follow a few suggestions for the name of this extension:
* InlineStatements
* InfixStatements
* ParenthesizedStatements
* IncreasedStatementPrecedence
* StatementsWithoutParenthesis
Here are some more, taken from [https://mail.haskell.org/pipermail
/haskell-cafe/2015-September/121217.html over here].
* ArgumentBlock
* ArgumentDo
== Examples ==
Examples can now be found [http://pastebin.com/6kLQvKs9 here].
== Resources ==
[1] Cheesy intro: http://pastebin.com/8Fsh7pAE
[2] Original examples: [http://pastebin.com/6kLQvKs9]
[3] Pros and Cons:
[https://ghc.haskell.org/trac/ghc/ticket/10843#comment:12]
[4] ArgumentBlock proposal: [https://mail.haskell.org/pipermail/haskell-
cafe/2015-September/121217.html]
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11706#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list