code: function _curry (fn, arity, isRightCurry, isAutoCurry) {
      if (arity >>> 0 !== arity) {
          arity = fn.length;
      }
  
      if (isAutoCurry && arity > 1 || arity > 3) {
          return _currier(fn, arity, isRightCurry, isAutoCurry, []);
      } else if (arity === 2) {
          return _curry2(fn, isRightCurry);
      } else if (arity === 3) {
          return _curry3(fn, isRightCurry);
      } else {
          return fn;
      }
  }
docs: Prepares a function for currying. If it's not auto-currying and the arity
  is 2 or 3 returns optimized functions, otherwise delegates the currying
  to the <code>_currier</code> function.<br/>
  If the desumed arity isn't greater than one, it will return the received
  function itself, instead.
  @private
  @param {Function} fn
  @param {Number} [arity=fn.length]
  @param {Boolean} [isRightCurry=false]
  @param {Boolean} [isAutoCurry=false]
  @returns {Function}