Haskell · compilador · toolchain
GHC, el Glasgow Haskell Compiler: una guía práctica de 2026
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
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-Werroren 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.