monads-co
Version:
An implementation of Haskell's type classes in TS
14 lines (13 loc) • 866 B
TypeScript
import { Functor, FunctorHKT } from './Functor';
import { CallHKT } from './HKT';
export interface ApplicativeHKT extends FunctorHKT {
output: Applicative<this["input"]>;
}
export declare abstract class Applicative<A> extends Functor<A> {
abstract amap<B, App extends ApplicativeHKT>(mapping: CallHKT<App, (value: A) => B>): CallHKT<App, B>;
abstract pure<B, App extends ApplicativeHKT>(value: B): CallHKT<App, B>;
static liftToApplicative<A, B, C, App extends ApplicativeHKT>(fn: (value: A) => (value: B) => C): (a: CallHKT<App, A>) => (b: CallHKT<App, B>) => CallHKT<App, C>;
andIgnoreRight<B, App extends ApplicativeHKT>(b: CallHKT<App, B>): CallHKT<App, A>;
andIgnoreLeft<B, App extends ApplicativeHKT>(b: CallHKT<App, B>): CallHKT<App, B>;
and<B, App extends ApplicativeHKT>(b: CallHKT<App, B>): CallHKT<App, [A, B]>;
}