私はコードを持っています:
let join a ~with':b ~by:key =
let rec a' = link a ~to':b' ~by:key
and b' = link b ~to':a' ~by:(Key.opposite key) in
a'
コンパイル結果は次のとおりです。
エラー: この種の式は、'let rec' ビルド完了の右辺として許可されていません
私はそれを次のように書き換えることができます:
let join a ~with':b ~by:key =
let rec a'() = link a ~to':(b'()) ~by:key
and b'() = link b ~to':(a'()) ~by:(Key.opposite key) in
a'()
これはコンパイル可能なバリアントですが、実装された関数は無限に再帰的であり、必要なものではありません。
私の質問: 最初の実装が無効なのはなぜですか? 2 つの関数を呼び出して、その結果を互いの引数として使用する方法は?
私のコンパイラのバージョン = 4.01.0