Evan Laforge wrote:
>> splitBy :: (a -> Bool) -- ^ whether element is a seperator
>> -> [a] -- ^ list to split
>> -> [[a]]
P.S. inspecting more than one element looks like an over-generalization
to me and should be left to parsers or regexp libs.
It's more generally useful if you don't drop the separators from the
output:
splitSepWith f = map (dropWhile f) . splitWith f
spaces = splitSepWith Char.isSpace
But this still won't let you split on comma and spaces. Either
regexes, or pass in a [tok] -> ([conumed], [rest]) type parser:
splitWith :: ([a] -> ([a], [a])) -> [a] -> [[a]]
... but why not make it take parsec parsers and put it in a parsec
util module or something (if it isn't already there!):
splitWith (Parsec.char ',' >> Parsec.spaces)
... of course, then you might ask why not use Parsec.sepBy :) but
maybe the "split on elt" concept is easier to learn than "write a
whole parser".
I guess the problem with the splitWith thing is that it's a slippery
path that leads right up to full-on parsers.
Exactly, and this is why we didn't reach a concensus last time.
Would someone like to make a concrete proposal (with code!) for 2-3 functions we
could reasonably add to Data.List?
Cheers,
Simon
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe