def curry(func, *args, **keywords):
try:
return func(*args, **keywords)
except TypeError:
def recur(*missing_args, **missing_keywords):
new_keywords = keywords.copy()
new_keywords.update(missing_keywords)
return curry(func, *(args + missing_args), **new_keywords)
return recur
def sumfive(a, b, c, d, e):
return a + b + c + d + e
print curry(sumfive)(1)(2)(3)(4)(5)