Weaken some Alternative
constraints in OneAnd
#4739
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.
Currently, the
unwrap
andcombine
methods inOneAnd
, as well asSemigroupK
/Semigroup
instance haveAlternative
as a bound for the typeF[_]
of collection-like component.This pull request weakens this constraint to
F[_]: NonEmptyAlternative
.Context
The change allows one to
unwrap
OneOf[NonEmptyList, A]
intoNonEmptyList[A]
. At first glance puttingNonEmptyList
inOneOf
sounds a bit weird, but I think they are natural choices for situations when one wants to describe a collection of2..N
items (this occurred to me while describing "duplicate inputs error" in a validation logic, where the errorcase class
had a length ≥2 list of input indices containing duplicates).I think this
weakeninggeneralization makes sense since, intuitively, none of the aforementioned methods interact with theempty: F[Nothing]
aspect of the collection: they only combine collections (SemigroupK
) or inject an element into the collection (NonEmptyAlternative
).