pragmatic-fp-ts
Version:
Opinionated functional programming library with easy use in mind
20 lines (14 loc) • 528 B
text/typescript
import { Predicate } from "./main.ts";
export function partition<A>(by: Predicate<A>, coll: A[]): { t: A[]; f: A[] };
export function partition<A>(
by: Predicate<A>
): (coll: A[]) => { t: A[]; f: A[] };
export function partition<A>(by: Predicate<A>, coll?: A[]) {
if (arguments.length === 1) return (_coll: A[]) => partition(by, _coll);
const result = { t: [] as A[], f: [] as A[] };
(coll ?? []).forEach((value) => {
if (by(value)) result.t.push(value);
else result.f.push(value);
});
return result;
}