// ets_tracing: off
import * as O from "@effect-ts/system/Option"
import type { OptionURI } from "../../Modules/index.js"
import * as P from "../../Prelude/index.js"
export const Foldable = P.instance
]>>({
reduce: (b, f) => (fa) => O.isNone(fa) ? b : f(b, fa.value),
reduceRight: (b, f) => (fa) => O.isNone(fa) ? b : f(fa.value, b),
foldMap: (M) => (f) => (fa) => O.isNone(fa) ? M.identity : f(fa.value)
})