
Hi Twan, On Thu, Jan 17, 2008 at 12:00:37AM +0100, Twan van Laarhoven wrote:
An often requested function is 'split', to split a list into parts delimited by some separator. ByteString has the functions split and splitWith for this purpose. I propose we add equivalents to Data.List:
split :: Eq a => a -> [a] -> [[a]] split x = splitWith (x==)
splitWith :: (a -> Bool) -> [a] -> [[a]] splitWith p xs = ys : case zs of [] -> [] _:ws -> splitWith p ws where (ys,zs) = break p xs
One or the other should be changed so that these agree: *Main> split 'a' "" [""] *Main> Data.ByteString.Char8.split 'a' (Data.ByteString.Char8.pack "") Loading package array-0.1.0.0 ... linking ... done. Loading package bytestring-0.9.0.1 ... linking ... done. [] although I couldn't say which is "right" OTTOMH... Thanks Ian