Eliminando caracteres que coinciden con un patrón

Haskell:
Eliminando caracteres que coinciden con un patrón

Cómo hacerlo:

import Data.Char (isSpace)
import Text.Regex (mkRegex, subRegex)

-- Elimina todos los dígitos de una cadena
eliminarDigitos :: String -> String
eliminarDigitos = filter (not . isDigit)

-- Usa expresiones regulares para eliminar cualquier "a" o "e"
eliminarAe :: String -> String
eliminarAe = subRegex (mkRegex "[ae]") "_"

-- Ejemplos
main :: IO ()
main = do
    putStrLn $ eliminarDigitos "H4sk3ll 3s f4nt4st1c0"
    putStrLn $ eliminarAe "Haskell es fantastico"

-- Salida:
-- Hskll s fntstc
-- H_sk_ll _s f_nt_stico

Profundización

La eliminación de caracteres por coincidencia de patrones no es algo nuevo. Desde los primeros días de Unix, herramientas como sed o lenguajes como Perl se especializaban en este tipo de tareas gracias a las expresiones regulares. En Haskell, utilizamos bibliotecas como Text.Regex para manipulaciones de texto robustas y expresivas.

Las alternativas en Haskell incluyen usar funciones como filter para casos sencillos o incluso escribir parsers más complejos con herramientas como parsec o megaparsec cuando las necesidades son más específicas.

La implementación puede variar desde funciones puras hasta monadas de entrada/salida (IO) dependiendo de si los datos se procesan en tiempo de ejecución o se leen desde un archivo, por ejemplo.

Ver También