Author: lwall
Date: 2010-02-18 18:00:49 +0100 (Thu, 18 Feb 2010)
New Revision: 29776

Modified:
   docs/Perl6/Spec/S02-bits.pod
   docs/Perl6/Spec/S04-control.pod
Log:
[S04] unmuddying requested by Richard?\194?\160Hainsworth++


Modified: docs/Perl6/Spec/S02-bits.pod
===================================================================
--- docs/Perl6/Spec/S02-bits.pod        2010-02-18 14:35:39 UTC (rev 29775)
+++ docs/Perl6/Spec/S02-bits.pod        2010-02-18 17:00:49 UTC (rev 29776)
@@ -1075,7 +1075,7 @@
 the "nothing" from which everything else is derived via the undefined
 type objects, so it stands in for the concept of "Object" as used in
 languages like Java.  Or think of it as a "micro" or µ-object that
-is the the basis for all other objects, something atomic like a Muon.
+is the basis for all other objects, something atomic like a Muon.
 Or if acronyms make you happy, there are a variety to pick from:
 
     Most Universal

Modified: docs/Perl6/Spec/S04-control.pod
===================================================================
--- docs/Perl6/Spec/S04-control.pod     2010-02-18 14:35:39 UTC (rev 29775)
+++ docs/Perl6/Spec/S04-control.pod     2010-02-18 17:00:49 UTC (rev 29776)
@@ -13,8 +13,8 @@
 
     Created: 19 Aug 2004
 
-    Last Modified: 17 Feb 2010
-    Version: 96
+    Last Modified: 18 Feb 2010
+    Version: 97
 
 This document summarizes Apocalypse 4, which covers the block and
 statement syntax of Perl.
@@ -758,6 +758,11 @@
 A C<gather> is not considered a loop, but it is easy to combine with a loop
 statement as in the examples above.
 
+The C<take> operation may be defined internally using resumable control
+exceptions, or dynamic variables, or pigeons carrying clay tablets.
+The choice any particular implementation makes is specifically I<not> part
+of the definition of Perl 6, and you should not rely on it in portable code.
+
 =head2 The C<lift> statement prefix
 X<lift>
 
@@ -1355,10 +1360,13 @@
 
 Except for C<CATCH> and C<CONTROL> phasers, which run while an exception
 is looking for a place to handle it, all block-leaving phasers wait until
-the calls stack is actually unwound to run.  That is, just because an
-exception is thrown past a stack frame does not leave the block, since
-the exception might be resumable.  It is only if an exception is not
-resumed that the stack is unwound the the phasers called.
+the call stack is actually unwound to run.  Unwinding happens only after
+some exception handler decides to handle the exception that way.  That is,
+just because an exception is thrown past a stack frame does not mean we have
+officially left the block yet, since the exception might be resumable. In
+any case, exception handlers are specified to run within the dynamic scope
+of the failing code, whether or not the exception is resumable.  The stack
+is unwound and the phasers are called only if an exception is not resumed.
 
 So C<LEAVE> phasers for a given block are necessarily evaluated after
 any C<CATCH> and C<CONTROL> phasers.  This includes

Reply via email to