docs: function sequence(collection, xform) {
    switch (true) {
      case isArray(collection):
        return asArray(collection, xform);
      case isObject(collection):
        return asObject(collection, xform);
      case isString(collection):
        return asString(collection, xform);
      case isImplemented(collection, 'step'):
        return transduce(collection, xform, collection);
      case isImplemented(collection, 'iterator'):
        return asIterator(collection, xform);
      default:
        throw Error(`Cannot sequence collection: ${collection}`);
    }
  }