Author: lwall
Date: 2010-04-27 20:35:06 +0200 (Tue, 27 Apr 2010)
New Revision: 30488

Modified:
   docs/Perl6/Spec/S02-bits.pod
   docs/Perl6/Spec/S04-control.pod
Log:
[S04] clarify that state is shared by recursion to the same clone
remove some ::= fossils


Modified: docs/Perl6/Spec/S02-bits.pod
===================================================================
--- docs/Perl6/Spec/S02-bits.pod        2010-04-27 18:22:20 UTC (rev 30487)
+++ docs/Perl6/Spec/S02-bits.pod        2010-04-27 18:35:06 UTC (rev 30488)
@@ -1088,7 +1088,7 @@
 and replaces the closure in the list with its return value or values,
 and then rescans from that point (kinda like a text macro does), in case
 the closure returned a list containing a closure.  So for example,
-the closure returned by C<0..*> would interpolate a Range object into
+the closure returned by C<0..*> would interpolate a C<Range> object into
 the list when called.  Alternately, it could return the C<0>, followed
 by another closure that does C<1..*>.  Even the C<...> operator could
 likely be redefined in terms of a closure that regenerates itself,

Modified: docs/Perl6/Spec/S04-control.pod
===================================================================
--- docs/Perl6/Spec/S04-control.pod     2010-04-27 18:22:20 UTC (rev 30487)
+++ docs/Perl6/Spec/S04-control.pod     2010-04-27 18:35:06 UTC (rev 30488)
@@ -13,8 +13,8 @@
 
     Created: 19 Aug 2004
 
-    Last Modified: 18 Feb 2010
-    Version: 97
+    Last Modified: 27 Apr 2010
+    Version: 98
 
 This document summarizes Apocalypse 4, which covers the block and
 statement syntax of Perl.
@@ -172,7 +172,8 @@
 variable like C<my> does, but with a lifetime that persists for the
 life of the closure, so that it keeps its value from the end of one
 call to the beginning of the next.  Separate clones of the closure
-get separate state variables.
+get separate state variables.  However, recursive calls to the same
+clone use the same state variable.
 
 PerlĀ 5's "C<local>" function has been renamed to C<temp> to better
 reflect what it does.  There is also a C<let> function that sets a
@@ -1626,24 +1627,24 @@
 In particular, named subroutines are a special problem when embedded in
 a changing lexical scope (when they make reference to it).  The binding
 of such a definition to a name within a symbol table counts as taking
-a reference, so at compile time there is an initial C<::=> binding
+a reference, so at compile time there is an initial binding
 to the symbol table entry in question.  For "global" bindings to
 symbol tables visible at compile time, this binds to the compile-time
 view of the lexical scopes.  (At run-time, the initial run-time view
 of these scopes is copied from the compiler's view of them, so that
 initializations carry over, for instance.)  At run time, when such
-a subroutine is cloned, an additional C<:=> binding is done
-at clone time to the same symbol table entry that the original C<::=>
+a subroutine is cloned, an additional binding is done
+at clone time to the same symbol table entry that the original
 was bound to.  (The binding is not restored on exit from the current
-lexical scope; this C<:=> binding records the I<last> cloning, not
+lexical scope; this binding records the I<last> cloning, not
 the currently in-use cloning, so any use of the global reference must
 take into consideration that it is functioning only as a cache of the
 most recent cloning, not as a surrogate for the current lexical scope.)
 
 Lexical names do not share this problem, since the symbol goes out
 of scope synchronously with its usage.  Unlike global subs, they
-do not need a compile-time C<::=> binding, but like global subs,
-they perform a C<:=> binding to the lexical symbol at clone time
+do not need a compile-time binding, but like global subs,
+they perform a binding to the lexical symbol at clone time
 (again, conceptually at the entry to the outer lexical scope, but
 possibly deferred.)
 

Reply via email to