// ets_tracing: off
import type { DictionaryURI } from "../../../Modules/index.js"
import type { URI } from "../../../Prelude/index.js"
import * as P from "../../../Prelude/index.js"
import {
compact,
compactF,
compactWithIndexF,
foldMap,
foldMapWithIndex,
forEachF,
forEachWithIndexF,
map,
mapWithIndex,
reduce,
reduceRight,
reduceRightWithIndex,
reduceWithIndex,
separate,
separateF,
separateWithIndexF
} from "./operations.js"
export const Covariant = P.instance
]>>({
map
})
export const CovariantWithIndex = P.instance<
P.CovariantWithIndex<[URI]>
>({
mapWithIndex
})
export const ForEach = P.instance]>>({
map,
forEachF
})
export const ForEachWithIndex = P.instance]>>({
map,
forEachWithIndexF
})
export const Reduce = P.instance]>>({
reduce
})
export const ReduceRight = P.instance]>>({
reduceRight
})
export const ReduceWithIndex = P.instance]>>({
reduceWithIndex
})
export const ReduceRightWithIndex = P.instance<
P.ReduceRightWithIndex<[URI]>
>({
reduceRightWithIndex
})
export const FoldMap = P.instance]>>({
foldMap
})
export const FoldMapWithIndex = P.instance]>>({
foldMapWithIndex
})
export const Foldable = P.instance]>>({
...FoldMap,
...Reduce,
...ReduceRight
})
export const FoldableWithIndex = P.instance]>>({
...FoldMapWithIndex,
...ReduceWithIndex,
...ReduceRightWithIndex
})
export const Wiltable = P.instance]>>({
separateF
})
export const WiltableWithIndex = P.instance]>>({
separateWithIndexF
})
export const Witherable = P.instance]>>({
compactF
})
export const WitherableWithIndex = P.instance<
P.WitherableWithIndex<[URI]>
>({
compactWithIndexF
})
export const Compact = P.instance]>>({
compact
})
export const Separate = P.instance]>>({
separate
})
export const Compactable = P.instance]>>({
...Separate,
...Compact
})