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 includes:
Segment
operations which force evaluation of any elements have been moved toSegment.Force
, resulting in syntax likes.force.toVector
,s.force.run
,s.force.unconsChunk
. The primary motivation here is to be clear when evaluation occurs.Segment
no longer overridesequals
andhashCode
as computing these values necessarily forces the segment, which may hang if the segment is infinite.Chunk
is no longer a subtype ofSegment
. A chunk can be lifted to a segment viaSegment.chunk(c)
orc.toSegment
. By avoiding subtyping, users know that chunk operations are always strict. This is a significant improvement over the old API where an operation on aChunk
may be strict (if defined directly onChunk
), lazy, or partially eager and partially lazy.Chunk#{head,last}
were changed to returnOption[O]
-- the only unsafe operation onChunk
isapply
now.