// ets_tracing: off import { constant } from "@effect-ts/system/Function" import * as F from "@effect-ts/system/XPure" import type { XStateURI } from "../../Modules/index.js" import type { URI } from "../../Prelude/index.js" import * as P from "../../Prelude/index.js" import type { V } from "./definition.js" import { map, zip } from "./operations.js" /** * The `Any` instance for `Reader[-_, +_]`. */ export const Any = P.instance], V>>({ any: () => F.succeed(constant({})) }) /** * The `Covariant` instance for `Reader[-_, +_]`. */ export const Covariant = P.instance], V>>({ map }) /** * The `AssociativeBoth` instance for `Reader[-_, +_]`. */ export const AssociativeBoth = P.instance], V>>({ both: zip }) /** * The `AssociativeFlatten` instance for `Reader[-_, +_]`. */ export const AssociativeFlatten = P.instance], V>>( { flatten: (ffa) => F.chain_(ffa, (x) => x) } ) /** * The `IdentityFlatten` instance for `Reader[-_, +_]`. */ export const IdentityFlatten = P.instance], V>>({ ...Any, ...AssociativeFlatten }) /** * The `Monad` instance for `Reader[-_, +_]`. */ export const Monad = P.instance], V>>({ ...Any, ...Covariant, ...AssociativeFlatten }) /** * The `Applicative` instance for `Reader[-_, +_]`. */ export const Applicative = P.instance], V>>({ ...Any, ...Covariant, ...AssociativeBoth })