Я пытаюсь написать currying decorator в python, и я думаю, что у меня общая идея, но все еще есть некоторые случаи, которые не работают правильно...
def curry(fun):
cache = []
numargs = fun.func_code.co_argcount
def new_fun(*args, **kwargs):
print args
print kwargs
cache.extend(list(args))
if len(cache) >= numargs: # easier to do it explicitly than with exceptions
temp = []
for _ in xrange(numargs):
temp.append(cache.pop())
fun(*temp)
return new_fun
@curry
def myfun(a,b):
print a,b
Пока для следующего случая это отлично работает:
myfun(5)
myfun(5)
В следующем случае это не удается:
myfun(6)(7)
Любые указатели на то, как правильно это сделать, будут очень признательны!
Спасибо!