/** * @since 2.0.0 */ import { HKT2, Kind2, Kind3, URIS2, URIS3, URIS4, Kind4 } from './HKT' /** * @category model * @since 2.0.0 */ export interface Bifunctor { readonly URI: F readonly bimap: (fea: HKT2, f: (e: E) => G, g: (a: A) => B) => HKT2 readonly mapLeft: (fea: HKT2, f: (e: E) => G) => HKT2 } /** * @category model * @since 2.0.0 */ export interface Bifunctor2 { readonly URI: F readonly bimap: (fea: Kind2, f: (e: E) => G, g: (a: A) => B) => Kind2 readonly mapLeft: (fea: Kind2, f: (e: E) => G) => Kind2 } /** * @category model * @since 2.0.0 */ export interface Bifunctor2C { readonly URI: F readonly _E: E readonly bimap: (fea: Kind2, f: (e: E) => G, g: (a: A) => B) => Kind2 readonly mapLeft: (fea: Kind2, f: (e: E) => M) => Kind2 } /** * @category model * @since 2.0.0 */ export interface Bifunctor3 { readonly URI: F readonly bimap: (fea: Kind3, f: (e: E) => G, g: (a: A) => B) => Kind3 readonly mapLeft: (fea: Kind3, f: (e: E) => G) => Kind3 } /** * @category model * @since 2.2.0 */ export interface Bifunctor3C { readonly URI: F readonly _E: E readonly bimap: (fea: Kind3, f: (e: E) => G, g: (a: A) => B) => Kind3 readonly mapLeft: (fea: Kind3, f: (e: E) => G) => Kind3 } /** * @category model * @since 2.0.0 */ export interface Bifunctor4 { readonly URI: F readonly bimap: (fea: Kind4, f: (e: E) => G, g: (a: A) => B) => Kind4 readonly mapLeft: (fea: Kind4, f: (e: E) => G) => Kind4 }