Skip to content
Effect Days 2026 Get your ticket

Contravariant

3 exports Added in v0.24.0 Source

Other

Composing two contravariant functors yields a Covariant functor.

Returns a default binary map composition.

Signature

declare function contramapComposition<F extends TypeLambda, G extends TypeLambda>(F: Contravariant<F>, G: Contravariant<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>>

imap

Added in v0.24.0 Source

Returns a default imap implementation.

Signature

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

Type Class

Contravariant interface

Added in v0.24.0 Source

Signature

interface Contravariant<F extends TypeLambda> extends Invariant<F> {
readonly contramap: {
<B, A>(f: (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>, f: (b: B) => A): Kind<F, R, O, E, B>;
};
}