docs: function makeCurry(func, { arity = func.length, args = [] } = {}) {
      return function curried(...rest) {
  
          // 校验参数
          if (rest.length) {
              let count = 0,
                  arr = [],
                  cb = arg => {
                      arg === _ && count++;
                      arr.push(arg);
                  };
  
              // 补全点位
              args.forEach(arg => {
                  cb(arg === _ && rest.length ? rest.shift() : arg);
              });
  
              // 遍历能数
              rest.length && rest.forEach(cb);
  
              // 执行回调
              return (
                  count < 1 && arr.length >= arity ?
                      func.apply(this, arr) :
                      makeCurry(func, { arity, args: arr })
              );
          }
  
          // 返回原函数
          return curried;
      };
  }