def curry(func, *args, **keywords):
def recur(*missing_args, **missing_keywords):
if (not missing_args) and (not missing_keywords):
return func(*args, **keywords)
else:
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)()