[Haskell-cafe] GHC Extension Proposal: ArgumentBlock

Chris Wong lambda.fairy at gmail.com
Mon Sep 7 07:37:24 UTC 2015


+1

One aspect, which I don't think has been brought up yet, is the
consistency with record syntax.

This is a valid Haskell expression:

    someFunction Record { field = 42 }

so it should make sense for this to be valid as well:

    someFunction do foo; bar


On Sun, Sep 6, 2015 at 10:55 AM, Andrew Gibiansky
<andrew.gibiansky at gmail.com> wrote:
> I'd like to propose a GHC extension called (for now) `ArgumentBody`.
> `ArgumentBody` is a simple syntax extension, than, when enabled, permits the
> following code:
>
> 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.
> 2. We can avoid using the type-checker hack for $ for things such as runSt.
>
> 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.
>
> See more info on Trac.
>
> -- Andrew Gibiansky
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>



-- 
Chris Wong (https://lambda.xyz)

"I fear that Haskell is doomed to succeed."
    -- Tony Hoare


More information about the Haskell-Cafe mailing list