Re: r29129 - docs/Perl6/Spec

2009-11-19 Thread Thom Boyer
I'm curious about the change from "blorst" to "blast." I quickly figured out
that "blorst" was
derived from "BLock OR STatement" (as S04 used to say: "In fact,
most of these phasers will take either a block or a statement (known as
a I in the vernacular)).

The best that I can figure for "blast" is "BLock And STatement." But using
AND
seems less correct to me. Furthermore, "blast" is less likely to google up
the results I need.

So, what exactly _is_ the derivation of "blast"?

-- Forwarded message --
From: 
Date: Wed, Nov 18, 2009 at 9:34 PM
Subject: r29129 - docs/Perl6/Spec
To: perl6-langu...@perl.org


Author: lwall
Date: 2009-11-19 05:34:29 +0100 (Thu, 19 Nov 2009)
New Revision: 29129

Modified:
  docs/Perl6/Spec/S04-control.pod
Log:
[S04] as several folks have suggested, rename "blorst" to "blast"


Modified: docs/Perl6/Spec/S04-control.pod
===
--- docs/Perl6/Spec/S04-control.pod 2009-11-18 18:51:35 UTC (rev 29128)
+++ docs/Perl6/Spec/S04-control.pod 2009-11-19 04:34:29 UTC (rev 29129)
@@ -1226,8 +1226,8 @@
our $temphandle = START maketemp();

 In fact, most of these phasers will take either a block or a statement
-(known as a I in the vernacular).
-This can be particularly useful to expose a lexically scoped
+(known as a I in the vernacular).  The statement form can be
+particularly useful to expose a lexically scoped
 declaration to the surrounding context.  Hence these declare the same
 variables with the same scope as the preceding example, but run the
 statements as a whole at the indicated time:


Re: r29129 - docs/Perl6/Spec

2009-11-19 Thread jerry gay
On Thu, Nov 19, 2009 at 08:17, Thom Boyer  wrote:
> I'm curious about the change from "blorst" to "blast." I quickly figured out
> that "blorst" was
> derived from "BLock OR STatement" (as S04 used to say: "In fact,
> most of these phasers will take either a block or a statement (known as
> a I in the vernacular)).
>
> The best that I can figure for "blast" is "BLock And STatement." But using
> AND
> seems less correct to me. Furthermore, "blast" is less likely to google up
> the results I need.
>
> So, what exactly _is_ the derivation of "blast"?
>
perhaps 'BLock or A STatement' or 'BLock, Alternatively, STatement',
or you can simply think of it as misspelled but nicer on the ears than
the eyes.
~jerry


Re: r29129 - docs/Perl6/Spec

2009-11-19 Thread Geoffrey Broadwell
I kinda like 'blorst'.  The word makes me think of a warm stew on a cold
winter night.  And I agree with the searchability advantage of 'blorst'
as well.




-'f




Rakudo Perl 6 development release #23 ("Lisbon")

2009-11-19 Thread Carl Mäsak
Announce: Rakudo Perl 6 development release #23 ("Lisbon")

