effect-ts-folds
Version:
Recursion schemes for effect-ts.
27 lines • 1.36 kB
TypeScript
import { Covariant as CO } from '@effect/typeclass';
import { Array as AR } from 'effect';
import { TypeLambda } from 'effect/HKT';
import { Algebra } from './folds.js';
/**
* Convert a tuple of algebras into an algebra of a tuple.
* @category ops
*/
export declare const zipFolds: <F extends TypeLambda>(F: CO.Covariant<F>) => <const Targets extends AR.NonEmptyArray<unknown>, E = unknown, R = never>(...[head, ...tail]: TupledAlgebras<F, Targets, E, R>) => Algebra<F, Targets, E, R>;
/**
* Append an algebra to an algebra of a tuple.
* @category ops
*/
export declare const appendFold: <F extends TypeLambda>(F: CO.Covariant<F>) => <const Targets extends AR.NonEmptyArray<unknown>, A, E = unknown, R = never>(algebra: Algebra<F, Targets, E, R>, append: Algebra<F, A, E, R>) => Algebra<F, [...Targets, A], E, R>;
/**
* Convert an algebra of `A` into an algebra of `[A]`.
* @category ops
*/
export declare const unaryTuple: <F extends TypeLambda>(F: CO.Covariant<F>) => <A, E = unknown, R = never>(fold: Algebra<F, A, E, R>) => Algebra<F, [A], E, R>;
/**
* The type of a tuple of algebras with the given `Targets`.
* @category ops
*/
export type TupledAlgebras<F extends TypeLambda, Targets extends [unknown, ...unknown[]], R = never, E = unknown> = {
[K in keyof Targets]: Algebra<F, Targets[K], E, R>;
};
//# sourceMappingURL=tuple.d.ts.map