Author: larry
Date: Wed Dec  5 20:50:15 2007
New Revision: 14471

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

Log:
Some clarifications requested by brian d foy++


Modified: doc/trunk/design/syn/S02.pod
==============================================================================
--- doc/trunk/design/syn/S02.pod        (original)
+++ doc/trunk/design/syn/S02.pod        Wed Dec  5 20:50:15 2007
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 10 Aug 2004
-  Last Modified: 3 Dec 2007
+  Last Modified: 5 Dec 2007
   Number: 2
-  Version: 120
+  Version: 121
 
 This document summarizes Apocalypse 2, which covers small-scale
 lexical items and typological issues.  (These Synopses also contain
@@ -2136,9 +2136,42 @@
     a => $$a            :$$a
     a => @$$a           :@$$a (etc.)
     a => %foo<a>        %foo<a>:p
+    '' => $x            :($x)
+    '' => <x>           :<x>
+    '' => ($x,$y)       :($x,$y)
+    '' => [$x,$y]       :[$x,$y]
+    '' => {$x => $y}    :{$x => $y}
+
+The fatarrow construct may be used only where a term is expected
+because it's considered an expression in its own right, since the
+fatarrow is parsed as a normal infix operator (even when autoquoting an
+identifier on its left).  The adverbial forms are considered special
+tokens and are recognized in various positions in addition to term
+position.  In particular, when used where an infix would be expected
+they modify the previous operator, ignoring the intervening term or
+parenthesized argument.  The form is also used to rename parameter
+declarations and to modify the meaning of various quoting forms.
+When appended to an identifier, the adverbial syntax is used to
+generate variants of that identifier; this syntax is used for
+naming operators such as C<< infix:<+> >> and multiply dispatched
+grammatical rules such as statement_control:if.  When so used the
+adverb is considered part of the name, so C<< infix:<+> >> and C<<
+infix:<-> >> are two different operators.  Likewise C<< prefix:<+>
+>> is different from C<< infix:<+> >>.
+
+Either fatarrow or adverbial pair notation may be used to pass named arguments 
as
+terms to a function or method.  After a call with parenthesized arguments,
+only adverbial syntax may be used to pass additional arguments.  This is 
typically
+used to pass an extra block:
+
+    find($directory) :{ when not /^\./ }
+
+This actually falls out from the preceding rules because the adverbial block 
is in 
+operator position, so it modifies the "find operator".
 
 Note that as usual the C<{...}> form can indicate either a closure or a hash
-depending on the contents.  It does I<not> indicate a subscript.
+depending on the contents.  It does I<not> indicate a subscript despite being
+parsed as one.
 
 Note also that the C<< <a b> >> form is not a subscript and is therefore
 equivalent not to C<.{'a','b'}> but rather to C<('a','b')>.  Bare C<< <a> >>

Reply via email to