我知道let rec
用于我想要的recursive
。什么时候我们使用let rec?
例如,
let rec power i x = if i = 0 then 1.0 else x *. (power (i-1) x);;
好吧,我理解这一点。
但是这个怎么样:
let x y = y + y in x 2
?
我应该在里面用rec
吗?
我想我应该,因为它里面有x 2
,加载本身,但它似乎与编译器很好。
那么当我应该使用let rec
而不应该?
另外,就是
let (-) x y = y - x in 1-2-3;;
和
let rec (-) x y = y - x in 1-2-3;;
的区别他们是否合法?
你能解释一下为什么'让rec( - )x y = y - x in 1-2-3 ;;'会永远循环吗? –
@JacksonTale:你正在定义函数'-',然后在函数体'x-y'内使用它。所以,'x-y'再次被扩展(有点)到'x-y'中......然后...... –
@AsiriRathnayake你的意思是我** rec ** define **( - )**,然后** yx **将变成** xy **然后** yx **然后** xy ** .....不停止? –