domingo, 28 de septiembre de 2025

Cabal

Cabal es un conjunto de herramientas para proyectos Haskell.

Nos ayuda a crear y empaquetar bibliotecas y programas de Haskell. Define una interfaz común para que los creadores y distribuidores de paquetes creen fácilmente sus aplicaciones de forma portable. Forma parte de una infraestructura más amplia para distribuir, organizar y catalogar bibliotecas y programas de Haskell.

Instalando Cabal en Windows:

$ Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { & ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -Interactive -DisableCurl } catch { Write-Error $_ }

Verificando la instalación:

$ cabal --version

Instalación en Linux:

$ curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

$ source ~/.bashrc
$ ghcup install cabal latest
$ cabal update

Verificando la instalación:

$ cabal --version

Creando un proyecto con Cabal:

$ mkdir miproyecto && cd miproyecto
$ cabal update && cabal init
$ cabal run

En caso de algún error debemos modificar el archivo ``miproyecto.cabal``, debe quedar de la siguiente forma:

   -- build-depends:    base ^>=4.18.3.0
   build-depends: base >= 4.18 && < 4.20

Una vez hecho y guardado el archivo procedemos a actualizar, construir y ejecutar el proyecto, pero antes echemos un vistazo al programa ``Main.hs``:

module Main where

main :: IO ()
main = putStrLn "Hola,mundo en Haskell!"

Ahora si:

$ cabal update
$ cabal build
$ cabal run

Salida:

Hola,mundo en Haskell!

Si necesitas actualizar la versión de ghc, teclea esto:

$ ghcup install ghc 9.6.3
$ ghcup set ghc 9.6.3

Hemos instalado Cabal y creado nuestro primer programa.

Enlaces:

https://www.haskell.org/cabal/
https://cabal.readthedocs.io/en/stable/getting-started.html#installing-cabal
https://www.haskell.org/ghc/
https://www.cs.us.es/~fsancho/Blog/posts/Haskell_el_lenguaje_funcional.md

lunes, 22 de septiembre de 2025

Hola, mundo en Haskell

Haskell es un lenguaje de programación funcional cuyas características fundamentales son:

  • Existencia de variables inmutables. 
  • El estado mutable solo se puede mediante monads
  • Pureza por default (los efectos secundarios es mediante monads). 
  • Evaluación perezosa (lazy): los resultados solo se calculan si es necesario. 
  • En Haskell todo es una expresión
  • Funciones de primera clase: las funciones pueden definirse en cualquier lugar; pasarse como argumentos y devolverse como valores. 
  • Implementaciones compiladas e interpretadas disponibles. 
  • Inferencia de tipos completa: las declaraciones de tipo son opcionales. 
  • Coincidencia de patrones (pattern marching) en estructuras de datos: son de primera clase. 
  • Polimorfismo paramétrico.

Con Haskell nos olvidamos de la declaración de tipos, pero si hay tipos y son:

  • Bool. 
  • Char. 
  • String. 
  • Integer o Int. 
  • Float. 
  • Double. 
  • Num.

Veamos el clásico programa "Hola, mundo" en Haskell.

holamundo.hs

main = putStrLn "¡Hola, mundo en Haskell!"

Para poder compilarlo y ejecutarlo debemos tener Haskell instalado en nuestras máquinas: https://www.haskell.org/downloads/

Una vez instalado abrimos una terminal y tecleamos:

$ ghc --version

Ya podremos compilar nuestro programa:

$ ghc holamundo.hs

Nos creará un ejecutable:

$ holamundo.exe

Salida:

¡Hola, mundo en Haskell!

Si solo quieres ejecutar sin tener que compilar puedes usar ``runghc``:

$ runghc holamundo.hs

Hemos aprendido como compilar y ejecutar un programa en Haskell. Además de sus fundamentos.

Enlaces:

https://typeclasses.com/
https://www.reddit.com/r/haskell/comments/10jw67n/please_explain_monads_to_me_like_im_12/
https://wiki.haskell.org/All_About_Monads
https://haskellbook.com/
https://www.haskell.org/
https://cabal.readthedocs.io/en/stable/
https://www.haskell.org/ghc/
https://docs.haskellstack.org/en/stable/
https://github.com/haskell/haskell-language-server

domingo, 14 de septiembre de 2025

Bienvenidos al sitio sobre Haskell

Bienvenido a este blog donde hablaremos sobre el lenguaje Haskell.

Haskell es un lenguaje de programación puramente funcional. Dónde escribimos qué queremos obtener, pero no decimos cómo

Más adelante escribiremos más sobre este lenguaje que obliga al programador a pensar de otra manera.

¡Bienvenidos!

Enlaces:

https://www.haskell.org/
https://www.haskellfromtheverybeginning.com/
https://haskellbook.com/
https://typeclasses.com/phrasebook
https://es.wikipedia.org/wiki/Haskell

Cabal

Cabal es un conjunto de herramientas para proyectos Haskell. Nos ayuda a crear y empaquetar bibliotecas y programas de Haskell . Defi...