import type { Recursive } from "@tsplus/stdlib/prelude/Recursive/definition" /** * @tsplus fluent Recursive/Aspects foldUp * @tsplus pipeable Recursive foldUp */ export function foldUp( F: Foldable, z: Z, f: Recursive.FoldDownFn ) { return (self: Recursive): Z => pipe( self.caseValue, F.reduceRight(z, (r: Recursive, accum) => r.foldUp(F, accum, f)), (z0) => f(z0, self) ) }