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))
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))