Re: Minor breaking change of chop(Iterator, int...) method for Groovy 5

Paul King <[email protected]> Mon, 7 Apr 2025 17:58:19 +1000
Newsgroups gmane.comp.lang.groovy.user
Message-ID <CAMbkE7ROA5tk_m=Y665C+AQdQwjWVs83Q4scMjR8kQrYkM_Vsg@mail.gmail.com>
I added the PR for the trailing list edge case here:

https://github.com/apache/groovy/pull/2180

On Mon, Apr 7, 2025 at 7:12 AM Paul King <[email protected]> wrote:
>
> Actually, there is another edge case with chop that I would also like
> to modify since we are making a change anyway.
>
> Even once the original source of elements is exhausted, we continue
> "chopping" for each asked for size but give an empty list in such
> cases.
>
> assert ['a', 'b', 'c', 'd', 'e'].chop(1, 2, 3, 3, 3) == [['a'], ['b',
> 'c'], ['d', 'e'], [], []]
>
> I don't know of anyone relying on this behavior. It is different from
> equivalent functionality in other languages/libraries.
>
> I'd like to make the default behavior be to stop once input elements
> stop, but have a boolean flag to keep the existing behavior. This
> gives a more sensible result if we allowed the chop sizes to be a
> (possibly infinite) iterator.
>
> I'll create a PR. If folks don't like changing the default, we can
> keep the current behavior but still have the boolean to flip to the
> other behavior. I just think the other behavior, while sometimes could
> be useful, is the rarer desired output of the two. Reminder, we are
> just talking about the empty lists at the end of the above example.
>
> Cheers, Paul.
>
>
> On Sat, Apr 5, 2025 at 11:28 PM OCsite <[email protected]> wrote:
> >
> > Hi there,
> >
> > On 4. 4. 2025, at 23:09, Mattias Reichel <[email protected]> wrote:
> > I don't see a problem making a breaking change in a major version update.
> >
> >
> > Well it's always somewhat at the inconvenient side for us who maintain a big codebase.
> >
> > On the other hand, when it's easy to find and fix all the places where the change did happen (like in this case), it's not that bad. Nevertheless changes which can't be easily found in sources (like e.g., the “foo?[]:... ” of late), can be a real PITA.
> >
> > All the best,
> > OC
> >