Andrei Alexandrescu:
which is somewhat important; "group by" is a powerful operation.
I agree, it's a quite commonly useful operation.
So I was thinking to allow both cases, with the understanding that grouping by unary predicates uses "==" for comparison whereas grouping by binary predicates looks at adjacent elements to figure out group membership. That approach would, however, preclude the use of string lambdas (because deducing arity for string lambdas is possible, but quite unwieldy).
In similar cases the simplest solution is to have two functions with different (but similar) names.
However, that makes life a bit tougher for the algorithm - it must only compare adjacent elements only.
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 Bye, bearophile
