Cadenas y caracteres en Haskell
Rearma el anuncio de una puerta de embarque, porque un String no es más que una lista de caracteres.
-- A String is exactly [Char], so every list function already works.
module Announcement where
import Data.Char (isDigit, toUpper)
headline :: String
headline = "gate 7 boards at 1450"
-- words splits on whitespace; unwords glues the pieces back together.
pieces :: [String]
pieces = words headline
shouted :: String
shouted = unwords (map (map toUpper) pieces)
digitsOnly :: String
digitsOnly = filter isDigit headline
banner :: String
banner = shouted ++ " [" ++ digitsOnly ++ "]"
Cómo funciona
words headlineparte la línea por los espacios yunwordsvuelve a pegar las piezas.map (map toUpper) piecesatraviesa la lista de cadenas hasta llegar a cada Char.filter isDigit headlinedeja solo los dígitos, con una función de listas cualquiera.
Palabras clave y builtins usados aquí
Stringimportmodulewhere
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 488
- Tokens
- 67
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 54 segundos.
Paso 3 de 3 en Valores y tipos; paso 3 de 27 en Fundamentos del lenguaje.