Split a character string based on change of character: Difference between revisions

Content added Content deleted
(→‎{{header|Haskell}}: Added a foldr variant)
(→‎{{header|Haskell}}: Added a variant expressed in terms of `span`)
Line 1,245: Line 1,245:
main =
main =
putStrLn $ intercalate ", " $ charGroups "gHHH5YY++///\\"</lang>
putStrLn $ intercalate ", " $ charGroups "gHHH5YY++///\\"</lang>
<pre>g, HHH, 5, YY, ++, ///, \</pre>

or in terms of '''span''':
<lang haskell>import Data.List (intercalate)

charGroups :: String -> [String]
charGroups [] = []
charGroups (c : cs) = (c : xs) : charGroups ys
where
(xs, ys) = span (c ==) cs

main :: IO ()
main =
putStrLn $ intercalate ", " $ charGroups "gHHH5YY++///\\"</lang>
{{Out}}
<pre>g, HHH, 5, YY, ++, ///, \</pre>
<pre>g, HHH, 5, YY, ++, ///, \</pre>