On 23.01.15 19:13, Andrei Alexandrescu wrote:
On 1/23/15 10:05 AM, zeljkog wrote:
On 23.01.15 18:48, H. S. Teoh via Digitalmars-d wrote:

I think what he's trying to do is to call a function that returns a
delegate, and use that delegate to instantiate the filter template.
AFAIK I've never seen code like this before, and it looks like the
compiler isn't prepared to handle this.


Yes, I tried to use filter for unique, need closure.
I think there are many applications for this pattern.

Please post a complete snippet then. Thanks! -- Andrei


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;
}


Reply via email to