Extensión de un fichero
Enunciado
1 2 3 4 5 6 7 8 9 10 11 |
-- La extensión de un fichero es la palabra a continuación del último -- punto en el nombre del fichero. Por ejemplo, la extensión de -- "documento.txt" es "txt" -- -- Definir la función -- extension :: String -> String -- tal que (extension cs) es la extensión del fichero cs. Por ejemplo, -- extension "ejercicio.hs" == "hs" -- extension "documento.txt" == "txt" -- extension "documento.txt.pdf" == "pdf" -- extension "resumen" == "" |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- 1ª definición (por recursión): extension1 :: String -> String extension1 cs | elem '.' cs = reverse (aux (reverse cs)) | otherwise = "" where aux [] = [] aux ('.':cs) = [] aux (c:cs) = c : aux cs -- 2ª definición (con takeWhile): extension2 :: String -> String extension2 cs | notElem '.' cs = "" | otherwise = reverse (takeWhile (/= '.') (reverse cs)) |
He definido la función de dos maneras distintas : extension y extension2
He simplificado not (elem ‘.’ cs) por notElem ‘.’ cs
Usando una variable local aumenta considerablemente la eficiencia de la definición.
Más simplificado