eitherMap

AsyncResult.eitherMap

Namespace: FsToolkit.ErrorHandling

Applies one of two mapping functions to an Async<Result<'okInput, 'errorInput>>: the first function is applied if the result is Ok, and the second is applied if the result is Error.

Function Signature:

('okInput -> 'okOutput)
  -> ('errorInput -> 'errorOutput)
  -> Async<Result<'okInput, 'errorInput>>
  -> Async<Result<'okOutput, 'errorOutput>>

Examples

Example 1

Transforming both the Ok and Error branches of an async result:

let result : Async<Result<string, int>> =
  AsyncResult.ok 42
  |> AsyncResult.eitherMap
       (fun n -> sprintf "Got %d" n)
       (fun err -> -1)
// evaluates to Ok "Got 42"

Example 2

Mapping an Error value while the Ok path is unchanged in type:

Example 3

Normalising both branches to the same type before consuming:

Last updated