This repository was archived by the owner on Dec 22, 2021. It is now read-only.
Add statically known non-empty collections #9
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.
I know this work does not follow the design goals but I wanted to give it a try, as an experiment.
This PR removes the
head
andtail
methods fromIterable
(they could always be added via an implicit conversion, for backward compatibility, if needed), replaces them with anuncons: Option[(A, C[A])]
method, and re-introduces them in a newInhabitedSeq
type.The good thing is that
uncons
being explicitly partially defined revealed a bug in the current implementation ofdrop
.The bad thing is that it introduces yet another type in the hierarchy. Also, I didn’t try hard to get the
to
method preserve “non-emptiness” (e.g. a non empty list transformed into an array should yield a non-empty array) but I think this would require some complex machinery.