bind
Namespace: FsToolkit.ErrorHandling
bind
takes a transformation function 'okInput -> Result<'okOutput, 'error>
and a Result<'okInput, 'error>
. If the Result is Ok x
, it applies the transformation function to x
, which returns a new Result<'okOutput, 'error>
. The bind function then returns the new Result<'okOutput, 'error>
. If the original Result is an Error, it simply returns the original Error unchanged without invoking the transformation function.
Function Signature
('okInput -> Result<'okOutput, 'error>) -> Result<'okInput, 'error>
-> Result<'okOutput, 'error>
Examples
Take the following function for example
// string -> Result<int, string>
let tryParseInt (s: string) =
match Int32.TryParse(s) with
| true, i -> Ok i
| false, _ -> Error "Could not parse string as int"
Example 1
let result =
Ok "123" // Result<string, string>
|> ResultOption.bind tryParseInt // Result<int, string>
// Ok 123
Example 2
let result =
Ok "bad things happened" // Result<string, string>
|> ResultOption.bind tryParseInt // Result<int, string>
// Error "Could not parse string as int"
Example 3
let result =
Error "bad things happened" // Result<string, string>
|> ResultOption.bind tryParseInt // Result<int, string>
// Error "bad things happened"
Last updated