Re: News for Java?
On Sat, 15 Jan 2011, Wanja Gayk wrote:
In article <igd1bq$34e$1@news.albasani.net>, noone@lewscanon.com says...
For example, it shows an evolution of lambda expression syntax
from 2009-12-10:
#()(42)
#(int x)(x + 1)
to 2010-07-06:
{ -> 42 }
{ int x -> x + 1 }
to 2010-10-10:
#{ -> 42 }
#{ int x -> x + 1 }
and the nilary lambda syntax
#{ 42 }
Personally I would prefer a syntax much like the one from the "First
Class Method"-proposal:
#(){42}
#(int x){x+1}
I like it, because is looks just like a normal method, but without the
name - an anonymous, first class method so to speak.
The last proposal (2010-10-10) doesn't quite look like Java to me.
Indeed. I utterly fail to understand why so many of the lambda cranks (but
most notably the BGGAs) are so insistent on un-javaish syntax.
I note that the syntax you bring up is still not quite like a method,
because of the lack of a 'return'; the more javaish syntax would be:
#() {return 42;}
#(int x) {return x + 1;}
Succumbing to the lambda syntax curse myself, i would suggest that if we
want a shorter form for lambdas whose body is just a return statement with
a single expression, we should have something that looks like an
expression:
#() = 42
#(int x) = x + 1
I appreciate that that might present parsing difficulties, both for humans
and compilers. You'd be using it in contexts like:
List<Integer> numbers;
List<Integer> squares = numbers.collect(#(int x) = x * x);
Which is not so bad, but also:
#int(int) = #(int x) = x + 1;
Which is a bit freaky. As an aside, i'm simplifying the FCM syntax for
lambda types by omitting the outermost parens; can anyone tell me why the
authors thought those were necessary?
tom
--
a blood-spattered Canadarm flinging goat carcasses into the void