Front page | perl.perl6.language |
Postings from August 2006
[svn:perl6-synopsis] r11504 - doc/trunk/design/syn
Thread Next
From:
larry
Date:
August 27, 2006 22:52
Subject:
[svn:perl6-synopsis] r11504 - doc/trunk/design/syn
Message ID:
20060828055237.697E7CB9BB@x12.develooper.com
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 <a b> and <c> to ('a','b') and ('c').
Modified: doc/trunk/design/syn/S02.pod
==============================================================================
--- doc/trunk/design/syn/S02.pod (original)
+++ doc/trunk/design/syn/S02.pod Sun Aug 27 22:52:36 2006
@@ -12,9 +12,9 @@
Maintainer: Larry Wall <larry@wall.org>
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<qw/foo bar/> quote operator now has a bracketed form: C<< <foo bar> >>.
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<< <a b> >> 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
Thread Next
-
[svn:perl6-synopsis] r11504 - doc/trunk/design/syn
by larry