UNPKG

@markandrus/effect-derive

Version:

Derive Covariant (Functor), Foldable, and Traversable instances, as well as base functors, for algebraic data types (ADTs)

8 lines (7 loc) 620 B
import { type Covariant } from '@effect/typeclass/Covariant'; import { type Kind, type TypeClass, type TypeLambda } from 'effect/HKT'; export interface Corecursive<T extends TypeLambda, F extends TypeLambda, TR, TO, TE, TA, FR, FO, FE> extends TypeClass<T> { readonly F: Covariant<F>; readonly embed: (f: Kind<F, FR, FO, FE, Kind<T, TR, TO, TE, TA>>) => Kind<T, TR, TO, TE, TA>; } export declare const ana: <T extends TypeLambda, F extends TypeLambda, TR, TO, TE, TA, FR, FO, FE>(T: Corecursive<T, F, TR, TO, TE, TA, FR, FO, FE>) => <B>(g: (b: B) => Kind<F, FR, FO, FE, B>) => (b: B) => Kind<T, TR, TO, TE, TA>;