// ets_tracing: off
import type { ListURI } from "../../../Modules/index.js"
import type { URI } from "../../../Prelude/index.js"
import * as P from "../../../Prelude/index.js"
import * as L from "./operations.js"
export const Any = P.instance
]>>({
any: () => L.of({})
})
export const AssociativeBothZip = P.instance]>>({
both: L.zip
})
export const AssociativeFlatten = P.instance]>>({
flatten: L.flatten
})
export const Covariant = P.instance]>>({
map: L.map
})
export const Monad = P.instance]>>({
...Any,
...Covariant,
...AssociativeFlatten
})
export const Applicative = P.getApplicativeF(Monad)
export const ApplyZip = P.instance]>>({
...Covariant,
...AssociativeBothZip
})
export const ForEach = P.instance]>>({
map: L.map,
forEachF: L.forEachF
})
export const Wiltable = P.instance]>>({
separateF: L.separateF
})
export const Witherable = P.instance]>>({
compactF: L.compactF
})
export const Compact = P.instance]>>({
compact: L.compact
})
export const Separate = P.instance]>>({
separate: L.separate
})
export const Reduce = P.instance]>>({
reduce: L.reduce
})
export const ReduceRight = P.instance]>>({
reduceRight: L.reduceRight
})
export const FoldMap = P.instance]>>({
foldMap: L.foldMap
})
export const Foldable = P.instance]>>({
...FoldMap,
...Reduce,
...ReduceRight
})
export const Filter = P.instance]>>({
filter: L.filter
})
export const FilterMap = P.instance]>>({
filterMap: L.filterMap
})
export const Partition = P.instance]>>({
partition: L.partition
})
export const PartitionMap = P.instance]>>({
partitionMap: L.partitionMap
})
export const Filterable = P.instance]>>({
...Filter,
...FilterMap,
...Partition,
...PartitionMap
})
export const Collection = P.instance]>>({
builder: L.builder
})