The lambda conversion and a lambda body that doesn't complete.

Neal Gafter neal at gafter.com
Tue Mar 1 09:35:38 PST 2011


Dear Lambdans-

Given

*interface F {
    int invoke();
}*

I would like to be able to write

*F x = #{ throw new Exception(); };
*

(Modulo syntax - whatever the current syntax is)

But according to the current draft specification that's not allowed (the
lambda as written can only be converted to a SAM with a void return type).

I think that whether or not the lambda's body can complete normally should
be taken into account in the lambda conversion to make this legal.  As a
point of information, the behavior I prefer is the behavior of Scala, BGGA,
and C# (among others).  This is also consistent with the way method
implementations work:

*int f() { throw new Exception(); }*

In the unfortunate case that you need use cases for this, draft
specification language, or suggestions for a straightforward implementation,
I can provide those.

Cheers,
Neal


More information about the lambda-dev mailing list