Skip to content

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;
  };
}