1

私はいくつかの例を読んでいて、このコードに出くわしましたが、グーグルは失敗しました。

let id = fun x -> x in fun x -> if x> 0 then id [] else (id x) :: [];;
- : int -> int list = <fun>

Caml が教えてくれるように、これは一般的な関数であることが証明されています。

しかし、"let rec" の代わりに "let" があり、一方で関数名 id が関数本体に数回表示されます。

これは一見非論理的に見えます。

だから私は考えていた

1. is this actually a recursive function? 

2. Or they just happen to be different types reusing the same name confusingly. 

あなたの洞察に満ちたアイデアを、具体的な根拠に基づいた明確な理由付けで示していただけますか?

4

1 に答える 1