It's not safe until it's in the coffer

Brian Goetz brian.goetz at oracle.com
Thu May 9 18:30:02 UTC 2019


Another thing to object to is: the use of pseudo-generics as type operators.  This raises many new problems: including readability problems (how are readers supposed to know that Coffer is a magic fake type, with possibly different rules?  If Coffer accepts primitive args, users would be confused that they can say Coffer<int> but not List<int>, etc) and generalized magic-angst (“why can’t I write my own type operators.”). 

All that said, I think we’re getting way^3 ahead of ourselves.  I still don’t think you’ve adequately outlined what problem you think needs solving; I get that you think it would be not-great to use V? types in public APIs, but it’s a long leap from there to this proposal.  


> On May 9, 2019, at 10:54 AM, Maurizio Cimadamore <maurizio.cimadamore at oracle.com> wrote:
> 
> 
> On 09/05/2019 13:35, forax at univ-mlv.fr wrote:
>> yes, it's verbose by design.
> 
> I object to this a bit.
> 
> There will be cases where using nullable projection will be _the only_ way to solve certain problems (e.g. to build value types that can reference to themselves). Forcing an heavy syntax on these cases seems punitive. You seem to assume that, once we have specialized generics, people will just use them and forget about nullable projections. I don't think that's the case, and some internal discussions we started (e.g. to sprinkle values on HashMap implementation) seem to point in that direction too.
> 
> Maurizio
> 



More information about the valhalla-spec-experts mailing list