mapErrors

Namespace: FsToolkit.ErrorHandling

Similar to TaskValidation.mapError, except that the mapping function is passed the full list of errors, rather than each one individually.

Function Signature

('errorInput list -> 'errorOutput list) -> TaskValidation<'ok, 'errorInput> 
    -> TaskValidation<'ok, 'errorOutput>

Examples

Take the following functions for example

// string -> int
let getErrorCode (messages: string list) =
    match messages |> List.tryFind ((=) "bad things happened") with
    | Some _ -> [1]
    | _ -> [0]

Example 1

let result =
    TaskValidation.ok "all good" // TaskValidation<string, string>
    |> TaskValidation.mapErrors getErrorCode // TaskValidation<string, int>

// task { Ok "all good" }

Example 2

let result : TaskValidation<string, int> =
    TaskValidation.error "bad things happened" // TaskValidation<string, string>
    |> TaskValidation.mapErrors getErrorCode // TaskValidation<string, int>

// task { Error [1] }

Last updated