Adds specialised outcomeOf Raise DSL to allow for greater interoperability with Results and Eithers #107
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a specialised Raise DSL for
OutcomeOf<A>
.Result<Option<A>>
,ErrorOr<Option<A>>
andOutcomeOf<A>
are isomorphic, meaning they can be converted between each other without loss of information. Given that is the case we can increase the interoperability between them inside theoutcomeOf
DSL block.For example:
Given
Result<Option<A>>
is identical toOutcome<A>
bind
ing on that type will now just work. For theResult<A>
case however theResult<A>
needs to be converted to aOutcomeOf<A>
before performing abind
, which can be done withbindResult
.Either
s are already native to the DSL and so need to be handled a little differently. Binding overErrorOr<Option<A>>
will requirebindOption
to first bind over the either and then bind over theOption
inside.Option
and nullable values can also be handled with abind
orbindNull
respectively. In each case aNone
ornull
value will raise anAbsent
value.