Skip to content

Chainable

4 exports Added in v0.24.0 Source

Combining

zipLeft

Added in v0.24.0 Source

Sequences the specified effect after this effect, but ignores the value produced by the effect.

Signature

declare function zipLeft<F extends TypeLambda>(
  F: Chainable<F>,
): {
  <R2, O2, E2, _>(
    that: Kind<F, R2, O2, E2, _>,
  ): <R1, O1, E1, A>(self: Kind<F, R1, O1, E1, A>) => Kind<F, R1 & R2, O2 | O1, E2 | E1, A>;
  <R1, O1, E1, A, R2, O2, E2, _>(
    self: Kind<F, R1, O1, E1, A>,
    that: Kind<F, R2, O2, E2, _>,
  ): Kind<F, R1 & R2, O1 | O2, E1 | E2, A>;
};

Do Notation

bind

Added in v0.24.0 Source

Signature

declare function bind<F extends TypeLambda>(
  F: Chainable<F>,
): {
  <N extends string, A extends object, R2, O2, E2, B>(
    name: Exclude<N, keyof A>,
    f: (a: NoInfer<A>) => Kind<F, R2, O2, E2, B>,
  ): <R1, O1, E1>(
    self: Kind<F, R1, O1, E1, A>,
  ) => Kind<
    F,
    R1 & R2,
    O2 | O1,
    E2 | E1,
    { [K in string | number | symbol]: K extends keyof A ? A[K] : B }
  >;
  <R1, O1, E1, A extends object, N extends string, R2, O2, E2, B>(
    self: Kind<F, R1, O1, E1, A>,
    name: Exclude<N, keyof A>,
    f: (a: NoInfer<A>) => Kind<F, R2, O2, E2, B>,
  ): Kind<
    F,
    R1 & R2,
    O1 | O2,
    E1 | E2,
    { [K in string | number | symbol]: K extends keyof A ? A[K] : B }
  >;
};

Other

tap

Added in v0.24.0 Source

Returns an effect that effectfully "peeks" at the success of this effect.

Signature

declare function tap<F extends TypeLambda>(
  F: Chainable<F>,
): {
  <A, R2, O2, E2, _>(
    f: (a: A) => Kind<F, R2, O2, E2, _>,
  ): <R1, O1, E1>(self: Kind<F, R1, O1, E1, A>) => Kind<F, R1 & R2, O2 | O1, E2 | E1, A>;
  <R1, O1, E1, A, R2, O2, E2, _>(
    self: Kind<F, R1, O1, E1, A>,
    f: (a: A) => Kind<F, R2, O2, E2, _>,
  ): Kind<F, R1 & R2, O1 | O2, E1 | E2, A>;
};

Type Class

Chainable interface

Added in v0.24.0 Source

Signature

interface Chainable<F extends TypeLambda> extends FlatMap<F>, Covariant<F> {}