UNPKG

@jsoldi/hkt

Version:

Higher kinded types for typescript and a few utility monads.

20 lines 1.09 kB
import { $, $B2, ITypeClass } from "../core/hkt.js"; import { TypeClassArg } from "./utilities.js"; import { IMonad } from "./monad.js"; /** The minimal definition of a traversable. */ export interface ITraversableBase<F> extends ITypeClass<F> { /** Map each element in `fa` to a monad and evaluate the results from left to right. */ traverse<M>(m: IMonad<M>): <A, B>(f: (a: A) => $<M, B>) => (fa: $<F, A>) => $<M, $<F, B>>; } /** The traversable interface. */ export type ITraversable<F> = ITraversableBase<F> & { /** Evaluate each monadic value in `fma` from left to right. */ sequence<M>(m: IMonad<M>): <A>(fma: $<F, $<M, A>>) => $<M, $<F, A>>; /** Nest a traversable within another traversable. */ nestTraversable<G>(t: ITraversableBase<G>): ITraversable<$B2<F, G>>; }; declare const is_traversable: unique symbol; /** Creates an `ITraversable` from an `ITraversableBase`. */ export declare function traversable<F>(base: TypeClassArg<ITraversableBase<F>, ITraversable<F>, typeof is_traversable>): ITraversable<F>; export {}; //# sourceMappingURL=traversable.d.ts.map