docs: def reduce(self, func, memo=None):
          """
          **Reduce** builds up a single result from a list of values,
          aka `inject`, or foldl
          """
          if memo is None:
              memo = []
          ns = self.Namespace()
          ns.initial = True  # arguments.length > 2
          ns.memo = memo
          obj = self.obj
  
          def by(value, index, *args):
              if not ns.initial:
                  ns.memo = value
                  ns.initial = True
              else:
                  ns.memo = func(ns.memo, value, index)
  
          _(obj).each(by)
          return self._wrap(ns.memo)