/** @module array/filterArray.ts */
import { untypedCurry } from '../function'
import { Predicate2 } from '../helper-types'
const _filterArray = ( fn: Predicate2, arr: A[] ): A[] => arr.filter( fn )
export function filterArray( fn: Predicate2, arr: A[] ): A[]
export function filterArray( fn: Predicate2 ): ( arr: A[] ) => A[]
/**
* Filter elements of an array with a given predicate function
* @sig fn -> a[] -> a[]
* @param fn predicate function taking item from array and index returns true for values to keep
* @param arr array to filter
* @example
* filterArray( (_,n) => (n + 1) % 2 === 0, [1,2,3,4] )
* //=> [1,2]
*/
export function filterArray( ...args ) {
return untypedCurry( _filterArray )( ...args )
}