
Dear committee, the BlockArguments (former ArgumentDo) proposal was brought before us: https://github.com/ghc-proposals/ghc-proposals/pull/90 I’ll shepherd this myself. The idea is to not require parenthesis around block syntax elements such as lambda expressions, let bindings, if-then-else, case-of and (in particular) do expressions. The change to the grammar to enable that is actually a simplificiation (it removes one non-terminal, lexp). Variants proposed are: * do this only for `do` in argument position, or * do it for all blocks, but only in function argument positions. I am fond of this proposal, because it allows code with less parenthesis to be written. If Haskell was written from ground up, I believe there would be little opposition to this setup, and maybe we would not have had to hack higher-rank support into ($), as the idiom `runST $ do …` would just be `runST do …`. Another argument in favor of it is the mentioned simplificiation of the grammar rules. I am aware that reading the parenthesis-free code feels strange to many, but I not overly worried about that: Every change feels strange, and in this case, only code that is otherwise illegal is affected. Akio has indicated that he is willing to work on the implementation. Therefore, I suggest that we accept this proposal. Please discuss (or voice you silent agreement). Regards, Joachim -- Joachim Breitner mail@joachim-breitner.de http://www.joachim-breitner.de/