import type { Functor } from "./functor"; export interface Applicative extends Functor { apply(this: Applicative<(a: A) => B>, arg: Applicative): Applicative; apply(this: Applicative, fn: Applicative<(a: A) => B>): Applicative; } export interface ApplicativeConstructor { from(item: I): Applicative; }