You're absolutely right – I'm testing a patch for this right now.
Fundamentally, this raises an issue that I've brought up before: filter is
poorly named because the name doesn't indicate whether you keep or drop the
items which the predicate matches. It would be much clearer if we had two
functions called select and reject which did filtering where you keep and
drop the things that match, respectively.


On Thu, Mar 20, 2014 at 3:23 AM, Miki Tebeka <[email protected]> wrote:

> Greetings,
>
> I see a different behavior for filter on tasks and ranges.
>
> If I do
>
> for n = filter(iseven, 1:10)
>     println(n)
> end
>
>
> I get 2,4,6,8
>
> However if I do
>
> function ints()
>     for i = 1:10
>         produce(i)
>     end
> end
>
> for n = filter(iseven, @task ints())
>     println(n)
> end
>
>
> I get 3,5,7,9
>
> Why is that?
>
> (I noticed that if I change the code to collect(@task ints()) the code
> works as expected).
>
> Thanks,
> --
> Miki
>

Reply via email to