Proposal: Add a splitBy / splitOn in Data.List

Dan Burton danburton.email at gmail.com
Fri Nov 2 14:43:11 UTC 2018


What about just adding Data.List.Split to base?

-- Dan Burton


On Fri, Nov 2, 2018 at 8:56 AM Elliot Cameron <eacameron at gmail.com> wrote:

> I didn't realize cabal now supported scripting. I suppose that addresses a
> large number of my use cases for having this.
>
> I didn't mean choosing different delimiters but only a single multielement
> delimiter, albeit that is also not flexible. If we also had a
> multicharacter replace function then a single-element split would be more
> tolerable.
>
> I'm still in favor of providing one or two of the most common, most
> flexible versions of this just to help newcomers from other languages that
> have these functions in their standard libraries, but my opinion is not
> very strongly held.
>
> On Fri, Nov 2, 2018, 8:18 AM Theodore Lief Gannon <tanuki at gmail.com wrote:
>
>> If you accept more than one delimiter but drop them, you've lost info
>> about which one caused each break and can't map them back. It's more
>> generic to keep them, since you can still filter.
>>
>> On Fri, Nov 2, 2018, 4:39 AM Elliot Cameron <eacameron at gmail.com wrote:
>>
>>> Despite these subtleties, I must confess I've often wanted to whip up a
>>> quick script and been frustrated that these functions are missing from
>>> base. For example using Haskell as a sed/awk alternative can be pleasant
>>> *if* the functions you need are in base. What's more, in many years I've
>>> only really wanted one or two versions of this.
>>>
>>> What if we added the most flexible of versions and included only that?
>>> This version would accept multicharacter delimiters, always throw them
>>> away, and always produce a new entry in the result for every occurrence of
>>> the delimiter. If you don't want the empty entries, you can filter. If you
>>> don't want leading, you can dropWhile. If you want the delimiters back, you
>>> can map. This seems like a nice trade-off for just being available in base.
>>>
>>> On Fri, Nov 2, 2018, 1:51 AM Edward Kmett <ekmett at gmail.com wrote:
>>>
>>>> The main thing that prevented it from going into base is the number of
>>>> subtleties about what precisely it means to properly "split" something.
>>>>
>>>> Most languages make fairly arbitrary calls on topics such as:
>>>>
>>>> * Do you split on list elements (e.g. ',') or list of elements, so you
>>>> can multi-character delimiters ", "? What about multiple types of
>>>> thing that are all delimiters, e.g. any whitespace character?
>>>> * What do you do with the delimiters?
>>>> * What happens with runs of delimiters?
>>>> * What about initial or final runs of delimiters (e.g. leading spaces)?
>>>>
>>>> The end result was that a split package was written by Brent Yorgey
>>>> back in 2008 or so that rather comprehensively covers the design space, and
>>>> it was incorporated into the Haskell Platform.
>>>>
>>>>
>>>> http://hackage.haskell.org/package/split-0.2.3.3/docs/Data-List-Split.html
>>>>
>>>> -Edward
>>>>
>>>> On Thu, Nov 1, 2018 at 1:34 PM Saurabh Nanda <saurabhnanda at gmail.com>
>>>> wrote:
>>>>
>>>>> This has certainly been discussed before. A quick Google search turned
>>>>> up the following past discussions:
>>>>>
>>>>>    -
>>>>>    https://mail.haskell.org/pipermail/libraries/2006-July/005494.html
>>>>>    -
>>>>>    https://mail.haskell.org/pipermail/libraries/2012-July/018228.html
>>>>>
>>>>> Is there anything blocking this discussion & implementation? Anything
>>>>> that can be done to unblock it?
>>>>>
>>>>> -- Saurabh.
>>>>>
>>>>> _______________________________________________
>>>>> Libraries mailing list
>>>>> Libraries at haskell.org
>>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>>>>
>>>> _______________________________________________
>>>> Libraries mailing list
>>>> Libraries at haskell.org
>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>>>
>>> _______________________________________________
>>> Libraries mailing list
>>> Libraries at haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>>
>> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20181102/c0471c60/attachment.html>


More information about the Libraries mailing list