If you think that wantarray is harmful, you might be pleased to know that in Perl 6 there is a paradigm shift: instead of returning things depending on context, the trend goes to returning an object which will behave appropriately in ever context.

For example a regex match returns a Match object, which returns the success status in boolean context, the matched string in string context, a list of positional captures in list context, and if used as a hash, it provides access to all named captures.

Also note that want, the Perl 6 generalization of wantarray, can't always work due to multi dispatch:

multi a(Str $x) { say "got a string" } mutli a(@a) { say "got an array" } sub b { # what's the context here? } a(b());

Since the dispatcher only knows which a sub it will dispatch to after seeing the return value from b(), it can't provide an unambiguous context to a.

That said, even if we are aware of the problem above and neglect that paradigm shift, return @list; isn't a problem in Perl 6, because there are more specific contexts. In generic item context ("scalar context") it will return an Array object, and only in numeric context will the caller see the number of items in the array.


In reply to Re: Use of wantarray Considered Harmful (Perl 6) by moritz
in thread Use of wantarray Considered Harmful by kyle

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.