Re: [svn:perl6-synopsis] r11504 - doc/trunk/design/syn

2006-08-28 Thread Markus Laire

On 8/28/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:

+Elsewhere it is equivalent to a parenthesisized list of strings:
+C<< ('foo','bar') >>.  Since parentheses are generally reserved just for
+precedence grouping, they merely autointepolate in list context.  Therefore
+
+@a = 1, < 2 3 >, 4;
+
+is equivalent to
+
+@a = 1, 2, 3, 4;


Shouldn't this be
   @a = 1, '2', '3', 4;

--
Markus Laire


Re: [svn:perl6-synopsis] r11504 - doc/trunk/design/syn

2006-08-28 Thread Smylers
[EMAIL PROTECTED] writes:

> New Revision: 11504
>doc/trunk/design/syn/S02.pod
> 
> +C<< ('foo','bar') >>.  Since parentheses are generally reserved just for
> +precedence grouping, they merely autointepolate in list context.  Therefore

Typo: "autointepolate".

Smylers


[svn:perl6-synopsis] r11504 - doc/trunk/design/syn

2006-08-27 Thread larry
Author: larry
Date: Sun Aug 27 22:52:36 2006
New Revision: 11504

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

Log:
Clarification on syntactic mapping of  and  to ('a','b') and ('c').


Modified: doc/trunk/design/syn/S02.pod
==
--- doc/trunk/design/syn/S02.pod(original)
+++ doc/trunk/design/syn/S02.podSun Aug 27 22:52:36 2006
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 10 Aug 2004
-  Last Modified: 15 Aug 2006
+  Last Modified: 27 Aug 2006
   Number: 2
-  Version: 65
+  Version: 66
 
 This document summarizes Apocalypse 2, which covers small-scale
 lexical items and typological issues.  (These Synopses also contain
@@ -1394,6 +1394,43 @@
 
 The C quote operator now has a bracketed form: C<<  >>.
 When used as a subscript it performs a slice equivalent to C<{'foo','bar'}>.
+Elsewhere it is equivalent to a parenthesisized list of strings:
+C<< ('foo','bar') >>.  Since parentheses are generally reserved just for
+precedence grouping, they merely autointepolate in list context.  Therefore
+
+@a = 1, < 2 3 >, 4;
+
+is equivalent to
+
+@a = 1, 2, 3, 4;
+
+In scalar context, though, the implied parentheses are not removed, so
+
+$a = < a b >;
+
+is equivalent to:
+
+$a = ('a','b');
+
+which, because the list is in scalar context, is autopromoted an Array object:
+
+$a = ['a','b'];
+
+Likewise, if bound to a scalar parameter, C<<  >> will be
+treated as a single list object, but if bound to a slurpy parameter,
+it will auto-flatten.
+
+But note that under the parenthesis-rewrite rule, a single value will
+still act like a scalar value.  These are all the same:
+
+$a = < a >;
+$a = ('a');
+$a = 'a';
+
+And if bound to a scalar parameter, no list is constructed.
+To force a single value to become a list object in scalar context,
+you should use C<< ['a'] >> for clarity as well as correctness.
+
 Much like the relationship between single quotes and double quotes, single
 angles do not interpolate while double angles do.  The double angles may
 be written either with French quotes, C<«$foo @bar[]»>, or