読者です 読者をやめる 読者になる 読者になる

pythonでcurryワンライナー

pythonを書いていて、急にcurry化したくなったときはこうする:

import functools
curry = lambda n: lambda f: lambda x: (curry(n - 1)(functools.partial(f, x)) if n > 1 else f(x))

そんでもってこう:

@curry(3)
def func(x, y, z):
    return x + y * z

print(func(42)(4)(-5))  # -> 22