Haskell Hero
Haskell Hero es un manual interactivo del lenguaje Haskell para principiantes.
|
Entrada y salida II>>, >>=, return
En la lección Entrada y salida hemos hablado de la construcción imprime = do putStrLn "abc" putStrLn "def" putStrLn "ghi" es decir, imprime "abc", después imprime "def" y al fin "ghi". Esta secuencia de ordenes también la podemos escribir con el operador >> . La evaluación de la expresión accion1 >> accion2 >> accion3 se evalúa de manera siguiente: Primero se evalúa accion1 , después accion2 y al fin accion3 . En nuestro ejemplo entonces será:
putStrLn "abc" >> putStrLn "def" >> putStrLn "ghi"
En el ejemplo anterior las acciones se realizaron independientemente. Sin embargo, nosotros queremos por ejemplo leer un valor del usuario y después utilizar este valor. Es decir, pasar un valor de una acción a la otra. Para esto podemos utilizar el operador getLine >>= putStr Es decir, lee la entrada del usuario, pasa este valor y aplica a él la función putStr .
Con el valor que hemos pasado podemos realizar más acciones. Solo tenemos que darnos cuenta de que la notación anterior es solamente la expresión
getLine >>= \s -> putStr s convertida en el estilo pointfree. Podemos entonces imprimir el valor dos veces: getLine >>= ( \s -> putStrLn s >> putStrLn s ) Es decir, lee la entrada, pasa su valor a una función que lo imprime dos veces..
La acción return (show (3 + 5)) >>= putStr |