Объединить F # асинхронное и, возможно, вычислительное выражение

Скажи, что я хочу вернутьOption в то время как вasync рабочий процесс:

let run = 
    async {
        let! x = doAsyncThing
        let! y = doNextAsyncThing x
        match y with
        | None -> return None
        | Some z -> return Some <| f z
    }

В идеале я бы использовал выражение вычисления от FSharpx в то же время, что и async, чтобы избежатьmatch, Я мог бы сделать собственный конструктор, но есть ли способ объединить два вычислительных выражения? Это может выглядеть примерно так:

let run = 
    async {
        let! x = doAsyncThing
        let! y = doNextAsyncThing x
        return! f y
    }

Ответы на вопрос(3)

Ваш ответ на вопрос