PythonによるYコンビネータの仕組みの(多分)わかりやすい説明より。
F = lambda f: lambda n: n if n < 2 else f(n - 1) * n Y = lambda f: (lambda x: lambda m: f(x(x))(m))(lambda x: lambda m: f(x(x))(m)) print(Y(F)(5))
def add_curried(x): def _add(y): return x+y return _add print(add_curried(2)(3)) def add_curried2(x): return lambda y:x + y print(add_curried2(2)(3)) add_curried3 = lambda x:lambda y:x + y print(add_curried3(2)(3))