import { curry, Predicate } from '@typed/lambda'
import { Just, Maybe, Nothing } from '@typed/maybe'
export const findIndex: {
(predicate: Predicate, iterable: Iterable): Maybe
(predicate: Predicate): (iterable: Iterable) => Maybe
} = curry(__findIndex)
function __findIndex(predicate: Predicate, iterable: Iterable): Maybe {
let i = 0
for (const value of iterable) {
if (predicate(value)) {
return Just.of(i)
}
i++
}
return Nothing
}