import {identity} from './core'; // ------------ @author Daniel de Oliveira ----------------- const composition = (t: any, ...transformations: Array) => compose(...transformations)(t) as any; export const flow = composition; export const compose = (...transformations: Array) => (t: any) => transformations.reduce((acc, transformation) => transformation(acc), t) as any; export const cond = ( p: (_: A) => boolean, f: (_: A) => B, g: (_: A) => C = identity as (_: A) => C) => (v: A): B|C => p(v) ? f(v) : g(v); export const nop = () => {}; export const val = (v: A) => () => v;