Author: larry
Date: Wed Apr 26 14:41:21 2006
New Revision: 8967

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

Log:
Typos, clarifications.


Modified: doc/trunk/design/syn/S02.pod
==============================================================================
--- doc/trunk/design/syn/S02.pod        (original)
+++ doc/trunk/design/syn/S02.pod        Wed Apr 26 14:41:21 2006
@@ -56,7 +56,7 @@
 Ps/Pe properties, though ASCII angle brackets are a notable exception,
 since they're bidirectional but not in the Ps/Pe set.
 
-Characters with no corresponding closing characters does not qualify
+Characters with no corresponding closing character do not qualify
 as opening brackets.  This includes the second section of the BidiMirroring
 data table, as well as C<U+201A> and C<U+201E>.
 

Modified: doc/trunk/design/syn/S03.pod
==============================================================================
--- doc/trunk/design/syn/S03.pod        (original)
+++ doc/trunk/design/syn/S03.pod        Wed Apr 26 14:41:21 2006
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 8 Mar 2004
-  Last Modified: 25 Apr 2006
+  Last Modified: 26 Apr 2006
   Number: 3
-  Version: 23
+  Version: 24
 
 =head1 Changes to existing operators
 
@@ -99,9 +99,21 @@
     loop ($a = 1, $b = 2; ; $a++, $b++) {...}
 
 still works fine.  The distinction between scalar and list assignment
-is pretty much identical to the way Perl 5 does it.  If there are
-parens around the left side, or if the sigil of the variable is C<@>
-or C<%>, it's a list assignment.  Otherwise it's a scalar assignment.
+is similar to the way Perl 5 does it.  If there are parens around
+the left side, or if the variable is an array or hash, it's a list
+assignment.  Otherwise it's a scalar assignment.  One difference from
+Perl 5 is that Perl 6 does not attempt to intuit whether an lvalue
+slice is meant to be one element or several, so you must use parens
+in that case.  This is true even if you put something that is obviously
+a list as the subscript:
+
+    @x[1,2,3] = 4,5,6;         # WRONG
+    (@x[1,2,3]) = 4,5,6;       # correct
+
+These parens actually apply list context on both sides:
+
+    @x[foo()] = bar();         # foo() and bar() both in scalar context
+    (@x[foo()]) = bar();       # foo() and bar() both in list context
 
 =back
 
@@ -719,6 +731,25 @@
 
     $hacker.feed: 'Pizza and cola';
 
+This colon is a separate token.  A colon prefixing an adverb is not
+a separate token.  Therefore, under the longest-token rule,
+
+    $hacker.feed:xxx('Pizza and cola');
+
+is tokenized as an adverb applying to the method:
+
+    $hacker.feed :xxx('Pizza and cola');
+
+not as an xxx sub in the argument list of .feed:
+
+    $hacker.feed: xxx('Pizza and cola');  # wrong
+
+If you want both meanings of colon, you have to put it twice:
+
+    $hacker.feed: :xxx('Pizza and cola'), 1,2,3;
+
+(For similar reasons it's best to put whitespace after the colon of a label.)
+
 =head1 C<zip>
 
 In order to support parallel iteration over multiple arrays, Perl 6 has
@@ -782,12 +813,12 @@
     method postfix      . .+ .? .* .() .[] .{} .«» .=
     autoincrement       ++ --
     exponentiation      **
-    symbolic unary      ! + - ~ ? $ @ % & * ** +^ ~^ ?^ \ ^ = -e -r -w -x etc.
+    symbolic unary      ! + - ~ ? $ @ % & * ** +^ ~^ ?^ \ ^ =
     multiplicative      * / % x xx +& +< +> ~& ~< ~>
     additive            + - ~ +| +^ ~| ~^
     junctive and (all)  &
     junctive or (any)   | ^
-    named unary         rand sleep abs etc.
+    named unary         rand sleep abs etc. -e -r -w -x etc.
     nonchaining binary  but does cmp <=> .. ^.. ..^ ^..^ ff ^ff ff^ ^ff^ fff 
^fff etc.
     chaining binary     != == < <= > >= ~~ !~ eq ne lt le gt ge =:= ===
     tight and           &&

Reply via email to