Połącz F # async i być może wyrażenie obliczeniowe

Powiedz, że chcę zwrócićOption będąc wasync przepływ pracy:

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

Najlepiej byłoby użyć wyrażenia być może obliczeniowego z FSharpx w tym samym czasie co asynchronicznego, aby uniknąć wykonywaniamatch. Mogłem utworzyć niestandardowy program budujący, ale czy istnieje sposób na ogólne połączenie dwóch wyrażeń obliczeniowych? Może to wyglądać mniej więcej tak:

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

questionAnswers(3)

yourAnswerToTheQuestion