On behalf of the Rakudo development team, I'm pleased to announce the
November 2009 development release of Rakudo Perl #23 "Lisbon".
Rakudo is an implementation of Perl 6 on the Parrot Virtual Machine
(see http://www.parrot.org).  The tarball for the November 2009 release
is available from http://github.com/rakudo/rakudo/downloads

Due to the continued rapid pace of Rakudo development and the frequent
addition of new Perl 6 features and bugfixes, we recommend building Rakudo
from the latest source, available from the main repository at github.
More details are available at http://rakudo.org/how-to-get-rakudo.

Rakudo Perl follows a monthly release cycle, with each release code
named after a Perl Mongers group.  The November 2009 release is code
named "Lisbon" for Lisbon.pm, who did a marvellous job arranging this
year's YAPC::EU.

Shortly after the October 2009 (#22) release, the Rakudo team
began a new branch of Rakudo development ("ng") that refactors
the grammar to much more closely align with STD.pm as well as
update some core features that have been difficult to achieve
in the master branch [1, 2].  Most of our effort for the past month
has been in this new branch, but as of the release date the new
version had not sufficiently progressed to be the release copy.
We expect to have the new version in place in the December 2009 release.

This release of Rakudo requires Parrot 1.8.0.  One must still
perform "make install" in the Rakudo directory before the "perl6"
executable will run anywhere other than the Rakudo build directory.
For the latest information on building and using Rakudo Perl, see the
readme file section titled "Building and invoking Rakudo".

Some of the specific changes and improvements occuring with this
release include:

* Rakudo is now passing 32,753 spectests, an increase of 171 passing
  tests since the October 2009 release.  With this release Rakudo is
  now passing 85.5% of the available spectest suite.

* As mentioned above, most development effort for Rakudo in November
  has taken place in the "ng" branch, and will likely be reflected
  in the December 2009 release.

* Rakudo now supports unpacking of arrays, hashes and objects in
  signatures

* Rakudo has been updated to use Parrot's new internal calling conventions,
  resulting in a slight performance increase.

The development team thanks all of our contributors and sponsors for
making Rakudo Perl possible.  If you would like to contribute,
see http://rakudo.org/how-to-help , ask on the perl6-compi...@perl.org
mailing list, or ask on IRC #perl6 on freenode.

The next release of Rakudo (#24) is scheduled for December 17, 2009.
A list of the other planned release dates and codenames for 2009 is
available in the "docs/release_guide.pod" file.  In general, Rakudo
development releases are scheduled to occur two days after each
Parrot monthly release.  Parrot releases the third Tuesday of each month.

Have fun!

[1] http://use.perl.org/~pmichaud/journal/39779
[2] http://use.perl.org/~pmichaud/journal/39874


r29134 - docs/Perl6/Spec

2009-11-19 Thread pugs-commits
Author: lwall
Date: 2009-11-20 03:40:33 +0100 (Fri, 20 Nov 2009)
New Revision: 29134

Modified:
   docs/Perl6/Spec/S02-bits.pod
   docs/Perl6/Spec/S03-operators.pod
   docs/Perl6/Spec/S04-control.pod
Log:
[S02,3,4] attempt to rename void context to sink context and see if it clogs


Modified: docs/Perl6/Spec/S02-bits.pod
===
--- docs/Perl6/Spec/S02-bits.pod2009-11-19 21:58:32 UTC (rev 29133)
+++ docs/Perl6/Spec/S02-bits.pod2009-11-20 02:40:33 UTC (rev 29134)
@@ -1105,21 +1105,21 @@
 
 Since the construct is in the form of a type cast, the parens are required.
 If that syntax is unappealing or you wish to run multiple statements
-in a block, it happens that the C statement prefix also converts
+in a block, it happens that the C statement prefix also converts
 any value to C, so the examples above can be expressed
 without parentheses:
 
-@inclist = map { $_ + 1 }, @list || void warn 'Empty @list!';
+@inclist = map { $_ + 1 }, @list || sink warn 'Empty @list!';
 
-@inclist = do for @list || void { warn 'Empty @list!'; $warnings++; } {
+@inclist = do for @list || sink { warn 'Empty @list!'; $warnings++; } {
 $_ + 1;
 }
 
-@inclist = do map { $_ + 1 }, @list or void warn 'Empty @list!';
+@inclist = do map { $_ + 1 }, @list or sink warn 'Empty @list!';
 
 @inclist = do for @list {
 $_ + 1;
-} or void { warn 'Empty @list!'; $warnings++; }
+} or sink { warn 'Empty @list!'; $warnings++; }
 
 =head2 Immutable types
 
@@ -3805,7 +3805,7 @@
 
 =item *
 
-Perl still has the three main contexts: void, item (scalar), and list.
+Perl still has the three main contexts: sink (void), item (scalar), and list.
 
 =item *
 

Modified: docs/Perl6/Spec/S03-operators.pod
===
--- docs/Perl6/Spec/S03-operators.pod   2009-11-19 21:58:32 UTC (rev 29133)
+++ docs/Perl6/Spec/S03-operators.pod   2009-11-20 02:40:33 UTC (rev 29134)
@@ -2682,7 +2682,7 @@
 
 $a = 1, 2, 3;
 
-because the 2 and 3 will be seen as being in a void context, as if
+because the 2 and 3 will be seen as being in a sink (void) context, as if
 you'd said:
 
 ($a = 1), 2, 3;

Modified: docs/Perl6/Spec/S04-control.pod
===
--- docs/Perl6/Spec/S04-control.pod 2009-11-19 21:58:32 UTC (rev 29133)
+++ docs/Perl6/Spec/S04-control.pod 2009-11-20 02:40:33 UTC (rev 29134)
@@ -678,23 +678,23 @@
 
 A variant of C is C.  Like C, it is followed by a
 statement or block, and executes it once.  Unlike C, it evaluates
-the statement or block in void context; its return value is instead
+the statement or block in sink (void) context; its return value is instead
 specified by calling the C list prefix operator one or more times
 within the dynamic scope of the C.  The C function's
 signature is like that of C; it merely captures the C
 of its arguments without imposing any additional constraints (in the
 absence of context propagation by the optimizer).  The value returned
 by the C to its own context is that same C object (which
-is ignored when the C is in void context).  Regardless of the
+is ignored when the C is in sink context).  Regardless of the
 C's context, the C object is also added to the list of
 values being gathered, which is returned by the C in the form
 of a lazy slice, with each slice element corresponding to one C
 capture.  (A list of Cs is lazily flattened in normal list context,
 but you may "unflatten" it again with a C<@@()> contextualizer.)
 
-Because C evaluates its block or statement in void context,
-this typically causes the C function to be evaluated in void
-context.  However, a C function that is not in void context
+Because C evaluates its block or statement in sink context,
+this typically causes the C function to be evaluated in sink
+context.  However, a C function that is not in sink context
 gathers its arguments I and also returns them unchanged.
 This makes it easy to keep track of what you last "took":
 
@@ -727,8 +727,8 @@
 # @@$c produces (1,10),(2,20) -- list of Captures, a 2-D list.
 # $$c produces ((1,10),(2,20)) -- the saved Capture itself as one item in 
item context.
 
-Note that the C itself is in void context in this example because
-the C loop is in void context.
+Note that the C itself is in sink context in this example because
+the C loop is in sink context.
 
 A C is not considered a loop, but it is easy to combine with a loop
 statement as in the examples above.
@@ -784,7 +784,7 @@
 X
 
 Other similar forms, where a keyword is followed by code to be controlled by 
it, may also take bare statements,
-including C, C, C, C, C, and C.  
These constructs
+including C, C, C, C, C, and C.  
These constructs
 establish a dynamic scope without necessarily establishing a lexical
 scope.  (You can always establish a lexical scope explicitly by using
 the block

r29140 - docs/Perl6/Spec

2009-11-19 Thread pugs-commits
Author: lwall
Date: 2009-11-20 05:31:36 +0100 (Fri, 20 Nov 2009)
New Revision: 29140

Modified:
   docs/Perl6/Spec/S12-objects.pod
Log:
[S12] start process of distingishing abstract ~ from concrete .Str
(likewise for + vs .Num)


Modified: docs/Perl6/Spec/S12-objects.pod
===
--- docs/Perl6/Spec/S12-objects.pod 2009-11-20 04:24:48 UTC (rev 29139)
+++ docs/Perl6/Spec/S12-objects.pod 2009-11-20 04:31:36 UTC (rev 29140)
@@ -1889,7 +1889,7 @@
 
 Metamethods for objects are named with interrogative pronouns in uppercase:
 
-WHATthe type object of the type, stringifies to short name ~ '()'
+WHATthe type object of the type, .Str returns MyClass()
 WHICH   the object's identity value
 WHO the package supporting the object, stringifies to long name
 WHERE   the memory address of the object
@@ -1922,10 +1922,14 @@
 as the first argument to methods of the metaclass, while the other
 forms require you to pass this explicitly.
 
-Note that C appends C<()> to indicate emptiness.  Use C<.perl> to get the
-bare name from a type object.
+Note that C appends C<()> to the name to indicate emptiness.
+Use C<.perl> to get the bare name from a type object.  Use one of
+C<.Stringy>, C<< prefix:<~> >>, or C<< infix:<~> >> to get the Perl5ish
+semantics of returning the empty string (with a warning) on any type
+object.  (There is no "undef", in Perl 6; type objects provide typed
+undefs instead.)
 
-In general, use of these in ordinary code should be a red flag that
+In general, use of these uppercased accessors in ordinary code should be a red 
flag that
 Something Very Strange is going on.  (Hence the allcaps.)  Most code
 should use Perl 6's operators that make use of this information
 implicitly.  For instance, instead of



r29141 - docs/Perl6/Spec

2009-11-19 Thread pugs-commits
Author: lwall
Date: 2009-11-20 05:34:57 +0100 (Fri, 20 Nov 2009)
New Revision: 29141

Modified:
   docs/Perl6/Spec/S06-routines.pod
   docs/Perl6/Spec/S09-data.pod
Log:
[S06,S09] rename 'is ref' to 'is parcel' and make it synonymous with \


Modified: docs/Perl6/Spec/S06-routines.pod
===
--- docs/Perl6/Spec/S06-routines.pod2009-11-20 04:31:36 UTC (rev 29140)
+++ docs/Perl6/Spec/S06-routines.pod2009-11-20 04:34:57 UTC (rev 29141)
@@ -16,8 +16,8 @@
 
 Created: 21 Mar 2003
 
-Last Modified: 12 Nov 2009
-Version: 123
+Last Modified: 19 Nov 2009
+Version: 124
 
 This document summarizes Apocalypse 6, which covers subroutines and the
 new type system.
@@ -480,9 +480,9 @@
 If you have a readonly parameter C<$ro>, it may never be passed on to
 a C parameter of a subcall, whether or not C<$ro> is currently
 bound to a mutable object.  It may only be rebound to readonly or
-copy parameters.  It may also be rebound to a C parameter (see
-"C" below), but modification will fail as in the case where
-an immutable value is bound to a C parameter.
+copy parameters.  It may also be rebound to a parcel parameter (see
+"C" below), but modification will fail as in the case where
+an immutable value is bound to a C parameter.
 
 Aliases of C<$ro> are also readonly, whether generated explicitly with C<:=>
 or implicitly within a C object (which are themselves immutable).
@@ -1593,7 +1593,7 @@
 other placeholders or signature.  Any bare block without placeholders
 really has a parameter like this:
 
--> $_ is ref = OUTER::<$_> { .mumble }
+-> \$_ = OUTER::<$_> { .mumble }
 
 (However, statement control C notices this and passes no argument,
 so C<$_> ends up being bound to the outer C<$_> anyway.)
@@ -1997,14 +1997,28 @@
 (The variadic array as a whole is always modifiable, but such
 modifications have no effect on the original argument list.)
 
-=item C
+=item C
 
-Specifies that the parameter is passed by reference (that is,
-as an C).  You may modify the argument, but only if
-argument is already a suitable lvalue.  Unlike C, no attempt
-at autovivification is made, so unsuitable lvalues will throw an
-exception if you try to modify them within the body of the routine.
+Specifies that the parameter is passed as a "parcel", that is, as a
+raw reference to a "parenthetical cell" or "parse list", an argument
+object that has not yet had a context imposed.  (It may or may not
+actually be of the C type, since a C containing only
+one object automatically unwraps itself to be that object directly.)
+In other words, this provides for lazy contextualization even through
+function calls.  This is important if you wish to pass the parameter
+onward to something else that will determine its context later.
 
+You may modify the argument, but only if argument is already a suitable
+lvalue since, unlike C, no attempt at autovivification is made,
+so unsuitable lvalues will throw an exception if you try to modify
+them within the body of the routine.  That is, if autovivification
+happens, it happens at the point of use, not at the point of binding.
+
+For better visual distinction, such a parameter is declared by
+prefixing with a backslash rather than by using C directly.
+The backslash is also more succint; the trait is there primarily
+for introspection.
+
 =item C
 
 Specifies that the parameter receives a distinct, read-writable copy of the
@@ -2039,9 +2053,9 @@
   readonly   True if the parameter has C trait
   rw True if the parameter has C trait
   copy   True if the parameter has C trait
-  refTrue if the parameter has C trait
   named  True if the parameter is to be passed named
   named_namesList of names a named parameter can be passed as
+  parcel True if the parameter is too lazy to contextualize
   slurpy True if the parameter is slurpy
   optional   True if the parameter is optional
   defaultA closure returning the default value

Modified: docs/Perl6/Spec/S09-data.pod
===
--- docs/Perl6/Spec/S09-data.pod2009-11-20 04:31:36 UTC (rev 29140)
+++ docs/Perl6/Spec/S09-data.pod2009-11-20 04:34:57 UTC (rev 29141)
@@ -829,7 +829,7 @@
 Within any kind of bracketing construct, semicolon notionally separates
 the sublists of a multidimensional slice, the interpretation of
 which depends on the context.  Such a semicolon list puts each of its
-sublists into a C, deferring the context of the sublist until
+sublists into a C, deferring the context of the sublist until
 it is bound somewhere.  The storage of these sublists is hidden in
 the inner workings of the list.  It does not produce a list of lists
 unless the list as a whole is bound into a slice context.
@@ -1245,8 +1245,8 @@
 Note that assignment is treated the same way as binding to a copy container,
 so it does not autovivify

Re: r29111 - docs/Perl6/Spec

2009-11-19 Thread Darren Duncan

Darren Duncan wrote:

Moritz Lenz wrote:

FatRat.new(45207196, 10**37);

And note that a decimal-specific answer isn't what I want, since I 
want  something that would also work for this:


  45207196 * 11 ** -37


FatRat.new(45207196, 11**37);


Solomon Foster wrote:

What's your objection to FatRat.new(45207196, 11 ** 37)?


Well, for one thing, that's not the same value.  I had a "-37" as the 
exponent, designating a small non-integer rational value, whereas the 
FatRat example had flipped this around to "37", not the same value.


Now I'm sure the format you showed looks great, but my concern is, does 
simply saying this:


  11 ** -37

... result in a FatRat and if not then how do I write "11^-37" in Perl 6 
such that the resulting object retains the full precision of the value?


Actually, I realize now what was going on with that suggestion, and that it 
actually was valid for the case I mentioned, being presumably equal to:


  45207196 * FatRat.new( 1, 11**37 )

However, the ideal situation would be a format I could use unchanged regardless 
of whether the exponent (-37) is positive or negative.


Unless there is one, it would seem I might have to do this in a generic setting, 
given 3 integers $mantis, $radix, $exp but $radix is always >= 2:


  $exp < 0 ?? FatRat.new( $mantis, $radix**$exp ) !! $mantis * $radix**$exp

What I think might be ideal though is if the FatRat.new() could be a multi that 
also has a 3-param variant, so that something like this would work:


  FatRat.new( $mantissa, $radix, $exponent )

I would be clear that this 3-param variant would be 3 integers, including the 
mantissa, because that guarantees that the new FatRat would be an exact multiple 
of $radix**$exponent.


-- Darren Duncan


r29142 - in docs/Perl6/Spec: . S32-setting-library

2009-11-19 Thread pugs-commits
Author: lwall
Date: 2009-11-20 07:12:28 +0100 (Fri, 20 Nov 2009)
New Revision: 29142

Modified:
   docs/Perl6/Spec/S02-bits.pod
   docs/Perl6/Spec/S03-operators.pod
   docs/Perl6/Spec/S04-control.pod
   docs/Perl6/Spec/S05-regex.pod
   docs/Perl6/Spec/S06-routines.pod
   docs/Perl6/Spec/S10-packages.pod
   docs/Perl6/Spec/S11-modules.pod
   docs/Perl6/Spec/S16-io.pod
   docs/Perl6/Spec/S17-concurrency.pod
   docs/Perl6/Spec/S19-commandline.pod
   docs/Perl6/Spec/S28-special-names.pod
   docs/Perl6/Spec/S29-functions.pod
   docs/Perl6/Spec/S32-setting-library/IO.pod
Log:
[Spec] slaughter various confusing overloadings of the term 'context'
contextual variables are now dynamic variables
specific dynamic contexts are now just call frames
(for now we've left alone 'context' used as in 'context switching')


Modified: docs/Perl6/Spec/S02-bits.pod
===
--- docs/Perl6/Spec/S02-bits.pod2009-11-20 04:34:57 UTC (rev 29141)
+++ docs/Perl6/Spec/S02-bits.pod2009-11-20 06:12:28 UTC (rev 29142)
@@ -13,8 +13,8 @@
 
 Created: 10 Aug 2004
 
-Last Modified: 18 Nov 2009
-Version: 190
+Last Modified: 19 Nov 2009
+Version: 191
 
 This document summarizes Apocalypse 2, which covers small-scale
 lexical items and typological issues.  (These Synopses also contain
@@ -996,7 +996,7 @@
 (However, C<@array[**]> means the same thing because (as with C<...>
 above), the subscript operator will interpret bare C<**> as meaning
 all the subscripts, not the list of dimension sizes.  The meaning of
-C is always controlled by its immediate context.)
+C is always controlled by the first context it is bound into.)
 
 Other uses for C<*> and C<**> will doubtless suggest themselves
 over time.  These can be given meaning via the MMD system, if not
@@ -1640,7 +1640,7 @@
 $.foo   object attribute public accessor
 $^foo   self-declared formal positional parameter
 $:foo   self-declared formal named parameter
-$*foo   contextualizable global variable
+$*foo   dynamically overridable global variable
 $?foo   compiler hint variable
 $=foo   Pod variable
 $  match variable, short for $/{'foo'}
@@ -1740,9 +1740,7 @@
 force context, so these also work:
 
 @x[$(g())] # item context for g()
-@x[$ g()]  # item context for g()
 %x{$(g())} # item context for g()
-%x{$ g()}  # item context for g()
 
 But note that these don't do the same thing:
 
@@ -1779,17 +1777,26 @@
 into a C with 3 positionals and one named argument
 in preparation for binding.
 
-=item *
+A parcel may be captured into an object with backslashed parens:
 
-An argument list may be captured into an object with backslashed parens:
-
 $args = \(1,2,3,:mice)
 
-Values in a C object are parsed as ordinary expressions, then marked 
as
-positional or named.  If the first positional is followed by a colon instead of
-a comma, it is marked as the invocant in case it finds itself in a context
-that cares.
+Values in the C object are parsed as ordinary expressions,
+and any functions mentioned are called, with their results placed
+as a single subparcel within the outer parcel.  Whether they
+are subsequently flattened will depend on the eventual binding.
 
+=item *
+
+If a C is used as a list of arguments, it will be transformed
+into a C objects, which is much like a C but has its
+arguments divvied up into positional and named subsets for faster
+binding.  (Usually this transformation happens at compile time.)
+If the first positional is followed by a colon instead of a comma,
+it is marked as the invocant in case it finds itself in a context
+that cares.  It's illegal to use the colon in place of the comma
+anywhere except after the first argument.
+
 Like C objects, C objects are immutable in the abstract, but
 evaluate their arguments lazily.  Before everything inside a C is
 fully evaluated (which happens at compile time when all the arguments are
@@ -1816,7 +1823,7 @@
 to operate on the current match object; similarly C<@()> and C<%()> can
 extract positional and named submatches.
 
-C objects fill the ecological niche of references in Perl 6.
+C and C objects fill the ecological niche of references in 
Perl 6.
 You can think of them as "fat" references, that is, references that
 can capture not only the current identity of a single object, but
 also the relative identities of several related objects.  Conversely,
@@ -2030,13 +2037,13 @@
 print $( foo() )# foo called in item context
 print @@( foo() )   # foo called in slice context
 
-In declarative contexts bare sigils may be used as placeholders for
+In declarative constructs bare sigils may be used as placeholders for
 anonymous variables:
 
 my ($a, $, $c) = 1..3;
 print unless (state $)++;
 
-Outside of declarative contexts you may use C<*> for a placeholder:
+Outside of declarative constructs you may use C

r29143 - docs/Perl6/Spec

2009-11-19 Thread pugs-commits
Author: lwall
Date: 2009-11-20 08:10:40 +0100 (Fri, 20 Nov 2009)
New Revision: 29143

Modified:
   docs/Perl6/Spec/S03-operators.pod
Log:
[S03] tweaks from TheDamian++
Various coercion clarifications


Modified: docs/Perl6/Spec/S03-operators.pod
===
--- docs/Perl6/Spec/S03-operators.pod   2009-11-20 06:12:28 UTC (rev 29142)
+++ docs/Perl6/Spec/S03-operators.pod   2009-11-20 07:10:40 UTC (rev 29143)
@@ -16,7 +16,7 @@
 Created: 8 Mar 2004
 
 Last Modified: 19 Nov 2009
-Version: 176
+Version: 177
 
 =head1 Overview
 
@@ -24,8 +24,8 @@
 
 =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
+Perl 6 has about the same number of precedence levels as Perl 5,
+but they're differently arranged in spots.  Here we list the
 levels from "tightest" to "loosest", along with a few examples of
 each level:
 
@@ -613,9 +613,10 @@
 Unlike in Perl 5, where C<+> is a no-op, this operator coerces to
 numeric context in Perl 6.  (It coerces only the value, not the
 original variable.)  For values that do not already do the
-C role, the narrowest appropriate type of C, C, or
+C role, the narrowest appropriate type of C, C, C, or
 C will be returned; however, string containing two integers
-separated by a C will be returned as a C.  Exponential notation
+separated by a C will be returned as a C (or a C if the
+denominator overflows an C).  Exponential notation
 and radix notations are recognized.
 
 =item *
@@ -750,22 +751,18 @@
 
 C<< infix:<%> >>, modulus
 
-$x % $mod
+$x % $y
 
-Coerces to C (or C as an optimization) before performing C.
-That is, has results equivalent to:
+If necessary, coerces non-numeric arguments to an appropriate C type,
+then calculates the modulus, which is defines as:
 
-floor( Num($x) / Num($y) )
-
-Also preserves the identity:
-
 $x % $y == $x - floor($x / $y) * $y
 
 =item *
 
 C<< infix: >>, generic modulus
 
-$x mod $mod
+$x mod $y
 
 Dispatches to the C<< infix: >> multi most appropriate to
 the operand types, typically returning a value of the same type.
@@ -912,7 +909,8 @@
 If the count is less than 1, returns the null string.
 The count may not be C<*> because Perl 6 does not support
 infinite strings.  (At least, not yet...)  Note, however, that an
-infinite string may be emulated with C.
+infinite string may someday be emulated with C,
+in which case C<$string x *> may be a shorthand for that.
 
 =item *
 
@@ -1020,22 +1018,17 @@
 
 C<< prefix: >>
 
-Coerces to type C.  Floor semantics are used for fractional
-values, including strings that appear to express fractional values.
-That is, C must have the same result as C in all
-cases.  All implicit conversions to integer use the same semantics.
+Deprecated, use the C coercion or the C function.
 
-(Note that, despite the fact that C is a valid native type
-name, this function does not express conversion to that native type.
-Such subtype conversions are done automatically upon assignment to
-a subtyped container, and fail if the container cannot hold the value.)
-
 =item *
 
 C<< prefix: >>
 
-Suspends the current thread of execution for the specified number of seconds,
-which may be fractional.
+Coerces to an appropriate C type, then suspends the current
+thread of execution for the specified number of seconds, which
+may be fractional.  Remember that although a C is capable
+of attosecond precision, your computer is probably not capable of
+attosecond accuracy.
 
 =item *
 
@@ -1367,7 +1360,7 @@
 the appearance of being parsed as trailing unary operators at a
 pseudo-precedence level slightly tighter than item assignment.
 (They're not officially "postfix" operators
-because those require the absense of whitespace, and these allow whitespace.
+because those require the absence of whitespace, and these allow whitespace.
 These adverbs insert themselves in the spot where the parser is
 expecting an infix operator, but the parser continues to look for
 an infix after parsing the adverb and applying it to the previous
@@ -1559,6 +1552,10 @@
 explicitly if there is an explicit signature, or pull them out of C<%_>
 rather than C<@_> if there is no explicit signature.
 
+[It's likely this operator will be removed from the core Perl 6 language
+and only supplied by the translator as a macro, so don't write any new
+code with it.]
+
 =item *
 
 C<< infix:<:> >>, the invocant marker
@@ -3192,7 +3189,8 @@
 Since use of C objects in item context is usually
 non-sensical, a C object used as an operand for scalar operators
 will generally attempt to distribute the operator to its endpoints and
-return another suitably modified C instead, much like a junction of two 
items.  (Notable exceptions
+return another suitably modified C instead, much like a junction of two 
items,
+only with proper interval semantics.  (Notable exceptions to th

"deprecated" (was Re: r29143 ...)

2009-11-19 Thread Darren Duncan

pugs-comm...@feather.perl6.nl wrote:

@@ -1020,22 +1018,17 @@
 
 C<< prefix: >>
 
-Coerces to type C.  Floor semantics are used for fractional

-values, including strings that appear to express fractional values.
-That is, C must have the same result as C in all
-cases.  All implicit conversions to integer use the same semantics.
+Deprecated, use the C coercion or the C function.


Why would the Perl 6 spec contain anything deprecated rather than simply not 
having it at all?


Or do you mean "deprecated" as in the parser will explicitly recognize it and 
die with a helpful error message, such as it does for Perl 5's "=~" to catch 
brainos?


If you mean the latter, is there some central place (say in Synopsis 2) that 
talks about this, such as in a "terminology" section?  "When the Perl 6 spec 
uses the word ... it means ..."


-- Darren Duncan