import { allEqualsTo } from "./allEqualsTo"; import { ReduceArguments, toReduceArguments } from "./reduceify"; export function arrAllEquals( arr: readonly ArrOf[], areEquals: (e1: ArrOf, e2: ArrOf) => boolean = (e1, e2) => e1 === e2 ): boolean { if (arr.length === 0) { return true; } return arr.reduce(...allEqualsTo(arr[0], areEquals)); }; export function allEquals( areEquals?: (e1: ArrOf, e2: ArrOf) => boolean ): ReduceArguments { return toReduceArguments(arrAllEquals, areEquals); } export function allEqualsFactory({ areEquals }: { areEquals: (e1: T, e2: T) => boolean; }) { return { "allEquals": ()=> allEquals(areEquals) }; }