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> |
||