Secuenciar IO con do en Haskell
Un bloque do corre acciones de IO de arriba abajo y llama a una función pura a mitad de camino.
-- A pure helper: no IO in the type, so anything may call it.
initials :: String -> String
initials full = concatMap (take 1) (words full)
-- do threads IO actions together, running them top to bottom.
main :: IO ()
main = do
putStrLn "badge printer"
let name = "grace brewster hopper"
putStrLn (initials name)
-- print is putStrLn after show, so it takes any Show value.
print (length (words name))
putStrLn "badge ready"
Cómo funciona
initials full = concatMap (take 1) (words full)es pura, así que no aparece IO en su tipo.main = dosecuencia las llamadas aputStrLn, ylet namenombra un valor a mitad del bloque.print (length (words name))maneja un valor que no es String, porqueprintesputStrLndespués deshow.
Palabras clave y builtins usados aquí
IOStringdolet
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 423
- Tokens
- 54
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 43 segundos.
Paso 1 de 3 en Fundamentos de IO; paso 22 de 27 en Fundamentos del lenguaje.