我有一个功能
// Will perform a given function twice
let twice f = (fun x -> f (f x))
然后我有类似的东西。
// Take x add 1
let f x = x+1
根据我两次调用的方式,它对左关联性的行为有所不同。
(twice (twice (twice (twice f)))) 0;; // Outputs 16
twice twice twice twice f 0;; // Outputs 65536
如果我再添加两次,我的程序会执行 StackOverflow,但到目前为止,它的行为似乎没有模式,这让我发疯。
twice
设 k 为被调用的次数。
Un-curried 是 2^k 得到答案。
咖喱是非常奇怪的。假设 1:当调用次数小于 4 时,它看起来像 2^(2^(k-1)),但当 k 为 4 时,它的行为像 2^(2^k)
有人看到模式吗?或者你可以运行它超过 k = 4 来证明它吗?