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

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu May 9 10:00:12 UTC 2019


Another oddity, that I find hard to explain away:

Coffer<String> ~= String

This seems to be a bad property, as you have two types to name the same 
thing.

You could, in principle, say that the type parameter of Coffer is 
restricted to... values.

But here's the second, pedagogical oddity: Coffer<Value> looks an awful 
lot like a specialized generic type. I think people will be surprised in 
seeing that this magic types works, while the types they want 
(List<Value>) does not.

Besides...

List<Coffer<Value>>

is reeeallly verbose, do we really want to read code like that?

At the language level, the number of exceptions this will require all 
over the place, from generic well-formedness to inference (imagine 
passing a 'Value' where a Coffer<Z>) is expected, that, while I can 
sympathize with your opening position of '?' being confusing, it seems 
the proposed cure is worse than the disease :-)

Maurizio


On 08/05/2019 23:12, Remi Forax wrote:
> There are two oddities:


More information about the valhalla-spec-experts mailing list