export type COMPOSE = <T>(fn1: (a: T) => T, ...fns: Array<(a: T) => T>) => (a: T) => T export const compose: COMPOSE = (fn1, ...fns) => fns.reduce( (prevFn, nextFn) => (value) => prevFn(nextFn(value)), fn1 );