// ets_tracing: off
import * as T from "@effect-ts/system/Effect"
import * as L from "@effect-ts/system/Layer"
import type { LayerURI } from "../../Modules/index.js"
import type { URI } from "../../Prelude/index.js"
import * as P from "../../Prelude/index.js"
export type V = P.V<"R", "-"> & P.V<"E", "+">
export const AssociativeBoth = P.instance
], V>>({
both: L.zip
})
export const Any = P.instance], V>>({
any: () => L.fromRawEffect(T.succeed({}))
})
export const Covariant = P.instance], V>>({
map: L.map
})
export const IdentityBoth = P.instance], V>>({
...Any,
...AssociativeBoth
})
export const Applicative = P.instance], V>>({
...Covariant,
...IdentityBoth
})
export const AssociativeFlatten = P.instance], V>>({
flatten: L.flatten
})
export const IdentityFlatten = P.instance], V>>({
...Any,
...AssociativeFlatten
})
export const Monad = P.instance], V>>({
...Covariant,
...IdentityFlatten
})