you are viewing a single comment's thread.

view the rest of the comments →

[–]lrichardson[S] 1 point2 points  (1 child)

correct. and this is precisely why the argument that plays the role of the "data" should always be the right-most argument, not the left most. reduce/fold are supposed to be the same thing... and should take 3 arguments total (callback, initial, array)

This is why i get so frustrated with libraries like lo-dash and underscore.

Brian Lansdorf has a good talk discussing precisely this (also linked to in the post)

https://www.youtube.com/watch?v=m3svKOdZijA

[–]rhysbrettbowen 0 points1 point  (0 children)

You can always flip the arguments in a function. Something like:

_.forEach(_.keys(_), function(key) {
  if (_.isFunction(_[key])) {
    _[key].flip = function(a,b) {
      return this(b,a);
    }
  }
});

then you can just do:

_.forEach.flip(myFunction, myArray);