m1
и m2
в следующих функциях имеют ошибки компиляции.
let m p = async { return p * 2 }
let m1 () = async { do! m 2 } // ERR: was expected 'int' but here has type 'unit'
let m2 () = async { do! m 2 |> ignore } // ERR: expecting 'Async<int>->Async<'a>' but given 'Async<int>->unit'
m
вызывается в последней строке.Как игнорировать его возвращаемое значение?Является ли следующий способ единственным (его исполнение будет оптимизировано компилятором?)?
let m1 () =
async {
let! x = m 2
()
}