main = when True do
putStrLn "Hello!"
main = forM values \value ->
print value
main = forM values \case
Just x -> print x
Nothing -> print y
In this code we do not need `$` before `do`, lambda, or lambda-case (if -XLambdaCase is enabled). This change would not extend to `let`, `if`, `case`, or any other constructs.
Pros:
1. Code is simpler and it greatly reduces the need for "operator line noise" of $ everywhere.
Cons:
1. Adds complexity to the compiler. (NB: The change is minimal and not invasive at all.)
2. Contributes to a proliferation of extensions that other tools must support. (NB: This is just a parser change so should be easy for all tools to support.)
I'm very interested in hearing both favoring and dissenting opinions on this proposed change. If this change is approved of, names besides -XArgumentBody can be considered.