On Wed, Nov 3, 2021 at 9:02 AM John Rose <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. :-)) > - !(Point *is a* Object) & (Point *has a* Object box) > - Point does not (cannot) inherit methods from Object > - Point can *execute* methods from Object, but only after value-set mapping I'm a little fuzzy on what these accomplish for us, can you spell it out a bit? It sounds like a special rule treating Object methods differently from other supertype methods (?), which would be nice to not need. -- Kevin Bourrillion | Java Librarian | Google, Inc. | kev...@google.com