current_base = args[0]
yield initial_retval

while (current_base != final):
    previous_base = current_base
    current_base = args[0]
    yield process_base(previous_base, current_base)

yield final
