PythonでYコンビネータを勉強
>>> (lambda f:((lambda p:(f(lambda x:(p(p)(x)))))(lambda p:(f(lambda x: (p(p)(x)))))))(lambda f:(lambda x: not(x) and 1 or x * f(x-1)))(5)
120
一応、階乗を再帰呼び出しで計算してみました。たぶん冗長な括弧があると思います。
« Pythonで「例外が投げられた関数のローカル変数」を取得 |Main| 西尾泰和の活動ダイジェスト »
« Pythonで「例外が投げられた関数のローカル変数」を取得 | Python | Pythonでアッカーマン関数 »
>>> (lambda f:((lambda p:(f(lambda x:(p(p)(x)))))(lambda p:(f(lambda x: (p(p)(x)))))))(lambda f:(lambda x: not(x) and 1 or x * f(x-1)))(5)
120
一応、階乗を再帰呼び出しで計算してみました。たぶん冗長な括弧があると思います。
Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/190