sortUniq
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Sat Jan 24 06:53:04 PST 2015
On 1/24/15 3:50 AM, Peter Alexander wrote:
> On Friday, 23 January 2015 at 18:22:08 UTC, zeljkog wrote:
>> 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;
>> }
>
> auto f = unique();
> [1, 5, 5, 2, 1, 5, 6, 6].filter!(f).writeln; // [1, 5, 2, 6]
>
> Filter needs an alias, and you cannot alias an R-value (it has no symbol).
Hmmm... we do allow rvalues sometimes (e.g. for strings). I think we
could and should relax the rule to allow rvalues in this case, too. --
Andrei
More information about the Digitalmars-d
mailing list