「プリミティブ」の意味がわかりません。Async.Parallel
関数です。2 つの非同期を実行するいくつかの方法を次に示します。
並行して:
Async.Parallel([|async1; async2|])
また
async {
let! child = Async.StartChild async2
let! result1 = child
let! result2 = async1
return [|result1; result2|]
}
順次:
async {
let! result1 = async1
let! result2 = async2
return [|result1; result2|]
}
最後の 2 つでタプルを返すことができます。戻り値の型は最初のものと同じにしました。
私は、これにプリミティブを使用するのと同じくらい近いブロックであるlet!
と言います。do!
async { }
編集
この厄介な構文がすべてあなたに届いている場合は、コンビネーターを定義できます。
let (<|>) async1 async2 =
async {
let! r1 = async1
let! r2 = async2
return r1, r2
}
そして、次のようにします。
async1 <|> async2 |> Async.RunSynchronously