Como vimos en una entrega anterior, Cabal es la herramienta estándar para gestionar dependencias, compilar y empaquetar proyectos Haskell, lo que te permite organizar y distribuir tu código de manera profesional.
Con Haskell (y Cabal) podemos desarrollar desde pequeñas utilidades de línea de comandos hasta aplicaciones web, bibliotecas científicas, proyectos de análisis de datos y compiladores.
Recapitulando:
- Cabal es el sistema de construcción y empaquetado de Haskell.
- Se basa en archivos .cabal que describen el proyecto: nombre, dependencias, módulos, ejecutables, etc.
- Permite compilar, instalar y distribuir bibliotecas y programas de forma portable.
- Es el equivalente a package.json en Node.js o pom.xml en Maven.
Conversión de grados Celsius a Fahrenheit con Haskell (y Cabal)
Crearemos una sencilla calculadora de conversión de grados Celsius a Fahrenheit. El único dato necesario serán los grados en Celsius.
1. Mostramos la versión instalada de Cabal:
$ cabal --version
2. Creamos directorio y nos ubicamos en el mismo:
$ mkdir conversion_celsius && cd conversion_celsius
3. Creamos el proyecto:
$ cabal update && cabal init
Una vez creado el proyecto podemos comenzar a crear la funcionalidad.
La fórmula para la conversión de grados Celsius a Fahrenhei es la siguiente:
F = 1.8*C + 32
Donde C son los grados Celsius.
Para definir una función en Haskell tomemos esta sintaxis:
nombreFunc :: TipoVar1 -> TipoVar2 -> TipoVarN
Por lo que la función quedaría de la siguiente manera:
conversionFahr :: Float -> Float
Editemos el programa Main.hs:
module Main where -- Función que convierte grados Celsius a Fahrenheit conversionFahr :: Float -> Float conversionFahr c = 1.8 * c + 32 main :: IO () main = do putStrLn "Conversión grados Celsius a Fahrenheit en Haskell!" let gradoCels = 90.0 let gradoFahr = conversionFahr gradoCels putStrLn ("Grados Celsius: " ++ show gradoCels) putStrLn ("Grados Fahrenheit: " ++ show gradoFahr)
Ejecutemos el programa:
$ cabal run
Salida:
Conversión grados Celsius a Fahrenheit en Haskell! Grados Celsius: 90.0 Grados Fahrenheit: 194.0
Este programa no recibe datos desde teclado, editemos el programa para que pueda hacerlo.
module Main where -- Función que convierte grados Celsius a Fahrenheit conversionFahr :: Float -> Float conversionFahr c = 1.8 * c + 32 main :: IO () main = do putStrLn "Conversor de Celsius a Fahrenheit" putStrLn "Ingresa la temperatura en grados Celsius:" input <- getLine let gradoCels = read input :: Float let gradoFahr = conversionFahr gradoCels putStrLn ("Grados Celsius: " ++ show gradoCels) putStrLn ("Grados Fahrenheit: " ++ show gradoFahr)
Ejecutemos el programa:
$ cabal run
Salida:
Conversor de Celsius a Fahrenheit Ingresa la temperatura en grados Celsius: 60.4 Grados Celsius: 60.4 Grados Fahrenheit: 140.72
¡Hemos creado un proyecto con Haskell y Cabal!
Continuaremos con estas entregas sobre Haskell.
Enlaces:
https://www.haskell.org/cabal/https://www.servant.dev/

No hay comentarios:
Publicar un comentario