[Haskell-cafe] Why is there no "splitSeperator" function in Data.List
Is there any reason, that one can't find a function that splits a list at a seperator in the standard library? I imagined something like this: splitSeperator :: Eq a => a -> [a] -> [[a]] splitSeperator ',' "foo,bar,baz" --> ["foo","bar","baz"] Or something similar? This is needed so often, even if I can implement it in one line, is there any reason why it's not in the libs? Yours, Robert Clausecker signature.asc Description: This is a digitally signed message part ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
On Sat, Feb 12, 2011 at 11:00 AM, Robert Clausecker wrote: > Is there any reason, that one can't find a function that splits a list > at a seperator in the standard library? I imagined something like this: > > > splitSeperator :: Eq a => a -> [a] -> [[a]] > > splitSeperator ',' "foo,bar,baz" > --> ["foo","bar","baz"] > > Or something similar? This is needed so often, even if I can implement > it in one line, is there any reason why it's not in the libs? See http://hackage.haskell.org/package/split The reason it's not in Data.List is because there are a bazillion different splits one might want (when I was pondering the issue before Brent released it, I had collected something like 8 different proposed splits), so no agreement could ever be reached. -- gwern http://www.gwern.net ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
On Sat, Feb 12, 2011 at 11:21:37AM -0500, Gwern Branwen wrote: > On Sat, Feb 12, 2011 at 11:00 AM, Robert Clausecker wrote: > > Is there any reason, that one can't find a function that splits a list > > at a seperator in the standard library? I imagined something like this: > > > > > > splitSeperator :: Eq a => a -> [a] -> [[a]] > > > > splitSeperator ',' "foo,bar,baz" > > --> ["foo","bar","baz"] > > > > Or something similar? This is needed so often, even if I can implement > > it in one line, is there any reason why it's not in the libs? > > See http://hackage.haskell.org/package/split > > The reason it's not in Data.List is because there are a bazillion > different splits one might want (when I was pondering the issue before > Brent released it, I had collected something like 8 different proposed > splits), so no agreement could ever be reached. It is curious though that the Python community managed to agree on a single implementation and include that in the standard library… So it is possible :) I also needed a split function and ended up with coding one that behaves like the Python one for my project. regards, iustin ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
Does the Python implementation operate on Strings, or all lists? I think this could be quite important as many split implementations take regular expressions as arguments. This could be quite challenging for general lists. That said, I would like to see some of these features in the split package. On Sun, Feb 13, 2011 at 5:50 PM, Iustin Pop wrote: > On Sat, Feb 12, 2011 at 11:21:37AM -0500, Gwern Branwen wrote: >> On Sat, Feb 12, 2011 at 11:00 AM, Robert Clausecker wrote: >> > Is there any reason, that one can't find a function that splits a list >> > at a seperator in the standard library? I imagined something like this: >> > >> > >> > splitSeperator :: Eq a => a -> [a] -> [[a]] >> > >> > splitSeperator ',' "foo,bar,baz" >> > --> ["foo","bar","baz"] >> > >> > Or something similar? This is needed so often, even if I can implement >> > it in one line, is there any reason why it's not in the libs? >> >> See http://hackage.haskell.org/package/split >> >> The reason it's not in Data.List is because there are a bazillion >> different splits one might want (when I was pondering the issue before >> Brent released it, I had collected something like 8 different proposed >> splits), so no agreement could ever be reached. > > It is curious though that the Python community managed to agree on a > single implementation and include that in the standard library… So it is > possible :) > > I also needed a split function and ended up with coding one that behaves > like the Python one for my project. > > regards, > iustin > > ___ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
On Sun, 13 Feb 2011, Iustin Pop wrote: On Sat, Feb 12, 2011 at 11:21:37AM -0500, Gwern Branwen wrote: See http://hackage.haskell.org/package/split The reason it's not in Data.List is because there are a bazillion different splits one might want (when I was pondering the issue before Brent released it, I had collected something like 8 different proposed splits), so no agreement could ever be reached. It is curious though that the Python community managed to agree on a single implementation and include that in the standard library… So it is possible :) It was not the implementation, that was discussed in length, but it was the question, what 'split' shall actually do. If you are satisfied with a simple Haskell 98 implementation of a 'split' operation you might like 'chop' in http://hackage.haskell.org/packages/archive/utility-ht/0.0.5.1/doc/html/Data-List-HT.html ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
On Sun, Feb 13, 2011 at 06:01:01PM +0800, Lyndon Maydwell wrote: > Does the Python implementation operate on Strings, or all lists? Of course, just on strings. > I think this could be quite important as many split implementations > take regular expressions as arguments. This could be quite challenging > for general lists. Agreed. But (in Python at least), split via re and split via (static) element are two separate functions, and split via element can be nicely replicated in Haskell. regards, iustin > That said, I would like to see some of these features in the split package. > > On Sun, Feb 13, 2011 at 5:50 PM, Iustin Pop wrote: > > On Sat, Feb 12, 2011 at 11:21:37AM -0500, Gwern Branwen wrote: > >> On Sat, Feb 12, 2011 at 11:00 AM, Robert Clausecker > >> wrote: > >> > Is there any reason, that one can't find a function that splits a list > >> > at a seperator in the standard library? I imagined something like this: > >> > > >> > > >> > splitSeperator :: Eq a => a -> [a] -> [[a]] > >> > > >> > splitSeperator ',' "foo,bar,baz" > >> > --> ["foo","bar","baz"] > >> > > >> > Or something similar? This is needed so often, even if I can implement > >> > it in one line, is there any reason why it's not in the libs? > >> > >> See http://hackage.haskell.org/package/split > >> > >> The reason it's not in Data.List is because there are a bazillion > >> different splits one might want (when I was pondering the issue before > >> Brent released it, I had collected something like 8 different proposed > >> splits), so no agreement could ever be reached. > > > > It is curious though that the Python community managed to agree on a > > single implementation and include that in the standard library… So it is > > possible :) > > > > I also needed a split function and ended up with coding one that behaves > > like the Python one for my project. > > > > regards, > > iustin > > > > ___ > > Haskell-Cafe mailing list > > Haskell-Cafe@haskell.org > > http://www.haskell.org/mailman/listinfo/haskell-cafe > > ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
On Sun, Feb 13, 2011 at 11:21:42AM +0100, Henning Thielemann wrote: > > On Sun, 13 Feb 2011, Iustin Pop wrote: > > >On Sat, Feb 12, 2011 at 11:21:37AM -0500, Gwern Branwen wrote: > >> > >>See http://hackage.haskell.org/package/split > >> > >>The reason it's not in Data.List is because there are a bazillion > >>different splits one might want (when I was pondering the issue before > >>Brent released it, I had collected something like 8 different proposed > >>splits), so no agreement could ever be reached. > > > >It is curious though that the Python community managed to agree on a > >single implementation and include that in the standard library… So it is > >possible :) > > It was not the implementation, that was discussed in length, but it > was the question, what 'split' shall actually do. Doh, of course I meant they managed to agree on a single definition of what split means. Sorry for bad wording. > If you are satisfied with a simple Haskell 98 implementation of a > 'split' operation you might like 'chop' in > > http://hackage.haskell.org/packages/archive/utility-ht/0.0.5.1/doc/html/Data-List-HT.html Probably, but when I can have my own version in ~4 lines of Haskell, I'd rather not have another dependency (that might or might not be packaged in my distro). regards, iustin ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
>> The reason it's not in Data.List is because there are a bazillion >> different splits one might want (when I was pondering the issue before >> Brent released it, I had collected something like 8 different proposed >> splits), so no agreement could ever be reached. > > It is curious though that the Python community managed to agree on a > single implementation and include that in the standard library… So it is > possible :) This is sometimes cited as the advantage of a benevolent dictator-for-life. I remember there was lots of argument when 'join' was added as a string method (vs. should it be a list method). In the end, Guido decided on one and that's what went in. Fortunately that particular dilemma is one forced by single-dispatch OO and doesn't apply to haskell :) I also wrote simple 'split' and 'join' functions that behave like the python ones. I use them all the time. It doesn't bother me that there are lots of other possible implementations, the simple 'join :: String -> [String] -> String' and 'split :: String -> String -> [String]' versions work in enough cases. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
On Mon, Feb 14, 2011 at 07:52, Evan Laforge wrote: > the simple 'join :: > String -> [String] -> String' and 'split :: String -> String -> > [String]' versions work in enough cases. BTW, this "join" is Data.List.intercalate. --Max ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why is there no "splitSeperator" function in Data.List
Hi Evan, >>> The reason it's not in Data.List is because there are a bazillion >>> different splits one might want (when I was pondering the issue >>> before Brent released it, I had collected something like 8 >>> different proposed splits), so no agreement could ever be reached. >> >> It is curious though that the Python community managed to agree on a >> single implementation and include that in the standard library… So >> it is possible :) > > This is sometimes cited as the advantage of a benevolent > dictator-for-life. I remember there was lots of argument when 'join' > was added as a string method (vs. should it be a list method). In the > end, Guido decided on one and that's what went in. having a dictator is not a necessary prerequisite for the ability to make decisions. It's quite possible to decide controversial matters without a dictator -- say, by letting people vote. Take care, Peter ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe