pragmatic-fp-ts
Version:
Opinionated functional programming library with easy use in mind
16 lines (11 loc) • 449 B
text/typescript
import { Predicate } from "./main.ts";
// Wraps a predicate P so that when `P(a) = true` then
// `complement(P)(a) = false` and vice versa
export function complement<A>(pred: Predicate<A>, value: A): boolean;
export function complement<A>(pred: Predicate<A>): Predicate<A>;
export function complement<A>(pred: Predicate<A>, value?: A) {
if (arguments.length === 1) {
return (val: A) => complement(pred, val);
}
return !pred(value!);
}