I agree Closure cannot be replaced/emulated completely.  And Function is not universally applicable either.  But the universe of SAM types is much bigger than Function alone.


Your proposed syntax does not appear to cover much more than Function would.  And it would introduce a lot of effort for reader and tool builder as well.  Groovy/Java developer already has to be aware of closure literal and lambda literal syntax.  Your proposal adds a third possibility when reader encounters "->" in source.


My general point is that there are a number of options that are available today.  Most can also be used by Java or Kotlin code that offers some Groovy support/interop.  Groovy-only syntax is not as widely applicable and would not be available for some time.  My opinion is that there is little benefit to the new syntax and a lot of potential cost.




From: Daniel.Sun <sunlan@apache.org>
Sent: Wednesday, February 13, 2019 8:07 AM
To: dev@groovy.incubator.apache.org
Subject: Re: About polish the generics type syntax for closure
 
Thanks for your suggestion.

If the argument type is Function and the parameter type is Closure, implicit
coerce will happen, thus the performance will be impacted somehow. Certainly
we can use native lambda to avoid the performance issue.
In addition, Function accepts only one parameter, a bit limited for general
scenarios.

In short, Closure can not be replaced completely.

Cheers,
Daniel.Sun




-----
Apache Groovy committer
Blog: https://urldefense.proofpoint.com/v2/url?u=http-3A__blog.sunlan.me&d=DwICAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=tPJuIuL_GkTEazjQW7vvl7mNWVGXn3yJD5LGBHYYHww&m=OEzRyWh0ecDlHuHykn040knCc4zWHNNZDEWY-2anHm8&s=UpwOkqNP45mAdUSjnCO-aR_PyQrVLRKFSrEyUIQSqRY&e= 
Twitter: @daniel_sun

--
Sent from: https://urldefense.proofpoint.com/v2/url?u=http-3A__groovy.329449.n5.nabble.com_Groovy-2DDev-2Df372993.html&d=DwICAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=tPJuIuL_GkTEazjQW7vvl7mNWVGXn3yJD5LGBHYYHww&m=OEzRyWh0ecDlHuHykn040knCc4zWHNNZDEWY-2anHm8&s=YwSwy0HdBm2CKcJaoqan8AoB-csth7-8vS6qutDbwt0&e=