/** * @since 2.0.0 */ import { Functor2, Functor2C, Functor3, Functor4, Functor3C } from './Functor' import { HKT, HKT2, Kind2, Kind3, Kind4, URIS2, URIS3, URIS4 } from './HKT' /** * @category model * @since 2.0.0 */ export interface Profunctor { readonly URI: F readonly map: (fa: HKT2, f: (a: A) => B) => HKT readonly promap: (fea: HKT2, f: (d: D) => E, g: (a: A) => B) => HKT2 } /** * @category model * @since 2.0.0 */ export interface Profunctor2 extends Functor2 { readonly promap: (fea: Kind2, f: (d: D) => E, g: (a: A) => B) => Kind2 } /** * @category model * @since 2.0.0 */ export interface Profunctor2C extends Functor2C { readonly promap: (fea: Kind2, f: (d: D) => E, g: (a: A) => B) => Kind2 } /** * @category model * @since 2.0.0 */ export interface Profunctor3 extends Functor3 { readonly promap: (fea: Kind3, f: (d: D) => E, g: (a: A) => B) => Kind3 } /** * @category model * @since 2.2.0 */ export interface Profunctor3C extends Functor3C { readonly promap: (fea: Kind3, f: (d: D) => E, g: (a: A) => B) => Kind3 } /** * @category model * @since 2.0.0 */ export interface Profunctor4 extends Functor4 { readonly promap: (fea: Kind4, f: (d: D) => E, g: (a: A) => B) => Kind4 }