lambda expression parameters

David Holmes david.holmes at oracle.com
Tue Dec 18 16:43:51 PST 2012


I don't grok the problem. If the parameter is not modified then it is 
effectively final. Making parameters final is then only an 
error-detection mechanism, and I don't see that is warranted in lambda 
expressions. So I don't see "final by default" as warranted.

Having to add back the inferred type to enable final to be added doesn't 
seem like a large burden. On the other hand can't the compiler accept 
parameter modifiers even if it infers the type?

David

On 19/12/2012 8:31 AM, Brian Goetz wrote:
> Agreed that this is something that has the right "nudge" to it.
>
> One downside is that there is no keyword for "not final."  Which means
> this is not a question about "final by default", but "final by decree",
> unless we're willing to introduce new syntax for mutable (which we're
> not.)  That's not terrible -- most people would probably never even
> notice.  So, reasonable suggestion.
>
>
>
> On 12/18/2012 4:40 PM, Venkat Subramaniam wrote:
>> Hi
>>
>> Is there plans to make the inferred parameter of a lambda expression final by default.
>> Right now, we can't specify the parameter is final unless we provide it with the type.
>>
>> In the spirit of leaning towards immutability, which is a better practice, would it be possible to
>>
>> (a) make all inferred parameters of lambda expressions final, and
>> (b) to make it non-final, force the developers to explicitly request (like the mutable in F#).
>>
>> It's more of a wish-list, if that's something that can be considered.
>>
>> Thanks,
>>
>> Venkat
>>
>


More information about the lambda-dev mailing list