groupBy/chunkBy redux
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Fri Feb 13 10:32:34 PST 2015
Looks like there's a backlog of stuff to finalize for groupBy and aggregate:
* Perhaps rename groupBy to chunkBy. People coming from SQL and other
languages might expect groupBy to do hash-based grouping.
* The unary function implementation must return for each group a tuple
consisting of the key and the lazy range of values. The binary function
implementation should continue to only return the lazy range of values.
* SortedRange should add a method called group(). Invoked with no
predicate, group() should do what chunkBy does, using the sorting predicate.
* aggregate() should detect the two kinds of results per group (well,
chunk) and process them accordingly: for unary-predicate chunks, pass
the key through and only process the lazy range. Meaning:
auto data = [
tuple("John", 100),
tuple("John", 35),
tuple("Jane", 200),
tuple("Jane", 87),
];
auto r = data.chunkBy!(x => x[0]).aggregate!sum;
yields a range of tuples: tuple("John", 135), tuple("Jane", 187).
Andrei
More information about the Digitalmars-d
mailing list