zip(other, combiner) {
        let seq = this._iterable;
        return Seq.fromGenerator(function*() {
            let iter2 = other[Symbol.iterator]();
            for (let item1 of seq) {
                let item2 = iter2.next();
                if (item2.done) {
                    break;
                }
                yield combiner(item1, item2.value);
            }
        });
    }
Combines this sequence with another by passing items with the same index through a combining function.
If one sequence is longer than the other, the lonely tail is discarded.

@param {!(T2[])|!Seq.<T2>|!Iterable.<T2>} other
@param {!function(T, T2) : R} combiner

@returns {!Seq.<R>}

@template T, T2, R