我正在阅读一些示例并遇到此代码,谷歌让我失望了。
let id = fun x -> x in fun x -> if x> 0 then id [] else (id x) :: [];;
- : int -> int list = <fun>
正如 Caml 告诉我们的,这被证明是一般的函数。
但是它有“let”而不是“let rec”,另一方面,函数名id多次出现在函数体中。
乍一看,这看起来不合逻辑。
所以我在想
1. is this actually a recursive function?
2. Or they just happen to be different types reusing the same name confusingly.
您能否在具体的基础上以清晰的推理展示您的深刻见解?