Also, we’re conflating two separate questions here.  

1.  What does V? mean.  In the proposed world, it is the union type of V and 
Null, nothing more (alternately: V adjoined with null.). 

2.  What is the relationship between V and V? — is it sub typing, or 
conversion?  

I think Remi is more interested in (2), but you keep saying “it should be a 
box”,w which suggests we’re not on the same page with respect to (1) either, 
yet.



> On May 1, 2019, at 9:24 AM, Brian Goetz <brian.go...@oracle.com> wrote:
> 
>> 
>> a box is a necessary evil, everybody want to write an ArrayList<int> but we 
>> are not there yet, so we provide just the right abstraction to deal with 
>> value type in generics, not more.
> 
> I think this is where we part ways.  In Java 1.0, with respect to primitives, 
> a box was a necessary evil, because ints are not Objects.  In Q-world, when 
> we thought we couldn’t get away with values being Object, we thought it was a 
> necessary evil again.  L-world taught us we don’t need boxes, and that’s a 
> huge weight lifted off our shoulders!  
> 
> Boxes are messy; if they are necessary, we can live with them, but if they 
> are not, why would we want to?  
> 
> There are two paths here:
>  - Cripple values exactly as much as primitives are crippled, and everyone is 
> on an even footing;
>  - Make values what we want everything to be, and catch up later with 
> primitives to the extent we can.
> 
> But, you’re not making your case, you’re just saying “I think it should be 
> the other way.”  Make the case why the proposed new way is worse!  

Reply via email to