// ets_tracing: off import { pipe } from "../../Function/index.js" import type { AssociativeEither } from "../AssociativeEither/index.js" import type { Covariant } from "../Covariant/index.js" import type { HKT, Intro, Kind, Mix, UHKT, URIS } from "../HKT/index.js" export function orElseF( F: AssociativeEither & Covariant ): ( fb: () => Kind ) => ( fa: Kind< F, C, Intro, Intro, Intro, Intro, Intro, Intro, Intro, Intro, A > ) => Kind< F, C, Mix, Mix, Mix, Mix, Mix, Mix, Mix, Mix, A | B > export function orElseF(F: AssociativeEither> & Covariant>) { return (fb: () => HKT) => (fa: HKT): HKT => pipe( fa, F.orElseEither(fb), F.map((e) => (e._tag === "Left" ? e.left : e.right)) ) }