/**
 * @since 1.2.0
 */
import { Index, Optional } from '..';
import { lookup, updateAt } from 'fp-ts/es6/Array';
import { isNone } from 'fp-ts/es6/Option';
/**
 * @category constructor
 * @since 1.2.0
 */
export function indexArray() {
    return new Index(function (i) {
        return new Optional(function (as) { return lookup(i, as); }, function (a) { return function (as) {
            var oas = updateAt(i, a)(as);
            if (isNone(oas)) {
                return as;
            }
            else {
                return oas.value;
            }
        }; });
    });
}