On 04/19/2014 09:55 AM, MattCoder wrote:

> On Friday, 18 April 2014 at 20:02:41 UTC, Tim Holzschuh via
> Digitalmars-d-learn wrote:
> void main(){
>      int myfilter(int a){
>          static int[] b;

That static variable makes this solution non-reentrant. To see an effect of this, replace the arrFiltered line with the following:

    import std.range;
    auto arr2 = [1,1,5,2,3];
    auto arrFiltered = zip(arr.filter!(a => myfilter(a) > 0),
                           arr2.filter!(a => myfilter(a) > 0));

Now the two filter operations get in each other's way and the output becomes:

    [Tuple!(int, int)(1, 5), Tuple!(int, int)(2, 3)]

I wonder what happened to 4. (?) :)

>          if(b.find(a) == []){

There is a more explicit way of saying that:

        if(!b.canFind(a)){

Ali

Reply via email to