TSa (Thomas Sandlaß)
Mon, 08 Aug 2005 08:33:16 -0700
HaloO, Autrijus Tang wrote:
On Thu, Jul 28, 2005 at 09:27:00AM -0700, Larry Wall wrote:Or maybe Any really does mean "Object" and we're just viewing our hierarchy too strictly if we make every relationship "isa". That's one thing that neither this formulation nor Thomas's are making very clear--which type relations are really subclassing, which are role composition, and which are subtype constraints.
Well I would make all types predicate based. The isa relation of an object to the class it was instanciated from is just one amongst many others like doing a role or object structure. And the inheritance hierarchy is mostly irrelevant for typing an object. This is one of the difficulties I have with the metric MMD which relies completely on the count of class derivation levels. I currently have the following model in mind. The compiler collects type information from so-called special forms and stores it in a strictly tree shaped repository called the name space. User code can query this structure by means of the :: forms. The type lattice is then build at CHECK time on top of or from this information. In particular I don't make a distintion between subtype, role, class, sub or method special forms. This implies that where clauses are restricted in the contructs allowed in them and the referential environment accessible to them.
FWIW, I've been reading up on Scala's formulation of trait/class/delegation hierarchy, and I feel a bit like flipping through a puzzle book to look at the hints, if not answers. :-)
The Scala type hierarchy splits from the Any root into the two realms of value types and referential types in good tradition with Java. This split is located in my type lattice below the $Item type where \Ref, Value, Undef, Inf and Junction lie nicely parallel to each other. -- TSa