UNPKG

4.5

Version:

Monadic test assertions

17 lines (14 loc) 562 B
import { Assertion } from '../types'; import { chain } from './chain'; import { curry } from '@typed/curry'; import { map } from './map'; export const ap: ApFn = curry(function ap<T, R>( fnAssertion: Assertion<(value: T) => R>, valueAssertion: Assertion<T>): Assertion<R> { return chain(f => map(f, valueAssertion), fnAssertion); }); export interface ApFn { <T, R>(fnAssertion: Assertion<(value: T) => R>, valueAssertion: Assertion<T>): Assertion<R>; <T, R>(fnAssertion: Assertion<(value: T) => R>): (valueAssertion: Assertion<T>) => Assertion<R>; }