import { concreteTSet } from "@effect/core/stm/TSet/operations/_internal/InternalTSet"
/**
* Atomically folds using a pure function.
*
* @tsplus static effect/core/stm/TSet.Aspects fold
* @tsplus pipeable effect/core/stm/TSet fold
*/
export function fold(zero: B, op: (acc: B, a: A) => B) {
return (self: TSet): STM => {
concreteTSet(self)
return self.tmap.fold(zero, (acc, kv) => op(acc, kv[0]))
}
}