Skip to content
Effect Days 2026 Get your ticket

Covariant

7 exports Added in v0.24.0 Source

Mapping

as

Added in v0.24.0 Source

Signature

declare function as<F extends TypeLambda>(F: Covariant<F>): {
<B>(b: B): <R, O, E, _>(self: Kind<F, R, O, E, _>) => Kind<F, R, O, E, B>;
<R, O, E, _, B>(self: Kind<F, R, O, E, _>, b: B): Kind<F, R, O, E, B>;
}

asVoid

Added in v0.24.0 Source

Signature

declare function asVoid<F extends TypeLambda>(F: Covariant<F>): <R, O, E, _>(self: Kind<F, R, O, E, _>) => Kind<F, R, O, E, void>

flap

Added in v0.24.0 Source

Signature

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

Other

imap

Added in v0.24.0 Source

Returns a default imap implementation.

Signature

declare function imap<F extends TypeLambda>(map: <R, O, E, A, B>(self: Kind<F, R, O, E, A>, f: (a: A) => B) => Kind<F, R, O, E, B>): {
<A, B>(to: (a: A) => B, from: (b: B) => A): <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>, to: (a: A) => B, from: (b: B) => A): Kind<F, R, O, E, B>;
}

Signature

declare function let<F extends TypeLambda>(F: Covariant<F>): {
<N extends string, A extends object, B>(name: Exclude<N, keyof A>, f: (a: A) => B): <R, O, E>(self: Kind<F, R, O, E, A>) => Kind<F, R, O, E, { [K in string | number | symbol]: K extends keyof A ? A[K] : B }>;
<R, O, E, A extends object, N extends string, B>(self: Kind<F, R, O, E, A>, name: Exclude<N, keyof A>, f: (a: A) => B): Kind<F, R, O, E, { [K in string | number | symbol]: K extends keyof A ? A[K] : B }>;
}

mapComposition

Added in v0.24.0 Source

Returns a default map composition.

Signature

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

Type Class

Covariant interface

Added in v0.24.0 Source

Signature

interface Covariant<F extends TypeLambda> extends Invariant<F> {
readonly map: {
<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>;
};
}