lambda expression parameters

Venkat Subramaniam venkats at agiledeveloper.com
Tue Dec 18 16:57:05 PST 2012


David,

Right now (build b68) the compiler refuses final modifier for inferred types.

The error detection mechanism is a reasonably good reason IMHO to have final as default (or decree).
This may be a good opportunity, at the design time, to lean on the side of good practices,
especially in supporting a feature that so much favors immutability.

Thanks,

Venkat

On Dec 18, 2012, at 5:43 PM, David Holmes <david.holmes at oracle.com> wrote:

> 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