UNPKG

@jsoldi/hkt

Version:

Higher kinded types for typescript and a few utility monads.

44 lines 1.63 kB
import { KRoot } from "../core/hkt.js"; import { IMonadPlus } from "../classes/monadPlus.js"; import { Maybe } from "./maybe.js"; /** * @deprecated use `Async<T>` instead */ export type Gen<T> = AsyncGenerator<T, void, void>; /** * @deprecated use `KAsync` instead */ export interface KGen extends KRoot { readonly 0: unknown; readonly body: Gen<this[0]>; } type Awaitable<T> = T | Promise<T>; type GenLike<T> = (() => GenLike<T>) | T[] | Promise<T>; /** * @deprecated use `IAsync` instead */ export interface IGen extends IMonadPlus<KGen> { from: <T>(genlike: GenLike<T>) => Gen<T>; flat: <T>(gen: Gen<Gen<T>>) => Gen<T>; take: (n: number) => <T>(fa: Gen<T>) => Gen<T>; forEach: <T>(f: (a: T) => void) => (fa: Gen<T>) => Gen<T>; toArray: <T>(fa: Gen<T>) => Promise<T[]>; filter: { <T, S extends T>(pred: (a: T) => a is S): (fa: Gen<T>) => Gen<S>; <T>(pred: (a: T) => unknown): (fa: Gen<T>) => Gen<T>; }; takeWhile: <T>(pred: (a: T) => unknown) => (fa: Gen<T>) => Gen<T>; skipWhile: <T>(pred: (a: T) => unknown) => (fa: Gen<T>) => Gen<T>; distinctBy: <T, K>(key: (a: T) => K) => (fa: Gen<T>) => Gen<T>; distinct: <T>(fa: Gen<T>) => Gen<T>; chunks: <T>(size: number) => (fa: Gen<T>) => Gen<T[]>; reduce: <T, U>(acc: U, f: (acc: U, a: T) => U) => (fa: Gen<T>) => Promise<U>; unfoldr: <A, B>(f: (b: B) => Awaitable<Maybe<[A, B]>>) => (b: B) => Gen<A>; flatMapFrom: <A, B>(f: (a: A) => GenLike<B>) => (fa: Gen<A>) => Gen<B>; } /** * @deprecated use `async` instead */ export declare const gen: IGen; export {}; //# sourceMappingURL=gen.d.ts.map