coldwa.st
Todas las guíasProgramaciónWebDatosHerramientasBases de datosHaskellConceptosCabal y buildsToolchainCompiladorRendimientoEditor y HLS

Haskell · compilador · toolchain

GHC, el Glasgow Haskell Compiler: una guía práctica de 2026

Por ColdwastActualizado el 14 de junio de 20267 min de lectura#haskell#ghc#compiler
Código fuente en una pantalla
GHC convierte tu código fuente Haskell en binarios nativos rápidos — y da vida a GHCi y al resto del toolchain.

GHC — el Glasgow Haskell Compiler — es el compilador estándar de Haskell y, en la práctica, el motor que hay debajo de todo lo demás en el ecosistema: Cabal, Stack y el Haskell Language Server lo dirigen. Esta guía explica qué es GHC, cómo instalarlo de forma limpia en 2026, cómo usar GHCi, los flags del compilador que realmente importan y cómo encaja con las herramientas de compilación.

Qué es GHC

GHC compila código fuente Haskell en ejecutables nativos optimizados y proporciona GHCi, un REPL interactivo para explorar el código. Es un compilador maduro y muy optimizador, con un rico sistema de tipos, y trae las bibliotecas (base y compañía) sobre las que se construyen tus programas. Casi todo lo demás en las herramientas de Haskell es, a algún nivel, un envoltorio que invoca a GHC con los argumentos adecuados.

Instalar GHC (usa GHCup)

No instales GHC a mano. El camino limpio y soportado es GHCup, que gestiona múltiples versiones de GHC y te deja cambiar por proyecto — consulta nuestra guía de instalación con GHCup. En resumen:

ghcup install ghc recommended
ghcup set ghc 9.10.1
ghc --version

La razón por la que importa la gestión de versiones: los proyectos reales fijan versiones específicas de GHC, y GHCup hace que tener varias instaladas sea indoloro.

GHCi: el REPL interactivo

Un portátil abierto que muestra código sobre un escritorio
Un portátil abierto que muestra código — GHCi te permite cargar módulos y probar funciones de forma interactiva.
ghci                 # start the REPL
:load Main.hs        # load a module (:l)
:type foldr          # show a type (:t)
:reload              # reload after edits (:r)
:quit                # exit (:q)

GHCi es donde realmente ocurre la mayor parte del desarrollo en Haskell — cargas un módulo, pruebas funciones, inspeccionas tipos, iteras.

Los flags que importan

  • -O2 — optimización completa para builds de lanzamiento (compila más lento, ejecuta más rápido). El valor por defecto es -O0.
  • -Wall — activa el amplio conjunto de advertencias; combínalo con -Werror en CI para fallar ante las advertencias.
  • -threaded — enlaza el runtime con hilos, necesario para concurrencia/paralelismo reales.
  • -j — compila módulos en paralelo (consulta cómo las builds de Haskell usan tus núcleos).
  • -rtsopts +RTS -N — deja que el programa use varios núcleos en tiempo de ejecución.

Compila directamente con ghc -O2 Main.hs, pero para cualquier cosa más allá de un solo archivo dirigirás GHC a través de una herramienta de compilación.

Cómo encaja GHC con Cabal y Stack

Rara vez llamas a ghc a mano en un proyecto. Cabal y Stack resuelven las dependencias e invocan a GHC con los flags y la base de datos de paquetes correctos por ti — consulta el trasfondo del modelo de compilación en Cabal 2.0 y el historial de aislamiento en sandboxes de Cabal. El Haskell Language Server también ejecuta GHC entre bastidores para dar a tu editor tipos y diagnósticos — consulta nuestra guía de HLS.

Preguntas frecuentes

¿Es GHC el único compilador de Haskell? Es, con diferencia, el dominante y estándar en 2026; existen otros compiladores, pero GHC es a lo que apuntan prácticamente todas las herramientas y bibliotecas.

¿Cómo instalo GHC? Mediante GHCup — gestiona las versiones y es el instalador recomendado en haskell.org.

¿Qué hace -O2? Activa la optimización completa: mayor tiempo de compilación, ejecución más rápida. Úsalo para los lanzamientos; el valor por defecto -O0 está bien para iterar rápido.

¿Necesito llamar a GHC directamente? Rara vez — Cabal o Stack lo invocan por ti en proyectos reales. Llamar a ghc directamente es útil para scripts de un solo archivo.

Guía independiente y mantenida por la comunidad. coldwa.st es un sitio de recursos de programación; este artículo es texto nuevo y original sobre GHC y el toolchain actual de Haskell, no afiliado a los mantenedores del proyecto ni escrito por ellos. Los comandos reflejan el comportamiento documentado de GHC/GHCup — consulta la documentación oficial para conocer los números de versión más recientes.