rec Y funcトラッカーargs = func args(Y funcトラッカー(トラッカーargs)) let fib N =(fun(x、y)-> x)(Y (fun N(前、pprev)-> if N = 1 then(1、0)else(prev + pprev、prev)) (楽しいN-> N-1) N) メイン= let value = fib 10 System.Console.WriteLine(値) System.Console.ReadKey()
コンパイルして起動するとき、最初のラムダ関数をN = 0で完全に計算する代わりに、ある地獄のために、ゼロ未満のN値を必要とする人はいないと計算します!
何が起こっているの? たぶん怠inessは何とか強制することができますか?