私は ocaml プロジェクトに取り組んでおり、構文を学んでいます。次の形式のプログラムを見ました。
let foo1 = function
|(x, y) -> foo2 (x,y) z
and foo2 a s=
(*stuff in here*)
そこで何をしているのか気になりandます。それが何を意味するのかオンラインで探してみましたが、何も見つからないようです。また、タイプミスの可能性もあります...アドバイスをいただければ幸いです。ありがとう!
and相互に再帰的な関数/データ型を定義するために使用されます。
がなければ、 fromとfromのand両方を呼び出すことはできません。これらの 1 つしか持つことができません。foo2foo1foo1foo2
あなたの例では、それを機能させる必要もありrecます。なしはrec、and通常の と同じletです。
相互に再帰的な 2 つの関数定義を次に示します。
let rec some_fun1 _ =
print_endline "fun1";
some_fun2 ()
and some_fun2 _ =
print_endline "fun2";
some_fun1 ()
(私が上で言ったように、recこれなしでは動作しません)