Author: lwall
Date: 2010-03-19 21:35:31 +0100 (Fri, 19 Mar 2010)
New Revision: 30128

Modified:
   docs/Perl6/Spec/S06-routines.pod
Log:
[S06] spec the \| parcel parameter syntax


Modified: docs/Perl6/Spec/S06-routines.pod
===================================================================
--- docs/Perl6/Spec/S06-routines.pod    2010-03-19 20:04:23 UTC (rev 30127)
+++ docs/Perl6/Spec/S06-routines.pod    2010-03-19 20:35:31 UTC (rev 30128)
@@ -16,8 +16,8 @@
 
     Created: 21 Mar 2003
 
-    Last Modified: 7 Mar 2010
-    Version: 129
+    Last Modified: 19 Mar 2010
+    Version: 130
 
 This document summarizes Apocalypse 6, which covers subroutines and the
 new type system.
@@ -661,7 +661,7 @@
 always has the alias C<self>.  Other styles of self can be declared
 with the C<self> pragma.
 
-If you have call of the form:
+If you have a call of the form:
 
     foo(|$capture)
 
@@ -939,6 +939,20 @@
     multi foo (|$args (Int, Bool?, *@, *%)) { reallyintfoo($args) }
     multi foo (|$args (Str, Bool?, *@, *%)) { reallystrfoo($args) }
 
+=head2 Parcel binding
+
+It is possible to bind the argument list in an even more raw form
+as a C<Parcel> object.  A signature to capture the parcel must be
+declared as:
+
+    sub foo (\|$parcel) { ... }
+
+This single parcel parameter is the only thing allowed in such a signature
+(apart from a return type).  An implementation must either be able to
+reconstruct the original parcel object from a capture, or the compiler
+must be smart enough to know when to save the original parcel object
+based on proto declarations and/or call indirection.
+
 =head2 Flattening argument lists
 
 The unary C<|> operator casts its argument to a C<Capture>

Reply via email to