import { curryN,always } from "@unboxing/function"; import { adjustArray } from "./adjust"; interface Update { (index: number, value: T, list: ArrayLike): T[]; (index: number, value: T): (list: ArrayLike) => T[]; (index: number): { (value: T, list: ArrayLike): T[]; (value: T): (list: ArrayLike) => T[]; }; } export const updateArray = curryN(3, (idx: number, x: T, list: ArrayLike) => adjustArray(always(x), idx, list)) as Update