import std.stdio, std.algorithm;

auto unique(){
    bool[int] c;
    return (int a){
        if (a in c)
            return false;
        else{
            c[a] = true;
            return true;
        }
    };
}

void main()
{
    [1, 5, 5, 2, 1, 5, 6, 6].filter!(unique()).writeln;
}

Just add static to the closure.

auto unique(){
    static bool[int] c;
    return (int a){
        if (a in c)
            return false;
        else{
            c[a] = true;
            return true;
        }
    };
}

Reply via email to