from itertools import starmap from funcy import iterate, first, curry, map def until(cond, func, *args, **kwargs): return first(filter(cond, iterate(func, *args, **kwargs))) def lift(fn): return curry(map)(fn) def starlift(fn): return curry(starmap)(fn)