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

  1. Introducción a la I/O en Haskell
  2. Funciones Básicas de I/O
  3. Ejemplos Prácticos
  4. Ejercicios

  1. 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.

  1. Funciones Básicas de I/O

putStrLn

La función putStrLn se utiliza para imprimir una línea de texto en la consola.

putStrLn :: String -> IO ()

Ejemplo

main :: IO ()
main = putStrLn "Hola, Mundo!"

getLine

La función getLine se utiliza para leer una línea de texto desde la entrada estándar (generalmente el teclado).

getLine :: IO String

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.

readFile :: FilePath -> IO String
writeFile :: FilePath -> String -> IO ()

Ejemplo

main :: IO ()
main = do
    contenido <- readFile "archivo.txt"
    putStrLn contenido
    writeFile "archivo_copia.txt" contenido

  1. 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."

  1. 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.

© Copyright 2024. Todos los derechos reservados