En este módulo, aprenderemos sobre las operaciones básicas de entrada y salida (I/O) en Haskell. La I/O es fundamental para interactuar con el mundo exterior, como leer datos de un archivo o imprimir resultados en la consola. A diferencia de otros lenguajes, Haskell maneja la I/O de manera pura y funcional, utilizando el concepto de mónadas.
Contenido
- Introducción a la I/O en Haskell
- Funciones Básicas de I/O
- Ejemplos Prácticos
- Ejercicios
- Introducción a la I/O en Haskell
En Haskell, las operaciones de I/O se manejan dentro de la mónada IO. Esto permite que las funciones que realizan I/O sean puras, ya que el tipo IO encapsula los efectos secundarios.
Conceptos Clave
- Mónada
IO: Una estructura que encapsula operaciones de entrada y salida. - Acciones I/O: Operaciones que se ejecutan en el contexto de la mónada
IO.
- Funciones Básicas de I/O
putStrLn
La función putStrLn se utiliza para imprimir una línea de texto en la consola.
Ejemplo
getLine
La función getLine se utiliza para leer una línea de texto desde la entrada estándar (generalmente el teclado).
Ejemplo
main :: IO ()
main = do
putStrLn "¿Cómo te llamas?"
nombre <- getLine
putStrLn ("Hola, " ++ nombre ++ "!")readFile y writeFile
Estas funciones se utilizan para leer y escribir archivos.
Ejemplo
main :: IO ()
main = do
contenido <- readFile "archivo.txt"
putStrLn contenido
writeFile "archivo_copia.txt" contenido
- Ejemplos Prácticos
Ejemplo 1: Programa que saluda al usuario
main :: IO ()
main = do
putStrLn "¿Cómo te llamas?"
nombre <- getLine
putStrLn ("Hola, " ++ nombre ++ "!")Ejemplo 2: Lectura y escritura de archivos
main :: IO ()
main = do
putStrLn "Leyendo contenido del archivo 'entrada.txt'..."
contenido <- readFile "entrada.txt"
putStrLn "Contenido del archivo:"
putStrLn contenido
putStrLn "Escribiendo contenido en 'salida.txt'..."
writeFile "salida.txt" contenido
putStrLn "Operación completada."
- Ejercicios
Ejercicio 1: Programa de Eco
Escribe un programa que lea una línea de texto del usuario y luego la imprima en la consola.
Solución
main :: IO ()
main = do
putStrLn "Escribe algo:"
entrada <- getLine
putStrLn ("Escribiste: " ++ entrada)Ejercicio 2: Contador de Palabras
Escribe un programa que lea el contenido de un archivo, cuente el número de palabras y lo imprima en la consola.
Solución
import Data.List (words)
main :: IO ()
main = do
contenido <- readFile "archivo.txt"
let numPalabras = length (words contenido)
putStrLn ("El archivo contiene " ++ show numPalabras ++ " palabras.")Conclusión
En esta sección, hemos aprendido los conceptos básicos de la I/O en Haskell, incluyendo cómo leer y escribir en la consola y en archivos. Estos fundamentos son esenciales para cualquier programa que necesite interactuar con el mundo exterior. En el próximo módulo, profundizaremos en el manejo de archivos y otras operaciones de I/O más avanzadas.
Curso de Programación en Haskell
Módulo 1: Introducción a Haskell
- ¿Qué es Haskell?
- Configuración del Entorno de Haskell
- Sintaxis Básica y Hola Mundo
- Haskell REPL (GHCi)
