On Nov 3, 2021, at 11:23 AM, Kevin Bourrillion 
<kev...@google.com<mailto:kev...@google.com>> wrote:

On Wed, Nov 3, 2021 at 9:02 AM John Rose 
<john.r.r...@oracle.com<mailto:john.r.r...@oracle.com>> wrote:

> One way to thicken this thin argument is to say that Point is not really a 
> class.
> It’s a primitive.  Then it still has a value-set inclusion relation to 
> Object, but it’s
> not a sub-class of Object.  It is a value-set subtype.

I would spin it like this: `Point` absolutely is a class. But its instances are 
values (like ints and references are, but compound), and values are still not 
objects.

We've said at times we want to "make everything an object", but I think the 
unification users really care about is everything being a class instance.

I think this fits neatly with the current design: `Point` has no supertypes*, 
not even `Object`, but `Point.ref` does.

(*I mean "supertype" in the polymorphic sense, not the "has a conversion" sense 
or the "can inherit" sense. I don't know what the word is really supposed to 
mean. :-))

These sorts of explanations make me uncomfortable—that a Point stored in a 
reference isn't really a Point anymore, but a "box" or something like that.

The problem is that you want to say that the Point gets converted to some other 
thing, yet that other thing:
- is == to the original
- provides the exact same API as the original
- has the exact same behaviors as the original
- works exactly like a class declared with original class's declaration

If you're telling people that when you assign a Point to type Object, they now 
have something other than a Point, they're going to want to *see* that somehow. 
And of course they can't, because the box is a fiction.

The reference vs. value story that we developed to address these problems (and 
problems that arise when you *do* let people "see" a real box) carries the 
right intuitions: you can handle a Point by value or by reference, but either 
way it's the exact same object, so of course everything you do with it will 
work the same.

Reply via email to