"Bryan C. Warnock" wrote:
> 
> 
> Is it POST, LAST or LAST, POST, at runtime?

Since POST is checking invariants, and LAST can have side effects, LAST
must be executed before POST.

Apo 4 said POSTs were executed in the reverse of the order seen, I
presume that would hold for LAST as well.

> How does one enforce the no side-effects rule, and how deeply does it
> traverse?

Good question!
 
> 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?)  If all three are allowed,
> what is the exception handling order?

The way I hear it, KEEP/UNDO get executed if there are control/other
exceptions raised, but they do not themselves catch exceptions.  The
ordering will be interesting to learn... I'd think/hope KEEP or UNDO
would be executed before CATCH.
 
> Which blocks may you have more than one of within the same block, and in
> what order will they execute?

It would be nice to have the chart... Here's my interpretation,
corrections welcomed from those in the know.  I see no reason not to
permit multiple instances of any of the types of blocks, although they
could be restricted as unnecessary (especially those marked "yes?".  It
seems there might not be much reason to allow multiples of those, but
unless there is an implementation reason not to, why not?)


block          side     multiple           order
type           effects  instances

PRE            no       yes?/order seen    before regular code in block
                         inherited before
                         locally defined
regular code   yes      n/a                after PRE, until exception
KEEP           yes      yes/reverse order  if control exception, ofter
reg
UNDO           yes      yes/reverse order  if non-control exception,
after reg
CATCH          yes      yes?/order seen    after KEEP/UNDO
                          until exception
                          is cleaned
LAST           yes      yes/reverse order  after regular code if no
exception
                                           after CATCH if exception
POST           no       yes?/reverse order after LAST
                          locally defined
                          before inherited


 
> In one cannot (or does not) inherit a PRE, POST, or LAST block, is there a
> way to add one without recreating the entire block.

Seems like you could always have your own blocks of any kind... just
define them.  In addition, you might inherit one from somewhere else.

-- 
Glenn
=====
Due to the current economic situation, the light at the
end of the tunnel will be turned off until further notice.

Reply via email to