import { Kind } from '@fp4ts/core'; import { Functor, FunctorRequirements } from './functor'; import { ArrayF } from './instances/array'; /** * @category Type Class */ export interface Zip extends Functor { /** * Combines given structures by taking an intersection of their shapes and * applying function `f` to combine the corresponding element pairs. * * @note A version of `zip` with a user-supplied zipping function. */ zipWith(fb: Kind, f: (a: A, b: B) => C): (fa: Kind) => Kind; /** * Combines given structures by taking an intersection of their shapes and * applying function `f` to combine the corresponding element pairs. * * @note A version of `zip` with a user-supplied zipping function. */ zipWith_(fa: Kind, fb: Kind, f: (a: A, b: B) => C): Kind; /** * Returns a structure of corresponding element pairs from the intersection * of the provided structures' shapes. */ zip(fb: Kind): (fa: Kind) => Kind; /** * Returns a structure of corresponding element pairs from the intersection * of the provided structures' shapes. */ zip_(fa: Kind, fb: Kind): Kind; } export type ZipRequirements = (Pick, 'zip'> | Pick, 'zipWith_'>) & FunctorRequirements & Partial>; export declare const Zip: Readonly<{ of: (F: ZipRequirements) => Zip; readonly Array: Zip; }>; //# sourceMappingURL=zip.d.ts.map