Skip to content

Bicovariant

4 exports Added in v0.24.0 Source

Other

Returns a default ternary bimap composition.

Signature

declare function bimapComposition<F extends TypeLambda, G extends TypeLambda>(
  CovariantF: Covariant<F>,
  BicovariantG: Bicovariant<G>,
): <FR, FO, FE, GR, GO, E1, A, E2, B>(
  self: Kind<F, FR, FO, FE, Kind<G, GR, GO, E1, A>>,
  f: (e: E1) => E2,
  g: (a: A) => B,
) => Kind<F, FR, FO, FE, Kind<G, GR, GO, E2, B>>;

map

Added in v0.24.0 Source

Returns a default map implementation.

Signature

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

mapLeft

Added in v0.24.0 Source

Returns a default mapLeft implementation.

Signature

declare function mapLeft<F extends TypeLambda>(
  F: Bicovariant<F>,
): {
  <E, G>(f: (e: E) => G): <R, O, A>(self: Kind<F, R, O, E, A>) => Kind<F, R, O, G, A>;
  <R, O, E, A, G>(self: Kind<F, R, O, E, A>, f: (e: E) => G): Kind<F, R, O, G, A>;
};

Type Class

Bicovariant interface

Added in v0.24.0 Source

Signature

interface Bicovariant<F extends TypeLambda> extends TypeClass<F> {
  readonly bimap: {
    <E1, E2, A, B>(
      f: (e: E1) => E2,
      g: (a: A) => B,
    ): <R, O>(self: Kind<F, R, O, E1, A>) => Kind<F, R, O, E2, B>;
    <R, O, E1, A, E2, B>(
      self: Kind<F, R, O, E1, A>,
      f: (e: E1) => E2,
      g: (a: A) => B,
    ): Kind<F, R, O, E2, B>;
  };
}