ResultModule
PackageReified.Result
Fail-fast helpers over the standard F#
Result type.Summary
| Name | Signature | Synopsis |
|---|---|---|
| ok | ok value | Creates an Ok result. |
| error | error failure | Creates an Error result. |
| map | map mapper result | Maps the success value of a result. |
| mapError | mapError mapper result | Maps the error value of a result. |
| bind | bind binder result | Binds a result to the next fail-fast operation. |
| orElseWith | orElseWith fallback result | Computes a fallback result from the source error when the result fails. |
| orElse | orElse fallback result | Falls back to another result when the source result fails. |
| okIf | okIf predicate input | Keeps the input value when the predicate holds, or returns the supplied error. |
| failIf | failIf predicate input | Keeps the input value when the predicate does not hold, or returns the supplied error. |
| require | require condition | Requires an already-computed condition where there is no subject value to preserve. |
| orError | orError failure result | Replaces whatever error a result carries with the supplied typed error. |
| fromTry | fromTry (tryResult, tryResult) | Converts a .NET Try* tuple into a unit-error result. |
| fromChoice | fromChoice choice | Converts an F# Choice into a result. |
| fromOption | fromOption value | Converts an option into a unit-error result. |
| fromValueOption | fromValueOption value | Converts a value option into a unit-error result. |
| toOption | toOption result | Drops the error channel and returns Some for success. |
| toValueOption | toValueOption result | Drops the error channel and returns ValueSome for success. |
| defaultValue | defaultValue fallback result | Returns the success value or the supplied fallback value. |
| tap | tap effect result | Runs a side effect on the successful value and returns the result unchanged. |
| tapError | tapError effect result | Runs a side effect on the error value and returns the result unchanged. |
| traverse | traverse mapping values | Maps each value with a result-returning function, stopping at the first error. |
| sequence | sequence values | Turns a sequence of results into one fail-fast result containing all successes. |
| traverseAll | traverseAll mapping values | Maps each value with a result-returning function, running every mapping and collecting every error. |
| sequenceAll | sequenceAll values | Turns a sequence of results into one result containing all successes, or every error. |
Creates an
Error result.Parameters
| Name | Type | Description |
|---|---|---|
| failure | 'a |
Returns
Result<'b, 'a>
Maps the success value of a result.
Parameters
| Name | Type | Description |
|---|---|---|
| mapper | 'a -> 'b | |
| result | Result<'a, 'c> |
Returns
Result<'b, 'c>
Maps the error value of a result.
Parameters
| Name | Type | Description |
|---|---|---|
| mapper | 'a -> 'b | |
| result | Result<'c, 'a> |
Returns
Result<'c, 'b>
Binds a result to the next fail-fast operation.
Parameters
| Name | Type | Description |
|---|---|---|
| binder | 'a -> Result<'b, 'c> | |
| result | Result<'a, 'c> |
Returns
Result<'b, 'c>
Computes a fallback result from the source error when the result fails.
Parameters
| Name | Type | Description |
|---|---|---|
| fallback | 'error -> Result<'value, 'error> | |
| result | Result<'value, 'error> |
Returns
Result<'value, 'error>
Verification Examples
let result = Error "boom"
result |> Result.orElseWith (fun error -> Ok (String.length error)) // Ok 4Falls back to another result when the source result fails.
Parameters
| Name | Type | Description |
|---|---|---|
| fallback | Result<'value, 'error> | |
| result | Result<'value, 'error> |
Returns
Result<'value, 'error>
Verification Examples
let result = Error "boom"
result |> Result.orElse (Ok 5) // Ok 5Keeps the input value when the predicate holds, or returns the supplied error.
Parameters
| Name | Type | Description |
|---|---|---|
| predicate | 'input -> bool | |
| input | 'input |
Returns
Result<'input, unit>
Keeps the input value when the predicate does not hold, or returns the supplied error.
Parameters
| Name | Type | Description |
|---|---|---|
| predicate | 'input -> bool | |
| input | 'input |
Returns
Result<'input, unit>
Requires an already-computed condition where there is no subject value to preserve.
Parameters
| Name | Type | Description |
|---|---|---|
| condition | bool |
Returns
Result<unit, unit>
Verification Examples
request.AcceptedTerms |> Result.require |> Result.orError TermsNotAcceptedReplaces whatever error a result carries with the supplied typed error.
Ok passes through unchanged.Parameters
| Name | Type | Description |
|---|---|---|
| failure | 'error | |
| result | Result<'value, 'discardedError> |
Returns
Result<'value, 'error>
Converts a .NET
Try* tuple into a unit-error result.Parameters
| Name | Type | Description |
|---|---|---|
| tryResult | bool | |
| tryResult | 'value |
Returns
Result<'value, unit>
Converts an F#
Choice into a result.Parameters
| Name | Type | Description |
|---|---|---|
| choice | Choice<'value, 'error> |
Returns
Result<'value, 'error>
Converts an option into a unit-error result. The inverse of
toOption.Parameters
| Name | Type | Description |
|---|---|---|
| value | 'value option |
Returns
Result<'value, unit>
Converts a value option into a unit-error result. The inverse of
toValueOption.Parameters
| Name | Type | Description |
|---|---|---|
| value | 'value voption |
Returns
Result<'value, unit>
Drops the error channel and returns
Some for success.Parameters
| Name | Type | Description |
|---|---|---|
| result | Result<'value, 'error> |
Returns
'value option
Drops the error channel and returns
ValueSome for success.Parameters
| Name | Type | Description |
|---|---|---|
| result | Result<'value, 'error> |
Returns
'value voption
Returns the success value or the supplied fallback value.
Parameters
| Name | Type | Description |
|---|---|---|
| fallback | 'value | |
| result | Result<'value, 'error> |
Returns
'value
Runs a side effect on the successful value and returns the result unchanged.
Parameters
| Name | Type | Description |
|---|---|---|
| effect | 'value -> unit | |
| result | Result<'value, 'error> |
Returns
Result<'value, 'error>
Verification Examples
Ok 10 |> Result.tap (printfn "loaded %d") // prints, then returns Ok 10Runs a side effect on the error value and returns the result unchanged.
Parameters
| Name | Type | Description |
|---|---|---|
| effect | 'error -> unit | |
| result | Result<'value, 'error> |
Returns
Result<'value, 'error>
Verification Examples
Error "boom" |> Result.tapError (printfn "failed: %s") // prints, then returns Error "boom"Maps each value with a result-returning function, stopping at the first error.
Parameters
| Name | Type | Description |
|---|---|---|
| mapping | 'input -> Result<'output, 'error> | |
| values | 'input seq |
Returns
Result<'output list, 'error>
Verification Examples
[ "1"; "2" ] |> Result.traverse parseInt // Ok [ 1; 2 ]Turns a sequence of results into one fail-fast result containing all successes.
Parameters
| Name | Type | Description |
|---|---|---|
| values | Result<'value, 'error> seq |
Returns
Result<'value list, 'error>
Verification Examples
[ Ok 1; Error "missing"; Ok 3 ] |> Result.sequence // Error "missing"Maps each value with a result-returning function, running every mapping and collecting every error.
Parameters
| Name | Type | Description |
|---|---|---|
| mapping | 'input -> Result<'output, 'error> | |
| values | 'input seq |
Returns
Result<'output list, 'error list>
Verification Examples
[ "1"; "x"; "y" ] |> Result.traverseAll parseInt // Error [ NotANumber "x"; NotANumber "y" ]Turns a sequence of results into one result containing all successes, or every error.
Parameters
| Name | Type | Description |
|---|---|---|
| values | Result<'value, 'error> seq |
Returns
Result<'value list, 'error list>
Verification Examples
[ Ok 1; Error "missing"; Error "invalid" ] |> Result.sequenceAll // Error [ "missing"; "invalid" ]