MRL questions

Kurt Stirewalt ([email protected])
Wed, 3 May 1995 08:16:08 -0400

Prior to Monday's conference call, the Georgia Tech MM folks discussed some
of the technical details of mrl using an example to guide the discussion.
We came upon a number of language questions that neither Noi nor Kurt could
answer. Since mrl ultimately appeals to the object system for semantics
issues, we thought we could ask the ISI folks to answer these questions.

1) What are the semantics of the "part" modifier?

a) Is it saying nothing more than "deep copy composite attributes" on
inheritance?

b) Say an object O has an attribute A which is a basic type (like Boolean)
not declare to be a "part" attribute. Do objects of which O is a
prototype point to O's A? Or do they each have their own A?
(I would assume the latter, in which case we can think of part as only
having meaning with respect to composite attributes, which leads
to the next question).

c) If "part" really signifies a copying status, could we think of a more
intuitive name than "part"?

2) What we are now calling "Collection" has the semantics of lists. Why not
call them "List" then?

3) Can you have is_like inheritance, plays_role inheritance, and part all
on the same attribute? What would this mean?

4) When an attribute is declared "whole" as opposed to "part", is this
attribute automatically inherited is_like?

5) What are the semantics of inheritance?

Take as a running example for the questions in this section the following
piece of mrl code:

Object super_class {
attribute foo : Double;
}

Object sub_class : super_class {
...
}

a) Two things are going on here. First, two objects (super_class and
sub_class) are created. Now since sub_class inherits attributes from
super_class, we want to know the relation between the actual objects
super_class and sub_class. Is super_class a prototype object of
sub_class? If the answer to this is "yes", then there are 2 ways
to achieve prototype-instance behavior (one through mrl syntax and
one through the create_object() method in the object system).

b) Is there anything special about the inheritance type (is_like,
plays_role, none, both) of the attributes that are "inherited" through
the ": super_class" notation? I guess the answer to this really depends
upon the answer to 5a above.

c) Say super_class did not define attribute foo to have is_like inheritance.
Could we say:
is_like inherits (foo)
in sub_class?

d) Conversely, say super_class did define attribute foo to have is_like
inheritance, and say we did not say:
is_like inherits(foo)
in sub_class. How do objects of which sub_class is a prototype inherit
foo?

6) Can you give any examples of how hooks interact with attributes? If you have
a small example of the C++ that implements a hook, that would be good.
We want to see how the C++ code accesses attribute information.

7) What is the syntax for specifying multiple hooks in mrl.

8) The current syntax for the "Description" clause uses the keyword description
to do 2 things: introduce description clauses, and introduce attributes
to be described. Could we replace the "description" keyword that refers
to attributes with the keyword "attribute"?

Thanks.

-- kurt.