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