State of the Lambda

Brian Goetz brian.goetz at
Thu Jul 8 14:57:01 PDT 2010

> No, I think he means the difference between the unbound String#length() which is of type (String)->int and the bound "myString"#length(), which is of type ()->int.  The latter is derived by a partial-application operation from the former.  John's example uses the unbound version, while other use cases (event handlers, e.g.) would use the bound version.
>>      select<Person>({ p ->   p.getName() }, { p ->   p.getAge() }).from(persons)
> =>
>      select<Person>(Person#getName(), Person#getAge()).from(persons)

Ah, I see.  Nice idea.

> Requiring the trailing parens makes it slightly more clear that a method is being mentioned, since identifier-followed-by-paren is a cue Java programmers know very well.  I chose a wildcard-like notation Foo#bar(...) to mean "find the unique 'bar' method".  But that's a relatively unimportant detail, compared to getting the bound-vs.-unbound distinction right.

Yep, and not too burdensome.

More information about the lambda-dev mailing list