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 >
