import type * as P from "@principia/prelude";
import * as HKT from "@principia/prelude/HKT";
import * as A from "../Array";
import { Functor } from "./functor";
import type { NonEmptyArray, URI, V } from "./model";
/*
* -------------------------------------------
* Alt NonEmptyArray
* -------------------------------------------
*/
/**
* ```haskell
* alt_ :: Alt f => (f a, (() -> f a)) -> f a
* ```
*
* Combines two `NonEmptyArray`s
*
* @category Alt
* @since 1.0.0
*/
export const alt_: (fa: NonEmptyArray, that: () => NonEmptyArray) => NonEmptyArray = A.alt_ as any;
/**
* ```haskell
* alt :: Alt f => (() -> f a) -> f a -> f a
* ```
*
* Combines two `NonEmptyArray`s
*
* @category Alt
* @since 1.0.0
*/
export const alt: (that: () => NonEmptyArray) => (fa: NonEmptyArray) => NonEmptyArray = A.alt as any;
export const Alt: P.Alt<[URI], V> = HKT.instance({
...Functor,
alt_,
alt
});