/** @module array/remove.ts */ import { untypedCurry } from '../function/untypedCurry' interface RemovePossibleCurried { ( count: number, arr: A[] ): A[] ( count: number ): ( arr: A[] ) => A[] } export function remove( index: number, count: number, arr: A[] ): A[] export function remove( index: number, count: number ): ( arr: A[] ) => A[] export function remove( index: number ): RemovePossibleCurried /** * Removes a given number of items from an array at a specific index. * * @param index index to start removing items * @param count the number of items to remove from array * @param arr array to remove items from * @sig n -> n -> a[] -> a[] */ export function remove( ...args ) { return untypedCurry( ( index, count, arr ): A[] => [ ...arr.slice( 0, index ), ...arr.slice( index + count, arr.length ) ] )( ...args ) } export default remove