import type * as P from "@principia/prelude"; import * as HKT from "@principia/prelude/HKT"; import * as X from "../XPure"; import { Functor } from "./functor"; import type { EIO, URI, V } from "./model"; import { unit } from "./unit"; /* * ------------------------------------------- * Applicative EIO * ------------------------------------------- */ export const both_: (fa: EIO, fb: EIO) => EIO = X.both_; export const both: (fb: EIO) => (fa: EIO) => EIO = X.both; export const pure: (a: A) => EIO = X.pure; /** * @category Applicative * @since 1.0.0 */ export const Applicative: P.Applicative<[URI], V> = HKT.instance({ ...Functor, both_, both, unit });