こんにちは、私は関数型プログラミングが初めてです。私がしたことは
>>> g=lambda x:x*2
>>> f=g
>>> g=lambda x:f(f(x))
>>> g(9)
36
現在、非g
終了の再帰関数として作成されているのではなくg(x)
、結果を返す新しい関数に変換されていますg(g(x))
。
>>> f=g
>>> g=lambda x:f(f(x))
>>> f(8)
RuntimeError: maximum recursion depth exceeded
g(x) の最初の定義によるとg
、結果を返す関数に変換されることを期待していました。g(g(g(x)))
なぜそうしないのですか?g(g(g(...(g(x))....)))
このようにして特定の回数の繰り返しになる新しい関数を作成することは可能ですか?