On Wed, Jan 02, 2008 at 08:52:09AM -0800, Larry Wall wrote:
> On Tue, Jan 01, 2008 at 04:26:29PM -0600, Patrick R. Michaud wrote:
> : I'm working on S03 tests, and S03 says:
> :
> : Perl 6 also supports Str decrement with similar semantics,
> : simply by running the cycles the other direction. However,
> : leftmost characters are never removed, and the decrement
> : fails when you reach a string like "aaa" or "000".
> :
> : Is this "fails" as in "throws an Exception", "mutates into an
> : undef / Failure / Exception object", or something else entirely?
>
> In the context of normal Perl expressions, "fails" should always be
> read as "returns a Failure object". Which, of course, is immediately
> fatal under "use fatal". Otherwise it's lazily fatal.
Ah, you answered my followup question ("Is this meaning of 'fails'
fairly consistent?"). Excellent.
Howeven, "returns a Failure object" in this context (autodecrement)
still seems a bit ambiguous, because the return values of autoincrement
and autodecrement are often ignored, as in:
my $s = 'A00';
$s--;
say $s;
So, what happens in the above? Does $s become a Failure object?
Does autodecrement recognize that it's in void context and thus
becomes immediately fatal?
> In fact, the places in the spec that say "returns a Failure object"
> should probably be rewritten to say "fails" to keep people from
> thinking that it means something other than "fails".
Agreed -- I'll fix them as I find them (or point them out if I'm uncertain).
Thanks again!
Pm