Combine F # async e talvez expressão de computação
Digamos que eu queira devolver umOption
enquanto em umasync
fluxo de trabalho:
let run =
async {
let! x = doAsyncThing
let! y = doNextAsyncThing x
match y with
| None -> return None
| Some z -> return Some <| f z
}
Idealmente, eu usaria a expressão talvez de cálculo do FSharpx ao mesmo tempo que async para evitar fazer omatch
. Eu poderia fazer um construtor personalizado, mas existe uma maneira de combinar genericamente duas expressões de computação? Pode parecer algo assim:
let run =
async {
let! x = doAsyncThing
let! y = doNextAsyncThing x
return! f y
}