Sin consecutivos repetidos
Definir la función
sinConsecutivosRepetidos :: Eq a => [a] -> [a]
tal que (sinConsecutivosRepetidos xs) es la lista obtenida a partir de xs de forma que si hay dos o más elementos idénticos consecutivos, borra las repeticiones y deja sólo el primer elemento. Por ejemplo,
λ> sinConsecutivosRepetidos "eesssooo essss toodddooo" "eso es todo"
Soluciones
import Data.List (group) -- 1ª solución (por comprensión): sinConsecutivosRepetidos :: Eq a => [a] -> [a] sinConsecutivosRepetidos xs = [x | (x:_) <- group xs] -- 2ª solución (por recursión): sinConsecutivosRepetidos2 :: Eq a => [a] -> [a] sinConsecutivosRepetidos2 [] = [] sinConsecutivosRepetidos2 (x:xs) = x : sinConsecutivosRepetidos2 (dropWhile (==x) xs)