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.cimadam...@oracle.com> wrote:
> 
> 
> On 09/05/2019 13:35, fo...@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
> 

Reply via email to