typestar

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

  1. let capacity = 80.0 :: Double vincula un número sin ejecutar nada de IO.
  2. level <- readTank ejecuta la acción y vincula el Double que entrega.
  3. show convierte cada número en el String que putStrLn exige.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Fundamentos de IO; paso 23 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →