/** @module combinators.ts */ /* tslint:disable */ export const I = ( x: A ): A => x export const K = ( x: A ) => ( y: any ): A => x export const A = ( f: ( x: A ) => B ) => ( x: A ): B => f( x ) export const T = ( x: A ) => ( f: ( a: A ) => B ): B => f( x ) export const W = ( f: ( a: A ) => ( b: A ) => B ) => ( x: A ): B => f( x )( x ) export const C = ( f: ( x: A ) => ( y: B ) => C ) => ( y: B ) => ( x: A ): C => f( x )( y ) export const B = ( f: ( b: B ) => C ) => ( g: ( a: A ) => B ) => ( a: A ): C => f( g( a ) ) export const S = ( f: ( a: A ) => ( b: B ) => C ) => ( g: ( a: A ) => B ) => ( a: A ): C => f( a )( g( a ) ) export const P = ( f: ( a: A ) => ( b: A ) => B ) => ( g: ( a: X|Y ) => A ) => ( x: X ) => ( y: Y ): B => f( g( x ) )( g( y ) ) export const Y = ( f: ( fn: Function ) => A ): A => ( ( g ) => g( g ) )( ( g ) => f( ( x ) => g( g )( x ) ) )