map f sbj =
async {
let! result = sbj
return f result
}
let and' left right =
[ left |> map Choice1Of2
right |> map Choice2Of2]
|> Async.Parallel
|> map (function
| [|Choice1Of2 left; Choice2Of2 right|] -> left, right
| p -> failwithf "WTF? %A" p
)
let a,(b,c) =
async.Return "a"
|> Async.and' (async.Return "b")
|> Async.and' (async.Return "c")
|> Async.RunSynchronously
Наверное надо инвертировать результат left и right. Или сделать доп версию дабы не получать "инвертированный" кортеж.
Обсуждают сегодня