0

私は ocaml プロジェクトに取り組んでおり、構文を学んでいます。次の形式のプログラムを見ました。

 let foo1 = function
    |(x, y) -> foo2 (x,y) z
 and foo2 a s=
    (*stuff in here*)

そこで何をしているのか気になりandます。それが何を意味するのかオンラインで探してみましたが、何も見つからないようです。また、タイプミスの可能性もあります...アドバイスをいただければ幸いです。ありがとう!

4

1 に答える 1

6

and相互に再帰的な関数/データ型を定義するために使用されます。

がなければ、 fromとfromのand両方を呼び出すことはできません。これらの 1 つしか持つことができません。foo2foo1foo1foo2

あなたの例では、それを機能させる必要もありrecます。なしはrecand通常の と同じletです。

相互に再帰的な 2 つの関数定義を次に示します。

let rec some_fun1 _ =
    print_endline "fun1";
    some_fun2 ()

and some_fun2 _ =
    print_endline "fun2";
    some_fun1 ()

(私が上で言ったように、recこれなしでは動作しません)

于 2013-01-31T11:14:09.507 に答える