/** @module array/slice.ts */ import { untypedCurry } from '../function' interface SliceCurried { ( end: number, arr: A[] ): A[] ( end: number ): ( arr: A[] ) => A[] } interface Slice { ( start: number, end: number, arr: A[] ): A[] ( start: number, end: number ): ( arr: A[] ) => A[] ( start: number ): SliceCurried } /** * Takes arguments for slice, an array, and returns sliced array * @param start index to start the slice * @param end index to end the slice * @param arr array to slice from * @sig (...args) -> a[] -> a[] * @example * slice( 2, 4, [1,2,3,4,5,6,7] ) * // => [3,4] */ export const slice: Slice = untypedCurry( ( start, end, arr ) => arr.slice( start, end ), ) export default slice