Example #1
0
def transduce(transducer, iterable):
    r = transducer(appending())
    accumulator = deque()
    reduced = False
    for item in iterable:
        accumulator = r.step(accumulator, item)
        if isinstance(accumulator, Reduced):
            accumulator = accumulator.value
            reduced = True

        yield from pending_in(accumulator)

        if reduced:
            break

    completed_result = r.complete(accumulator)
    assert completed_result is accumulator

    yield from pending_in(accumulator)
Example #2
0
def transduce(transducer, iterable):
    r = transducer(appending())
    accumulator = deque()
    reduced = False
    for item in iterable:
        accumulator = r.step(accumulator, item)
        if isinstance(accumulator, Reduced):
            accumulator = accumulator.value
            reduced = True

        yield from pending_in(accumulator)

        if reduced:
            break

    completed_result = r.complete(accumulator)
    assert completed_result is accumulator

    yield from pending_in(accumulator)
Example #3
0
 def __iter__(self):
     yield from pending_in(self._items)