// ets_tracing: off
import type { ReaderURI } from "../Modules/index.js"
import type { URI } from "../Prelude/index.js"
import * as P from "../Prelude/index.js"
import { access, map, zip } from "./operations.js"
export type V = P.V<"R", "-">
/**
* The `Access` instance for `Reader[-_, +_]`.
*/
export const Access = P.instance
], V>>({
access
})
/**
* The `Any` instance for `Reader[-_, +_]`.
*/
export const Any = P.instance], V>>({
any: () => () => ({})
})
/**
* 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) => (r) => ffa(r)(r)
}
)
/**
* 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
})