Expected distribution of lambda sizes (Re: Syntax poll, take 2)

Ali Ebrahimi ali.ebrahimi1781 at gmail.com
Wed Jun 15 20:04:33 PDT 2011


Hi,
No problem, this is solvable.

GenericSAM#<>m();
RawSAM#m()



Ali Ebrahimi

On Wed, Jun 15, 2011 at 10:19 PM, Brian Goetz <brian.goetz at oracle.com>wrote:

> 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