Lambda and JSR 292 method handle
Howard Lovatt
howard.lovatt at iee.org
Tue Dec 29 14:50:04 PST 2009
You could reify lambda's, see:
http://www.artima.com/weblogs/viewpost.jsp?thread=277879
for details. This would solve many of the erasure 'issues'. But as Neal's
example shows, not in all cases.
2009/12/23 Neal Gafter <neal at gafter.com>
> I don't think there is an option to reify function types. That's because
> generics are already non-reified. In this code
>
> *<T> #T() constant(T t) {
> return #() t;
> }
> *
>
> the returned lambda cannot, in principle, be reified if generics are not
> reified. This is independent of whether function types are mapped to
> interfaces, method handles, or something else. There may be issues with it,
> but they aren't "disadvantages" except by comparison to a scheme that does
> not have these issues, and no such scheme has been proposed.
>
>
> On Wed, Dec 23, 2009 at 1:06 PM, Howard Lovatt <howard.lovatt at iee.org>wrote:
>
>> Presumably the problems with using generic style annotations and erasing
>> the
>> actual type include:
>>
>> 1. Can't have two methods of the same name only distinguished by lambda
>>
>> type, e.g. filter( #boolean(int) ) and filter( #boolean(float) )
>>
>
> These are distinguished in CfJ, but not in a hypothetical erasure to
> MethodHandle.
>
>
>> 2. Can't have arrays of lambdas that are type safe, e.g. new #(int)()[ n
>> ]; // Illegal
>>
>
> Right.
>
>
>> 3. Can't have instanceof tests (this might be possible since type
>>
>> information is carried at runtime)
>>
>
> No, type information cannot, in principle, be guaranteed to be available at
> runtime unless generics are reified.
>
>
>> 4. Can't have primitive types (this might be fixable with an extension
>> to
>> the signature attribute)
>> 5. Can't have static fields that are lambdas (this might be fixable with
>>
>> an extension to the signature attribute)
>>
>
> Right: the signature attributes would be extended to express function
> types, addressing these two issues.
>
>
> ______________________________________________________________________
> This email has been scanned by the MessageLabs Email Security System.
> For more information please visit http://www.messagelabs.com/email
> ______________________________________________________________________
>
--
-- Howard.
More information about the lambda-dev
mailing list