私には機能があります
// Will perform a given function twice
let twice f = (fun x -> f (f x))
それから私は何かを持っています。
// Take x add 1
let f x = x+1
2回呼び出す方法に応じて、左結合性に対する動作が異なります。
(twice (twice (twice (twice f)))) 0;; // Outputs 16
twice twice twice twice f 0;; // Outputs 65536
もう 2 回追加すると、私のプログラムは StackOverflow を実行しますが、これまでのところ、パターンなしで動作しているように見えます。
twice
呼び出される回数を k とします。
カリー化されていないのは、答えを得るのに 2^k です。
カレーは非常に奇妙です。仮説 1:呼び出し回数が 4 未満の場合は 2^(2^(k-1)) のように見えるが、k が 4 の場合は 2^(2^k) のように動作する
誰かがパターンを見ますか?または、それを証明するために k = 4 を超えて実行できますか?