Daniel Ruoso wrote:
You're taking it backwards, it's not the type checker that is aware of
that, but each object's metamodel. The metamodel protocol is just the
"do you 'Dog'?" thing.
Backwards in the sequence of checks? That is we check emulation first,
then class inheritance and then role doing? Or do you mean backwards
in the sense that the priority is with the object somehow? But note
that I regard the objects as the passive part in an object system and
the system as the active part. An object checks nothing, it is checked.
I understand that you implement Perl 6 with a fully OO system. But
the "all objects are equal" doesn't work out. You need some Orwellians
which are "more equal". The type-checker is one of these. Of course
there can be more than one checker but in a scope there's exactly one
in charge at any given point in time. Other Orwellians are the compiler,
the namespace manager, the grammar engine, the dispatcher etc.
"The unavoidable price of reliability is simplicity" -- C.A.R. Hoare
"Simplicity does not precede complexity, but follows it." -- A.J. Perlis
1 + 2 + 3 + 4 + ... = -1/12 -- Srinivasa Ramanujan