Updated State of the Lambda

Yuval Shavit yshavit at akiban.com
Sun Dec 11 16:44:23 PST 2011


Thanks, Brian -- I had a feeling my question boiled down to "what's the
search keyword for this question I have"? :-)  I read up on function types
in the lambda-dev list, and I think I understand the reasoning behind "no."

What about defining a new syntax for declaring functional interfaces, so
that the interface as well as its implementation can address the vertical
problem? Something like:

interface MyComparable<T> = int compareTo(T other);


Which would be equivalent to:

interface MyComparable<T> {
    int compareTo(T other);
}

Apologies if this is also covered ground. I searched for java + lambda
[dev] + delegate, since this seems a bit similar to C#'s delegate syntax.

On Fri, Dec 9, 2011 at 3:32 PM, Brian Goetz <brian.goetz at oracle.com> wrote:

> Yes, this is well-covered ground.  What you're asking for is "function
> types" (or arrow types, or algebraic function types, or structural
> functions types.)  The short answer is "no".
>
> Function types are the "obvious right way" to represent the type of a
> lambda, until you realize that they will end up getting implemented using
> generics, which means they will be erased.  Erased function types are the
> worst of both worlds.
>
> Instead, we use functional interfaces in APIs, and then users can use
> named classes, anonymous classes, or lambdas to create instances of the
> functional interfaces.
>
>
>
> On 12/9/2011 1:44 PM, Yuval Shavit wrote:
>
>> By the way -- and I apologize if this has already been covered, I did
>> some searching and nothing came up -- is there any thought as to whether
>> methods will ever be able to declare lambdas as arguments?  Something
>> like:
>>
>>    public <T> void myFilter(Iterable<? extends T>, (? super T ->
>>    boolean) predicate ) { ... }
>>
>>
>> This function could then take either a lambda of the same type, or any
>> reference typed as a functional interface which could be expressed as a
>> corresponding lambda.
>>
>> Thanks,
>> Yuval
>>
>> On Fri, Dec 9, 2011 at 1:28 PM, Brian Goetz <brian.goetz at oracle.com
>> <mailto:brian.goetz at oracle.com**>> wrote:
>>
>>    An updated State of the Lambda is available here:
>>
>>    http://cr.openjdk.java.net/~**briangoetz/lambda/lambda-**state-4.html<http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html>
>>
>>
>>
>>


More information about the lambda-dev mailing list