in reply to Re: Re: Perl6: Parting of @Arrayed See
in thread Perl6: Parting of @Arrayed See

Oh, I do like the ternary deref too - it's just I prefer to use map and grep wherever sensible since they're expressions.

I did indeed mean 1 as in if(1) though. In other words, an expression that is always true and thus catches all elements that fall through to it. I'm not sure how a singular bang is supposed to be parsed - I wouldn't like it to be a special case just for part.

On the other hand, the /foo/, /bar/, /zap/ could (and maybe should, which is what I'm wondering) return duplicate elements, that is, any list element might match several of those and would then show up in several of the result lists. That would be handy for single-pass processing of very large lists.

I am thinking that it might be best to allow for a mixing of both semantics, that is, any true expression may or may not consume the element or pass it on. But how could this best be expressed?

Makeshifts last the longest.

Replies are listed 'Best First'.
Re(4): Perl6: Parting of @Arrayed See
by BrentDax (Hermit) on Jan 10, 2003 at 18:30 UTC
    Actually, they're even working on that. Because of new language regularization, grep (and map and part) will be a slightly different syntax in Perl 6:

        grep { block } <~ @array

    Which allows for left-to-right pipelines:

        @in ~> grep { block } ~> @out

    And, via unary ~>, allows for duplicates:

    given(@foo) { ~> grep { cond1 } ~> @out1; ~> grep { cond2 } ~> @out2; ... }
    cond1 and cond2 do not need to be mutually exclusive (and probably shouldn't be, since otherwise you could use part).

    Disclaimer: This is true this week. God only knows if it'll be true next week. ;^)

    =cut
    --Brent Dax
    There is no sig.