let frente a bind en IO en Haskell
Dentro de do, let nombra un valor puro mientras <- ejecuta una acción y vincula su resultado.
-- An IO action that produces a value rather than printing one.
readTank :: IO Double
readTank = pure 61.5
main :: IO ()
main = do
-- let names a pure value; nothing is executed.
let capacity = 80.0 :: Double
-- <- runs the action and binds the result it yields.
level <- readTank
let percent = 100 * level / capacity
-- show turns a number into the String putStrLn needs.
putStrLn ("tank holds " ++ show level ++ " of " ++ show capacity)
putStrLn ("that is " ++ show percent ++ " percent full")
Cómo funciona
let capacity = 80.0 :: Doublevincula un número sin ejecutar nada de IO.level <- readTankejecuta la acción y vincula el Double que entrega.showconvierte cada número en el String queputStrLnexige.
Palabras clave y builtins usados aquí
DoubleIOdolet
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 496
- Tokens
- 65
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 52 segundos.
Paso 2 de 3 en Fundamentos de IO; paso 23 de 27 en Fundamentos del lenguaje.