Pythonのlambda式による再帰(Yコンビネーター)

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