Use of mirrors

In order to have mirror(s) of a Context applied to an Element
It implies that if
then
The only way to use the mirrored version from outer Context is to inspect the component
Otherwise, if the component is returned outside the Context, then
There is a way to return or pass an Element by value to a different Context, and to protect it from being mirrored or resolved

Restrictions

Mutations and Mirrors

Mutation creates ElementShadowed of entirely new identity. That implies:

Mutation loses all its Shadows history. The original Element could be a result of one or several applied mirrors applied to top-level seed. It can't unwind mirrors which were applied to original of the mutation. Otherwise the changes carried by the mutation would need to be applied to mirrored original as the Element is returned from local Context. What identity would it have? What mirrors would apply to it, and how?

When a mutation is passed down to a deeper Context, mirrors of mutation's original don't apply to the mutation itself. Otherwise mirrors would apply to almost any ElementShadowed of given type. That's because ElementShadowed instances of given class are supposed to be created as mutation of one or a few seeds of that type, or as their subsequent mutation.

TODO
Mirror [original, target] don't get applied to mutation of original Element. Otherwise that would involve dynamic mutation "combinations".

Compound (dynamic/adaptable) mutations/flexible mutations
SourceForge.net Logo Copyright (c) 2005, 2006, 2007 Peter Kehl