groupBy predicates: unary, binary, or both?

Timon Gehr timon.gehr at gmx.ch
Sun Dec 29 12:12:32 PST 2013


On 12/29/2013 05:17 PM, Andrei Alexandrescu wrote:
> On 12/29/13 2:27 AM, bearophile wrote:
>> But another common need is to group by equivalent classes using an
>> associative array. Both C# and Clojure have this functionality (on LINQ
>> and in the functions toolkit). This means that a "hashGroup" builds an
>> associative array inside and returns it.
>>
>>
>> See also:
>> http://d.puremagic.com/issues/show_bug.cgi?id=5968
>> http://d.puremagic.com/issues/show_bug.cgi?id=9842
>
> I think hash joins should come first.
>
> Andrei
>

What hash join algorithm do you have in mind that does not use 
hashGroupBy as a component?

I think accumAssocArray or similar would be quite handy as well, as it 
is more general. A naive implementation r.hashGroupBy!f would then for 
example be given by:

r.map!(a=>tuple(f(a),a)) // range of key-value pairs
     .accumAssocArray!((a,b)=>a~=b) // method of combination
         ((ElementType!(typeof(r))[]).init); // initial value


More information about the Digitalmars-d mailing list