コードは次のとおりです。
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は何とか強制することができますか?