Skip to content

Latest commit

 

History

History
31 lines (26 loc) · 1.15 KB

converge.md

File metadata and controls

31 lines (26 loc) · 1.15 KB
title tags author_title author_url author_image_url description image
converge
function
intermediate
Deepak Vishwakarma
Implementation of "converge" in typescript, javascript and deno.

JS

Accepts a converging function and a list of branching functions and returns a function that applies each branching function to the arguments and the results of the branching functions are passed as arguments to the converging function.

Use Array.prototype.map() and Function.prototype.apply() to apply each function to the given arguments. Use the spread operator (...) to call coverger with the results of all other functions.

const converge =
  (converger, fns) =>
  (...args) =>
    converger(...fns.map((fn) => fn.apply(null, args)));
const average = converge(
  (a, b) => a / b,
  [(arr) => arr.reduce((a, v) => a + v, 0), (arr) => arr.length]
);
average([1, 2, 3, 4, 5, 6, 7]); // 4