Thanks for the valuable feedback, Hugo. As usual, the default response is unqualified agreement.
None of the operator examples show a typed return value. Can they? Should they?
Yes. And yes. And now one does. ;-)
:Method invocants are specified in the parameter list, with a colon :terminating the list of invocants:
Hmm, is "method" intended to refer to "method, submethod or multimethod" here? We could do with a (different) name to refer to that collection.
Agreed.
:=item C<FIRST>/C<LAST>/C<NEXT>/C<KEEP>/C<UNDO>/etc. : :Mark blocks that are to be unconditionally executed before/after :the subroutine's C<do> block. The return values of these blocks :are ignored.
s/unconditionally/conditionally/? Not sure.
Yes. I originally only had FIRST and LAST.
:Another way to modify the behavior of temporized code structures :is to give them a C<TEMP> block:
It isn't clear to me from this or the example what the effect of the TEMP block is.
Welcome to the club! ;-) I'll endeavour to explain the semantics better.
:The standard C<pair I<LIST>> function is equivalent to C<map {$^k=>$^v} I<LIST>>
That looks wrong: surely C< {$^k=>$^v} > must be parsed as a hashref here, and therefore (I guess) give a syntax error?
I don't think so. The rule is that the top level construct in the braces has to be a *list* for the braces to be a hash. C<$^k=>$^v> isn't a list (though C<$^k=>$^v,> would be). Besides, the presence of placeholders means the block must be a closure.
- print $text while $count-->0 + print $text while $count-- > 0
No way! That's my very favorite Perl pun! ;-)
Thanks again,
Damian