Quick note in the discussion: we have already a form of composition with
closures, using the right shift operator:

http://mrhaki.blogspot.fr/2011/04/groovy-goodness-chain-closures-together.html?m=1

Le dim. 25 févr. 2018 à 16:02, Jesper Steen Møller <jes...@selskabet.org> a
écrit :

> Interesting proposal and discussion!
>
> As somebody who routinely work in both Java, Groovy, TypeScript/ES6 and
> C#, I find this *syntactically* too close too arrow functions/lambdas, in
> other words, they may confuse a lot of readers.
>
> As for the *semantic* content: I realize that Groovy goes a long way to
> support multiple paradigms, but I feel this is trying to cater to the needs
> of concatenative / point-free style programming, in a language and
> environment which doesn't really have the functional compositionality to
> take advantage of it -- because Groovy is at its heart object-oriented.
>
> Your proposal is essentially the forward pipe operator |> for function
> composition, as seen in a number of functional languages, like F# and Elm
> (as "&" in Haskell). In those languages, it makes a lot of sense, since the
> function is the primarily compositional building block. In Groovy, it's the
> object, and many of the core features of Groovy (like overloading,
> extension methods, AST transformations, closures) are added to support
> those. In practice, I've seen very little Groovy code which ends up being
> formulated as baz(bar(foo(x))) -- but I've seen a lot of
>  x.foo().bar().baz() instead. It's a better match, and Groovy already has a
> great operator "." to make programs easy to read and type
>
> -Jesper
>
> On 25 Feb 2018, at 14.38, Daniel.Sun <sun...@apache.org> wrote:
>
> Hi all,
>
>     I propose to introduce Concatenative Method Calls to Groovy. It can
> make code more readable, for example:
>
> Currently we write method calls like:
> y = foo(x)
> z = bar(y)
> w = baz(z)
> OR
> w = baz(bar(foo(x)))
>
> Concatenative Method Calls(inspired by [1]):
> w = x => foo => bar => baz
>
>      Any thoughts?
>
> Cheers,
> Daniel.Sun
> [1] https://en.m.wikipedia.org/wiki/Concatenative_programming_language
>
>
>
> --
> Sent from: http://groovy.329449.n5.nabble.com/Groovy-Dev-f372993.html
>
>
>

Reply via email to