group = {
const entryIdentity = value => [value, value];
const entryKey = keyof => (value, index, values) => [keyof(value, index, values), value];
const arrayReduce = (p = [] , v) => (p.push(v), p);
return function group(values, keyof) {
return groupReduce(
values,
keyof === undefined ? entryIdentity : entryKey(keyof),
arrayReduce
);
};
}