title: lodash curry does not work on function returned by flow; lodash FP enough for FP?
body: <p>Is the lodash flow function a real compose function, or is it something that looks like one, but is optimized to run fast and sacrifices the flexibility I'd expect? I expected flow to return a function I could curry, but instead it gave back a function that uses Javascript's arguments keyword. So curry can't tell that there are pending arguments, and it just gets invoked immediately.</p>
  
  <p>Working intuitively enough:</p>
  
  <pre><code>var add = function(x, y) { 
      return x + y 
  };
  var exclam = function(x) { 
      return x.toString() + "!"; 
  }
  exclam(1) // "1!"
  add(1,2) // 3
  var add1 = FP.curry(add)(1);
  add1(4) // 5
  var add1AndExclam = FP.flow([add1, exclam])
  add1AndExclam(2) // "3!"
  </code></pre>
  
  <p>Non-intuitive result:</p>
  
  <pre><code>addAndExclam = FP.flow([add, exclam])
  /*
  function(){
      var t=arguments,e=t[0];
      if(i&amp;&amp;1==t.length&amp;&amp;yi(e)&amp;&amp;e.length&gt;=200)return i.plant(e).value();
      for(var u=0,t=r?n[u].apply(this,t):e;++u&lt;r;)t=n[u].call(this,t);
      return t
  }
  */
  addAndExclam(1,2) // "3!"
  add1AndExclamV2 = FP.curry(addAndExclam)(1) // "NaN!"`
  </code></pre>
  
  <p>Is it overkill to look for another library to help with functional programming paradigms? Should I just whip up my own compose? I used lodash because it was already in my project. The documentation makes it look like flow should be lodash's compose.</p>
  
  <p>I've also found it really difficult to curry the data argument in lodash's each (I wanted something like an eachMyArrayName shortcut). Whether I use curryRight or the lodash object placeholder convention.</p>
  
  <p>Is lodash FP just for making lodash functions auto curriable? Or am I doing something wrong, and it is usable as the main functional programming helper?</p>
  
  <p>Edit:</p>
  
  <p>If I want to I can wrap the function like this, but it seems to defeat the purpose of meta programming to have boilerplate looking code.</p>
  
  <pre><code>add1AndExclamV2 = FP.curry(function(x, y) { 
      return addAndExclam(x, y) 
  })(1)
  add1AndExclamV2(2)
  </code></pre>
  
  <p>"3!"`</p>