traverseResultA

Namespace: FsToolkit.ErrorHandling

Function Signature

('a -> Result<'b,'c>) -> 'a seq -> Result<'b seq, 'c seq>

Note that traverse is the same as map >> sequence. See also Seq.sequenceResultA.

This is applicative, collecting all errors. Compare the example below with traverseResultM.

See also Scott Wlaschin's Understanding traverse and sequence.

Examples

Example 1

// string -> Result<int, string>
let tryParseInt str =
  match Int32.TryParse str with
  | true, x -> Ok x
  | false, _ -> 
    Error (sprintf "unable to parse '%s' to integer" str)

["1"; "2"; "3"]
|> Seq.traverseResultA tryParseInt
// Ok [1; 2; 3]

["1"; "foo"; "3"; "bar"]
|> Seq.traverseResultA tryParseInt
//  Error ["unable to parse 'foo' to integer";
//         "unable to parse 'bar' to integer"]

Example 2

Last updated