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.