Skip to content
Effect Days 2026 Get your ticket

Foldable

7 exports Added in v0.24.0 Source

Other

combineMap

Added in v0.24.0 Source

Signature

declare function combineMap<F extends TypeLambda>(F: Foldable<F>): <M>(M: Monoid<M>) => {
<A>(f: (a: A) => M): <R, O, E>(self: Kind<F, R, O, E, A>) => M;
<R, O, E, A>(self: Kind<F, R, O, E, A>, f: (a: A) => M): M;
}

Signature

declare function coproductMapKind<F extends TypeLambda>(F: Foldable<F>): <G extends TypeLambda>(G: Coproduct<G>) => {
<A, R, O, E, B>(f: (a: A) => Kind<G, R, O, E, B>): <FR, FO, FE>(self: Kind<F, FR, FO, FE, A>) => Kind<G, R, O, E, B>;
<FR, FO, FE, A, R, O, E, B>(self: Kind<F, FR, FO, FE, A>, f: (a: A) => Kind<G, R, O, E, B>): Kind<G, R, O, E, B>;
}

Returns a default ternary reduce composition.

Signature

declare function reduceComposition<F extends TypeLambda, G extends TypeLambda>(F: Foldable<F>, G: Foldable<G>): <FR, FO, FE, GR, GO, GE, A, B>(self: Kind<F, FR, FO, FE, Kind<G, GR, GO, GE, A>>, b: B, f: (b: B, a: A) => B) => B

reduceKind

Added in v0.24.0 Source

Signature

declare function reduceKind<F extends TypeLambda>(F: Foldable<F>): <G extends TypeLambda>(G: Monad<G>) => {
<B, A, R, O, E>(b: B, f: (b: B, a: A) => Kind<G, R, O, E, B>): <FR, FO, FE>(self: Kind<F, FR, FO, FE, A>) => Kind<G, R, O, E, B>;
<FR, FO, FE, A, B, R, O, E>(self: Kind<F, FR, FO, FE, A>, b: B, f: (b: B, a: A) => Kind<G, R, O, E, B>): Kind<G, R, O, E, B>;
}

toArray

Added in v0.24.0 Source

Signature

declare function toArray<F extends TypeLambda>(F: Foldable<F>): <R, O, E, A>(self: Kind<F, R, O, E, A>) => Array<A>

toArrayMap

Added in v0.24.0 Source

Signature

declare function toArrayMap<F extends TypeLambda>(F: Foldable<F>): {
<A, B>(f: (a: A) => B): <R, O, E>(self: Kind<F, R, O, E, A>) => Array<B>;
<R, O, E, A, B>(self: Kind<F, R, O, E, A>, f: (a: A) => B): Array<B>;
}

Type Class

Foldable interface

Added in v0.24.0 Source

Signature

interface Foldable<F extends TypeLambda> extends TypeClass<F> {
readonly reduce: {
<A, B>(b: B, f: (b: B, a: A) => B): <R, O, E>(self: Kind<F, R, O, E, A>) => B;
<R, O, E, A, B>(self: Kind<F, R, O, E, A>, b: B, f: (b: B, a: A) => B): B;
};
}