FlatMap overview
Added in v1.0.0
Table of contents
type class
FlatMap (interface)
Signature
export interface FlatMap<F extends TypeLambda> extends TypeClass<F> {
readonly flatMap: {
<A, R2, O2, E2, B>(f: (a: A) => Kind<F, R2, O2, E2, B>): <R1, O1, E1>(
self: Kind<F, R1, O1, E1, A>
) => Kind<F, R1 & R2, O1 | O2, E1 | E2, B>
<R1, O1, E1, A, R2, O2, E2, B>(self: Kind<F, R1, O1, E1, A>, f: (a: A) => Kind<F, R2, O2, E2, B>): Kind<
F,
R1 & R2,
O1 | O2,
E1 | E2,
B
>
}
}
Added in v1.0.0
utils
andThen
A variant of flatMap
that ignores the value produced by this effect.
Signature
export declare const andThen: <F extends TypeLambda>(
F: FlatMap<F>
) => {
<R2, O2, E2, B>(that: Kind<F, R2, O2, E2, B>): <R1, O1, E1, _>(
self: Kind<F, R1, O1, E1, _>
) => Kind<F, R1 & R2, O2 | O1, E2 | E1, B>
<R1, O1, E1, _, R2, O2, E2, B>(self: Kind<F, R1, O1, E1, _>, that: Kind<F, R2, O2, E2, B>): Kind<
F,
R1 & R2,
O1 | O2,
E1 | E2,
B
>
}
Added in v1.0.0
composeKleisliArrow
Signature
export declare const composeKleisliArrow: <F extends TypeLambda>(
F: FlatMap<F>
) => {
<B, R2, O2, E2, C>(bfc: (b: B) => Kind<F, R2, O2, E2, C>): <A, R1, O1, E1>(
afb: (a: A) => Kind<F, R1, O1, E1, B>
) => (a: A) => Kind<F, R1 & R2, O2 | O1, E2 | E1, C>
<A, R1, O1, E1, B, R2, O2, E2, C>(afb: (a: A) => Kind<F, R1, O1, E1, B>, bfc: (b: B) => Kind<F, R2, O2, E2, C>): (
a: A
) => Kind<F, R1 & R2, O1 | O2, E1 | E2, C>
}
Added in v1.0.0
flatten
Signature
export declare const flatten: <F extends TypeLambda>(
F: FlatMap<F>
) => <R2, O2, E2, R1, O1, E1, A>(
self: Kind<F, R2, O2, E2, Kind<F, R1, O1, E1, A>>
) => Kind<F, R1 & R2, O2 | O1, E2 | E1, A>
Added in v1.0.0