<div dir="ltr">What about just adding Data.List.Split to base?<div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">-- Dan Burton</div></div><br><input name="virtru-metadata" type="hidden" value="{"email-policy":{"state":"closed","expirationUnit":"days","disableCopyPaste":false,"disablePrint":false,"disableForwarding":false,"enableNoauth":false,"expires":false,"isManaged":false},"attachments":{},"compose-id":"11","compose-window":{"secure":false}}"></div><br><div class="gmail_quote" style=""><div dir="ltr">On Fri, Nov 2, 2018 at 8:56 AM Elliot Cameron <<a href="mailto:eacameron@gmail.com">eacameron@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div>I didn't realize cabal now supported scripting. I suppose that addresses a large number of my use cases for having this.</div><div dir="auto"><br></div><div dir="auto">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.</div><div dir="auto"><br></div><div dir="auto">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.</div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr">On Fri, Nov 2, 2018, 8:18 AM Theodore Lief Gannon <<a href="mailto:tanuki@gmail.com" rel="noreferrer" target="_blank">tanuki@gmail.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">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.</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Nov 2, 2018, 4:39 AM Elliot Cameron <<a href="mailto:eacameron@gmail.com" rel="noreferrer noreferrer" target="_blank">eacameron@gmail.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">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.<div dir="auto"><br></div><div dir="auto">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.</div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Nov 2, 2018, 1:51 AM Edward Kmett <<a href="mailto:ekmett@gmail.com" rel="noreferrer noreferrer noreferrer" target="_blank">ekmett@gmail.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">The main thing that prevented it from going into base is the number of subtleties about what precisely it means to properly "split" something.</div><div dir="ltr"><br></div><div dir="ltr">Most languages make fairly arbitrary calls on topics such as:</div><div dir="ltr"><br></div><div dir="ltr">* Do you split on list elements (e.g. <font face="monospace, monospace">','</font>) or list of elements, so you can multi-character delimiters <font face="monospace, monospace">", "</font>? What about multiple types of thing that are all delimiters, e.g. any whitespace character?</div><div dir="ltr">* What do you do with the delimiters?</div><div dir="ltr">* What happens with runs of delimiters? </div><div dir="ltr">* What about initial or final runs of delimiters (e.g. leading spaces)? <br><br>The end result was that a <font face="monospace, monospace">split</font> 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.<br></div><div dir="ltr"><div><br></div><div><a href="http://hackage.haskell.org/package/split-0.2.3.3/docs/Data-List-Split.html" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">http://hackage.haskell.org/package/split-0.2.3.3/docs/Data-List-Split.html</a></div><div><br></div><div>-Edward</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Nov 1, 2018 at 1:34 PM Saurabh Nanda <<a href="mailto:saurabhnanda@gmail.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">saurabhnanda@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">This has certainly been discussed before. A quick Google search turned up the following past discussions:<div><ul><li><a href="https://mail.haskell.org/pipermail/libraries/2006-July/005494.html" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">https://mail.haskell.org/pipermail/libraries/2006-July/005494.html</a><br></li><li><a href="https://mail.haskell.org/pipermail/libraries/2012-July/018228.html" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">https://mail.haskell.org/pipermail/libraries/2012-July/018228.html</a><br></li></ul><div>Is there anything blocking this discussion & implementation? Anything that can be done to unblock it?</div></div><div><br></div><div>-- Saurabh.</div><div><br></div></div></div></div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>
</blockquote></div></div></div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div></div>