Two simple Self questions and one Self design philosophy query
ben_moseley at mac.com
Wed Jun 16 18:59:19 UTC 2004
(Apologies if these are somewhat naive - I'm very new to the Self
world, but intrigued...)
The first simple question is - suppose I have an object representing a
table which has four slots to four other objects representing its
legs. If I send a "copy" message to this I will by default get a new
table which shares the legs of the old one (ie - it is a shallow copy).
What is the standard Self idiom for achieving the desired affect? Is it
to implement a custom "copy" method?
The second simple question: Why does "parent* = traits clonable" work
on a new - empty - object when initially "traits" can't be found. (By
this I mean if I have a parent-less object and type "traits" or "traits
clonable" into its evaluator, I get a debugger). There is obviously
some boot-strapping going on here - ie the "traits clonable" which is
used for the parent slot assignment is being evaluated in a different
environment (one which has access to the lobby?) - I was just wondering
how it worked.
Finally, Self makes a clear distinction between prototypes which are
copied (but not inherited from) and traits objects which can be used
for inheritance whereas some other prototype languages merge the two
concepts (ie they inherit via their prototypes by default). I know one
of the original reasons given for the Self approach was to ensure that
the prototype object was genuinely a prototype of objects cloned from
it and not special in any way, but I am curious if with hindsight this
is viewed to be a strength or a weakness of Self. (If this has been
discussed elsewhere I'd be very grateful for pointers).
Thanks very much,
More information about the Self-interest