Bryan C. Warnock asked:
> Is it POST, LAST or LAST, POST, at runtime? LAST then POST I suspect. For reasons already given in someone else's reply. But, just possibly: intermixed in reverse order of definition. > How does one enforce the no side-effects rule, and how deeply does it > traverse? By prohibiting mutation of variables not lexical to the block, forbidding I/O, allowing calls only to already-defined subs, and applying the same restrictions recursively to those subs. > Do I remember right that 'return' creates a control exception? Yes. > Do KEEP and UNDO take the place of CATCH within a block? (ie, you may > either CATCH, or you may KEEP and UNDO, but not both? Correct. KEEP+UNDO = CATCH and you can only have one CATCH per block. > If one cannot (or does not) inherit a PRE, POST, or LAST block, LAST blocks aren't ever inherited. > is there a way to add one without recreating the entire block. Probably not. If there were, it would be via the block's MY pseudoclass and be subject to the same "compile-time modifications only" constraints as other up-scope lexical manipulations. > When you say inheritence (which implies a sub) ....implies a method. Not the same thing in Perl 6. > not inheriting only applies to the outer-most scope - the sub scope - > currect? Any container blocks > should still have their full semantics preserved, so that an embedded > while block, for instance, would still have its corresponding LAST Of course. > If that were the case, could you then get around the inheritence issue > by enclosing the entire body of the sub inside its own block? (I'm > not saying that that's a good idea, just asking whether it could be > done.) Err. I'm afraid you lost me there. What are you trying to achieve, again? > sub non_method { > loop { > PRE { > print "PRE\n"; # Is printing a side-effect? > ... > } Printing can be a side effect. For example, your example modifies a global filehandle. Damian