import { indexOf as _indexOf } from '@typed/common' import { curry } from '@typed/lambda' import { Maybe, Nothing } from '@typed/maybe' /** * Find the index of a value * @param value :: a * @param list :: [a] * @returns :: Maybe int */ export const indexOf: { (value: A, list: ArrayLike): Maybe (value: A): (list: ArrayLike) => Maybe } = curry( (value: A, list: ArrayLike): Maybe => { const index = _indexOf(list, value) return index > -1 ? Maybe.of(index) : Nothing }, ) as { (value: A, list: ArrayLike): Maybe (value: A): (list: ArrayLike) => Maybe }