2.1-monoids : monoids with ECMAScript class notation

by dimitrs_papadimitriou

HTML

<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>

JavaScript

var fold = function (array,monoid) { 
        var accumulation = monoid.empty();                      // abstracted 0
        for (let i = 0; i < array.length; i++) {
            const element = array[i];
            accumulation = monoid.concat(accumulation, element) // abstracted +
        }
        return accumulation;
    }
  var sum = fold([2, 4, 5, 6], { empty: () => 0, concat: (a, b) => a + b })
   console.log(sum)
  
  var product = fold([2, 4, 5, 6], { empty: () => 1, concat: (a, b) => a * b })
 console.log(product)
 
  var max = fold([2, 4, 5, 6], { empty: () => -Infinity, concat: (a, b) => Math.max(a, b) })
 console.log(max)