groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From C├ędric Champeau <cedric.champ...@gmail.com>
Subject Re: "External" closures, why?
Date Wed, 02 Dec 2015 08:16:29 GMT
I don't think any discussion that is centered around this topic of being
possible to put the closure out of the parens will ever bring anything.
Groovy had it for a long time, and it's one of the main things that make it
suitable for human readable DSLs. Just compare the readability of builders.
If we had to write:

html({
   head({ title('Damn ugly' )})
   body({
      div([class:'main'], { p('foo') })
   })
})

instead of what we can do today:

html {
    head { title 'Groovy' }
    body {
       div(class: 'main') { p 'foo' }
    }
}

No doubt I would never have chosen Groovy to build DSLs.

2015-12-02 1:14 GMT+01:00 alessio <alessino@gmail.com>:

> >
> > yes
>
> Thanks.
>
> >
> > the problem simply is that while(x, {doSomething()}) looks quite ugly ;)
>
> It absolutely does, agreed (but then all these inlined functions do in
> most languages :) ).
> Nonetheless, while visually maybe not appealing, I'd argue it makes
> semantically more sense to have it in that place than "suddenly"
> outside of the function call.
>
> And yes, I understood that the regular way is still possible, my
> "complaint" was rather about this additional alternative, which really
> left me staring at the screen for a good while today (possibly
> similarly as when I discovered Angular's insanity of using the
> argument names for dependency injection - different subject though).
>
> Anyhow, thanks for having taken the time to explain the details.
>
> >
> > if ultimate means last argument, then yes ;)
>
> It does :)
> Thanks for the clarification.
>
> So, just for yet another better understanding, whenever there is a
> code block (-> closure) after a function call, it automatically gets
> appended as additional argument?
>

Mime
View raw message