UNPKG

pragmatic-fp-ts

Version:

Opinionated functional programming library with easy use in mind

40 lines (39 loc) 1.63 kB
import { Effect, Mappable, Predicate } from "./main"; import { Monad } from "./types"; export type Maybe<A> = Just<A> | Nothing<A>; export type MaybeMatcher<A, B> = { just?: Mappable<NonNullable<A>, B>; nothing?: () => B; }; export declare class Nothing<A> extends Monad<A> { _<B>(_: Mappable<A, B>): Maybe<NonNullable<B>>; bind: <B>(_: Mappable<A, B>) => Maybe<NonNullable<B>>; bindM<B>(_: Mappable<Monad<A>, Monad<B>>): Maybe<NonNullable<B>>; filter(_: any): Maybe<NonNullable<A>>; effect(_: any): Maybe<NonNullable<A>>; getValue(): A; getValueOr(alt: A): A; match<B>(matcher: MaybeMatcher<A, B>): Maybe<NonNullable<B>>; isNothing(): boolean; isJust(): boolean; } export declare class Just<A> extends Monad<A> { readonly value: A; constructor(value: A); _<B>(fn: Mappable<A, B>): Maybe<NonNullable<B>>; bind: <B>(fn: Mappable<A, B>) => Maybe<NonNullable<B>>; bindM<B>(fn: Mappable<Monad<A>, Monad<B>>): Maybe<NonNullable<B>>; filter(fn: Predicate<A>): Maybe<NonNullable<A>>; effect(fn: Effect<A>): Maybe<NonNullable<A>>; getValue(): NonNullable<A>; getValueOr(_: A): A; match<B>(matcher: MaybeMatcher<A, B>): Maybe<NonNullable<B>>; isNothing(): boolean; isJust(): boolean; } export declare const just: <T>(value: T) => Just<T>; export declare const nothing: <T>() => Nothing<T>; export declare const maybe: <U, T = NonNullable<U>>(value: U | Monad<U>) => Maybe<T>; export declare const isJust: (x: unknown) => boolean; export declare const isNothing: (x: unknown) => boolean; export declare const isMaybe: (x: unknown) => boolean;