2011-04-02 27 views

Respuesta

4

No, pero en realidad son solo (versiones optimizadas de) las aplicaciones de Data.List.break y Data.List.intersperse, respectivamente.

pythonicSplit  :: String -> Char -> [String] 
pythonicSplit "" _ = [] 
pythonicSplit s c = let (r,rs) = break (== c) s 
         in r : pythonicSplit rs c 

pythonicJoin  :: [String] -> Char -> String 
pythonicJoin ss c = intersperse c ss -- or: flip intersperse 
+0

Dejo las versiones que se dividen en una cadena o cualquiera de varios caracteres como ejercicios para el lector, aunque sea porque ya pasó la hora de acostarme. :) Pero notaré que todas las herramientas que necesita están en 'Data.List' y que la combinación de múltiples caracteres ya está allí, así como la unión de un solo carácter. – geekosaur

+1

Consulte también 'intercalar' para un delimitador de caracteres múltiples en lugar de' intersperse'. – luqui

+1

su 'pythonicSplit' es incorrecta. después de la primera palabra, genera una lista infinita de cadenas vacías – newacct

11

Por favor, también tienen un vistazo al paquete genial dividido. Proporciona un módulo Data.List.Split para todo tipo de división.

Cuestiones relacionadas