Optional brackets around lambda expression
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Mon Jun 20 01:12:13 PDT 2011
Isn't this similar, if not identical, to the C# syntax?
Maurizio
On 18/06/11 04:33, Ali Ebrahimi wrote:
> Hi all,
>
> to be crystal clear, i have to re-post my proposed syntax again.
>
> seperate syntax for expresion lambdas and statement lambdas :
>
> 1) Expression Lambdas:
>
> 1.1) if len(args)<= 1: optional parentheses
>
> [(] [arg0] [)] -> expr
>
> sample1:
> list.filter( t -> t.length()> 3 )
> .map( t -> t.barCount )
> .max();
>
> sample2:
> students.where(s -> s.degree> 10)
> .select(s -> s.name); // .select(s -> list(s.name,s.degree ));
>
> sample3: empty args
>
> doRun( -> out.println("lambda"))
>
> 1.2) if len(args)> 1: required parentheses
>
> (args ) -> expr
>
> Sample:
>
> Sam2<Integer,Integer,Integer> func5 = (x, y) => x * y;
>
> 2) Statement lambdas:
> 2.1) if len(args)<= 1: optional parentheses
>
> [(] [arg0] [)] -> { statement* }
>
>
> list.filter( t -> t.length()> 3 )
> .map( t -> t.barCount )
> .max();
>
>
> doRun( -> { out.println("lambda"); })
>
> 2.2) if len(args)> 1: required parentheses
>
> (args ) -> { statement* }
>
> Sam2<Integer,Integer,Integer> func5 = (x, y) => { return x * y;};
>
>
> Best Regards,
> Ali Ebrahimi
>
> On 6/17/11, Maurizio Cimadamore<maurizio.cimadamore at oracle.com> wrote:
>> On 17/06/11 15:48, Bob Foster wrote:
>>> Maurizio Cimadamore wrote:
>>>> Of course you can lookahead; but certain expressions, as pointed out
>>>> will remain ambiguous:
>>>>
>>>> process(x, y, z, a, b, c, d -> a);
>>> Assuming parenthesis are required for multiple arguments and optional
>>> for single arguments, the example has only one parse, equivalent to:
>>>
>>> process(x, y, z, a, b, c, (d) -> a);
>> I think we were discussing a proposed variant were parenthesis were
>> optional all around (regardless of arity). If parenthesis are required
>> only for arity> 1, then I agree with your analysis.
>>
>> Maurizio
>>> Bob
>>
>>
More information about the lambda-dev
mailing list