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