[Haskell-cafe] Splitting a string into chunks

Jon Fairbairn Jon.Fairbairn at cl.cam.ac.uk
Fri Jan 13 16:35:58 EST 2006

On 2006-01-13 at 13:32PST Jared Updike wrote:
> That works except it loses single newline characters.
> let s = "1234\n5678\n\nabcdefghijklmnopq\n\n,,.,.,."
> Prelude> blocks s
> ["12345678","abcdefghijklmnopq",",,.,.,."]

Also the argument to groupBy ought to be some sort of
equivalence relation.

blocks = map unlines 
         . filter (all $ not . null) 
         . groupBy (\a b -> not (null b|| null a)) 
         . lines

... but that suffers from the somewhat questionable
properties of lines and unlines.

Jón Fairbairn                              Jon.Fairbairn at cl.cam.ac.uk

More information about the Haskell-Cafe mailing list