code: def uniq(self, isSorted=False, iterator=None):
          ns = self.Namespace()
          ns.results = []
          ns.array = self.obj
          initial = self.obj
          if iterator is not None:
              initial = _(ns.array).map(iterator)
          def by(memo, value, index):
              if ((_.last(memo) != value or
                   not len(memo)) if isSorted else not _.include(memo, value)):
                  memo.append(value)
                  ns.results.append(ns.array[index])
              return memo
          ret = _.reduce(initial, by)
          return self._wrap(ret)