http://hibari.2ch.net/test/read.cgi/tech/1287944631/ Pythonのlambdaが表現力不足だって? 代入が式じゃないとかいうけど、関数型言語なんて代入そのものがない場合だってあるんじゃないの? ということで、いろいろ書いてみた。 # 階乗 fact = lambda n:(lambda f: f(f,n))(lambda g,i: i*g(g,i-1) if i>0 else 1) # 内包表記を使わずに、 # for i in range(n): # f(i) # に相当する関数を作る # f(i) and False or g(g, i+1)の部分は[f(i)] and g(g, i+1)でもよい。 loop = lambda f,n: (lambda g: g(g, 0))(lambda g,i: i<n and (f(i)