pragmatic-fp-ts
Version:
Opinionated functional programming library with easy use in mind
11 lines (8 loc) • 403 B
text/typescript
export function mod(modulus: number, n: number): number;
export function mod(modulus: number): (n: number) => number;
// mod that really constrains n within the modulus of [0, n[
export function mod(modulus: number, n?: number) {
if (arguments.length === 1) return (_n: number) => mod(modulus, _n);
const jsMod = n! % modulus;
return jsMod < 0 ? jsMod + modulus : Math.abs(jsMod); // catch -0
}