Combina F # asíncrono y tal vez expresión computacional
Di que quiero devolver unOption
mientras que en unasync
flujo de trabajo:
let run =
async {
let! x = doAsyncThing
let! y = doNextAsyncThing x
match y with
| None -> return None
| Some z -> return Some <| f z
}
Lo ideal sería utilizar la expresión de cálculo de tal vez de FSharpx al mismo tiempo que async para evitar hacer elmatch
. Podría crear un constructor personalizado, pero ¿hay una manera de combinar genéricamente dos expresiones de cálculo? Podría verse algo como esto:
let run =
async {
let! x = doAsyncThing
let! y = doNextAsyncThing x
return! f y
}