code: function _curried (f, xs) {
      let t = typeOf(f);
      if (t === 'Function') {
          return f.length <= 1 ? f : arity(f.length - xs.length, (...ys) => {
              let a = [...xs, ...ys].filter(v => v !== void 0);
              if (a.length >= f.length) { return f(...a); }
              return _curried(f, a);
          });
      }
      throw `curry :: Expected argument to be of type function but saw ${t}`;
  }
docs: /*
  @module lambda