Expected distribution of lambda sizes (Re: Syntax poll, take 2)
Brian Goetz
brian.goetz at oracle.com
Wed Jun 15 11:49:29 PDT 2011
Yep, unfortunately deprecating raw types is not in the scope of Project
Lambda :(
On 6/15/2011 2:43 PM, John Nilsson wrote:
> Of course the interesting difference is between theese two
>
> interface GenericSAM {
> <T> T m(Pair<?,T> p);
> }
>
> interface RawSAM {
> Object m(Pair p);
> }
>
> BR,
> John
>
> On Wed, Jun 15, 2011 at 8:05 PM, Maurizio Cimadamore
> <maurizio.cimadamore at oracle.com> wrote:
>> On 15/06/11 18:43, John Nilsson wrote:
>>>
>>> On Wed, Jun 15, 2011 at 7:39 PM, Maurizio Cimadamore
>>> <maurizio.cimadamore at oracle.com> wrote:
>>>>
>>>> *) Pair#fst is compatible with a SAM type whose method is m(Pair)
>>>> *) Pair<>#fst is compatible with a SAM type whose method is of the kind
>>>
>>> Ah, there you go. Forgot about this "interesting" aspect of the type
>>> system.
>>>
>>> Is it reasonable though? When would it, in practice, be important to
>>> enforce this difference?
>>>
>>> BR,
>>> John
>>
>> class Pair<X,Y> {
>> X fst() { return null; }
>> Y snd() { return null; }
>> }
>>
>> interface SAM {
>> Integer m(Pair<Integer,String> p);
>> }
>>
>> interface RawSAM {
>> Object m(Pair p);
>> }
>>
>> class Test {
>>
>> static void call(SAM s) { System.out.println("1"); }
>> static void call(RawSAM s) { System.out.println("2"); }
>>
>> public static void main(String[] args) {
>> call( Pair<Integer,String>#fst ); //prints 1
>> call( Pair#fst ); //prints 2
>> }
>>
>> }
>>
>> Maurizio
>>
>
More information about the lambda-dev
mailing list