/** * @tsplus type Covariant */ export interface Covariant extends HKT.Typeclass { readonly Law: { readonly Covariant: "Covariant" } readonly map: ( f: (a: A) => B ) => (fa: HKT.Kind) => HKT.Kind } /** * @tsplus type Covariant/Ops */ export interface CovariantOps {} export const Covariant: CovariantOps = {} export interface CovariantComposition { readonly Law: { readonly Covariant: "Covariant" } readonly map: ( f: (a: A) => B ) => ( fa: HKT.Kind> ) => HKT.Kind> } /** * @tsplus static Covariant/Ops getComposition */ export function getCovariantComposition( F: Covariant, G: Covariant ): CovariantComposition { return HKT.instance({ map: (f: (a: A) => B): ( fa: HKT.Kind> ) => HKT.Kind> => F.map(G.map(f)) }) }