# The problem of dynamic inheritance

cyberbaixing cyberbaixing at yahoo.com.cn
Tue Jan 13 18:17:50 UTC 2004

```Thanks, Jecel. Your analysis is very helpful to me! ^_^

give me some guidance?

1.You point out my problem is plain inheritance but not the dynamic
one.

> > a _Define: (|
> >         f = ('a' printLine. p:b. f).
> >
> > |)
>
> Note that this object doesn't understand either the 'p:' nor
the 'b'
> messages. And the final 'f' will cause infinite recursion.

I want to know why the object a doesn't understand 'p:' and the 'b'
messages? Doesn't this clause pass the syntax check?
Why the final 'f' will cause endless recursion? Are there other cases
also cause infinite recursion? How can I avoid them?
How can I accomplish the same result of resends by dynamic
inheritance?

2.
c _Define: (|
p*<- a.
b = b.
f = ('c' printLine. resend.f).
|)
In definition of c, I can understand the clause 'p*<- a.'. It means a
is the parent object of c. But the clause'b =b.', Does it also mean b
is a parent of c?

Else, I don't understand why the output of c f is
c
a
c
b
'b'
Why c appears two times? I guess it is related with the function
printLine since if I delete it, the output has no any "c".
Why object a works this time without the result of a f which is:
a
No 'b' slot found in a slots object.
Why b appears two times but with different forms?

Thanks,
Xing

```