2016-06-20 4 views
3

現在、私は次のような構造を持っていますbarを使用してコードの重複を避けることができる別の関数foo2を持つことができます。相互再帰

質問は:私の提案はF#でコンパイルされませんが、それは状態コンテキストのためです。では、構文的に正しい方法で目的のコード構造に到達する方法は何ですか?

+2

どのようなエラーが表示されますか? –

答えて

5

これは私のために正常に動作します:

let rec foo x = 
    async { 
    return! bar x 
    } 
and bar x = 
    async { 
    if x = 0 
     then printfn "bar" 
     else do! foo (x - 1) 
    } 
Async.RunSynchronously (foo 10) 

私が最初のように、フォーマットに問題があったそうでないタイプが出て動作しません、あなたのくぼみが正しいとあなたの感嘆符が正しい場所にいることを確認してください。

+0

実際にasyncで行ったように自分の状態計算をフォーマットして、問題を解決しました。ありがとう! –

+0

@Friedrich Gretz、回答があなたの質問を解決した場合はそれを受け入れます –

+0

@FoggyFinderあなたのコメントが役に立ったのか、かわいそうとされたのかどうかは分かりませんが、解決策をマークする前にstackoverflowによって課されたなど。私は今やっている。 –

関連する問題