Author: larry
Date: Tue May 29 12:03:39 2007
New Revision: 14406

Modified:
   doc/trunk/design/syn/S12.pod

Log:
Allow closures as indirect methods as suggested by blazer++


Modified: doc/trunk/design/syn/S12.pod
==============================================================================
--- doc/trunk/design/syn/S12.pod        (original)
+++ doc/trunk/design/syn/S12.pod        Tue May 29 12:03:39 2007
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 27 Oct 2004
-  Last Modified: 21 May 2007
+  Last Modified: 29 May 2007
   Number: 12
-  Version: 52
+  Version: 53
 
 =head1 Overview
 
@@ -222,6 +222,18 @@
 
     $obj.$methodname(1,2,3)
 
+The variable may contain either the name of a method or a closure
+object.  In the latter case the closure is called with the object
+as its first argument, so that a closure may be used to abstract a
+"navigational" path through a data structure without specifying the
+root of the path till later.
+
+    $locator = -> $root, $x, $y { $root.<foo>[$x]<bar>{$y}[3] }
+    $obj.$locator(42,"baz")  # $obj<foo>[42]<bar><baz>[3]
+
+    $locator = { .<here> }
+    $obj.$locator            # $obj<here>
+
 The method name may also be quoted with either single or double quotes:
 
     $obj."$methodname"(1,2,3)   # same as previous

Reply via email to