Hi all, On Dec 28, 2007 12:38 PM, Andrew Coppin <[EMAIL PROTECTED]> wrote: > For joining you probably want some combination of intersperse and > concat, e.g. > > unlines = concat . intersperse "\n"
And that's what we have :-) Data.List.intercalate :: [a] -> [[a]] -> [a] Data.List.intercalate x = concat . intersperse x > For splitting, do we split on a given character? A predicate? Do we keep > the splitting character or throw it away? Do we generate empty sublists > or elide them? Apparently nobody can agree on these points, and writing > a function with all possible options would be very messy... If you use intercalate to join, I would presume that you would want to use an inverse of it to split. I'd write it like this: split :: Eq a => [a] -> [a] -> [[a]] split at xs | Just xs' <- stripPrefix at xs = [] : split at xs' split at (x:xs) = (x:r) : rs where (r:rs) = split at xs split at [] = [[]] --with, if your version of the libraries is as old as mine and doesn't have Data.List.stripPrefix, stripPrefix (p:ps) (x:xs) | p == x = stripPrefix ps xs stripPrefix [] xs = Just xs stripPrefix _ _ = Nothing - Benja _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe