""" user=> (transduce (map inc) + 0 [1 2 3]) 9 user=> (transduce (map inc) - 10 [1 2 3]) -1 """ def transduce(transducer, reducer, iterable, memo): return reduce(transducer(reducer), iterable, memo) def transducer(fn): def wrapper(a, b): return fn(a, b) + 1 return wrapper def reducer(acc, n): return acc + n print(transduce(transducer, reducer, [1, 2, 3], 0))