functionalscript
Version:
FunctionalScript is a purely functional subset of JavaScript
20 lines (19 loc) • 1.1 kB
TypeScript
export type Binary<A, B, R> = (a: A) => (b: B) => R;
export type Fold<I, O> = Binary<I, O, O>;
export declare const join: (separator: string) => Reduce<string>;
export declare const concat: Reduce<string>;
export type Unary<T, R> = (value: T) => R;
export declare const logicalNot: Unary<boolean, boolean>;
export type Equal<T> = Binary<T, T, boolean>;
export declare const strictEqual: <T>(a: T) => (b: T) => boolean;
export type Scan<I, O> = (input: I) => readonly [O, Scan<I, O>];
export type StateScan<I, S, O> = (prior: S) => (input: I) => readonly [O, S];
export declare const stateScanToScan: <I, S, O>(op: StateScan<I, S, O>) => (prior: S) => Scan<I, O>;
export declare const foldToScan: <I, O>(fold: Fold<I, O>) => (prior: O) => Scan<I, O>;
export type Reduce<T> = Fold<T, T>;
export declare const reduceToScan: <T>(op: Reduce<T>) => Scan<T, T>;
export declare const addition: Reduce<number>;
export declare const min: Reduce<number>;
export declare const max: Reduce<number>;
export declare const increment: (b: number) => number;
export declare const counter: () => (b: number) => number;