title: Javascript usages of bind vs curry*?
body: <p>I'm trying to understand the difference between <code>curry</code> vs <code>bind</code>.</p>
  
  <p>The implementation of <code>bind</code> is : </p>
  
  <pre><code>/*1*/   Function.prototype.bind = function ()
  /*2*/   {
  /*3*/        var fn = this,
  /*4*/           args = Array.prototype.slice.call(arguments);
  /*5*/       var object = args.shift();
  /*6*/       return function ()
  /*7*/       {
  /*8*/           return fn.apply(object, 
  /*9*/                           args.concat(Array.prototype.slice.call(arguments)))
  /*10*/       };
  /*11*/   }
  </code></pre>
  
  <p>The implementation of <code>curry</code> is : </p>
  
  <pre><code>/*1*/   Function.prototype.curry = function ()
  /*2*/   {
  /*3*/       var fn = this,
  /*4*/           args = Array.prototype.slice.call(arguments);
  /*5*/       return function ()
  /*6*/       {
  /*7*/           return fn.apply(this, 
  /*8*/                           args.concat(Array.prototype.slice.call(arguments)));
  /*9*/       };
  /*10*/   };
  </code></pre>
  
  <p>I already know that <code>curry</code> is not an internal function (unlike <code>bind</code> which is in IE9+). But still: </p>
  
  <p>Why do  I hear people keep talking about <code>curry</code>  , While they can simply use <code>bind</code> operation ? </p>
  
  <p>The only difference is the context which is actually found only at the <code>bind</code>  function. </p>
  
  <p><a href="https://i.stack.imgur.com/SvK0d.jpg" rel="noreferrer">differences</a></p>
  
  <p><img src="https://i.stack.imgur.com/SvK0d.jpg" alt="enter image description here"></p>
  
  <p>Example : </p>
  
  <p>Let's say I have this function : </p>
  
  <pre><code>function add(x,y,z)
  {
    return x+y+z;
  }
  </code></pre>
  
  <p>I could do it with <code>curry</code> : </p>
  
  <pre><code>alert(add.curry(2).curry(1)(4)) //7
  </code></pre>
  
  <p>But I could also do it with : </p>
  
  <pre><code>alert(add.bind(undefined,2).bind(undefined,1)(4)) //7
  </code></pre>
  
  <p>I don't understand why this <code>curry</code> term function exists while it is possible   to add a dummy context to the bind function.</p>
  
  <p>What am I missing ? </p>