Wait. There are two different phases called START and BEGIN? That's going to be a little confusing.... Which one comes first? Are there both END and STOP phases as well?
On 1/22/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Author: larry > Date: Tue Jan 22 16:29:21 2008 > New Revision: 14494 > > Modified: > doc/trunk/design/syn/S03.pod > > Log: > More tweaks, typos, clarification that "our" differs from in Perl 5 > > > Modified: doc/trunk/design/syn/S03.pod > ============================================================================== > --- doc/trunk/design/syn/S03.pod (original) > +++ doc/trunk/design/syn/S03.pod Tue Jan 22 16:29:21 2008 > @@ -23,7 +23,7 @@ > =head1 Operator precedence > > Not counting terms and terminators, Perl 6 has 23 operator precedence > -levels (same as Perl 5, but differently arranged). Here we list the > +levels (same as Perl 5, but differently arranged). Here we list the > levels from "tightest" to "loosest", along with a few examples of > each level: > > @@ -1348,7 +1348,7 @@ > > =item * > > -C<< infix:«p5=>» >>, the Perl 5 fatarrow > +C<< infix:«p5=>» >>, the Perl 5 fatarrow > > This operator, which behaves exactly like the Perl 5 fatarrow in being > equivalent to a comma, is purely for easier migration from Perl 5 > @@ -3580,14 +3580,15 @@ > > Variable declarators such as C<my> now take a I<signature> as their > argument. (The syntax of function signatures is described more fully in > S06.) > -As in the examples above, the parentheses around the signature may be > omitted for a > + > +The parentheses around the signature may be omitted for a > simple declaration that declares a single variable, along with its > associated type, traits and the initializer: > > - constant $foo = 123; # okay: initializes $foo to 123 > - constant ($foo = 123); # same thing (with explicit parens) > - constant :($foo = 123); # same thing (full Signature form) > - constant ($foo) = 123; # wrong: constants cannot be assigned to > + constant Dog $foo is woof = 123; # okay: initializes $foo to 123 > + constant (Dog $foo is woof = 123); # same thing (with explicit parens) > + constant :(Dog $foo is woof = 123); # same thing (full Signature form) > + constant (Dog $foo is woof) = 123; # wrong: constants cannot be > assigned to > > Each declarator can take an initializer following an equals > sign (which should not be confused with a normal assignment, because > @@ -3600,11 +3601,15 @@ > state $foo = 1; # happens at START time > constant $foo = 1; # happens at BEGIN time > > +(Note that the semantics of C<our> are different from Perl 5, where the > +initialization happens at the same time as a C<my>. To get the same > +effect in Perl 6 you'd have to say "c<(our $foo) = 1;>" instead.) > + > If you do not initialize a container, it starts out undefined at the > beginning of its natural lifetime. (In other words, you can't use > -the old Perl 5 trick of "C<my $foo if 0>" to get a static variable, > +the old Perl 5 trick of "C<my $foo if 0>" to get a static variable, > because a C<my> variable starts out uninitialized every time through > -in Perl 6 rather than retaining its previous value.) Native integer > +in Perl 6 rather than retaining its previous value.) Native integer > containers that do not support the concept of undefined should be > initialized to 0 instead. (Native floating-point containers are > by default initialized to C<NaN>.) Typed object containers start > -- Mark J. Reed <[EMAIL PROTECTED]>