Haskell · compilador · toolchain
GHC, o Glasgow Haskell Compiler: um guia prático 2026
O GHC — o Glasgow Haskell Compiler — é o compilador padrão do Haskell e, de facto, o motor por baixo de todo o resto do ecossistema: o Cabal, o Stack e o Haskell Language Server pilotam-no todos. Este guia explica o que é o GHC, como instalá-lo de forma limpa em 2026, como usar o GHCi, que opções de compilação realmente importam e como se articula com as ferramentas de build.
O que é o GHC
O GHC compila o código-fonte Haskell em executáveis nativos otimizados e fornece o GHCi, um REPL interativo para explorar código. É um compilador maduro e fortemente otimizador, dotado de um rico sistema de tipos, e entrega as bibliotecas (base e afins) sobre as quais os seus programas assentam. Quase tudo o resto das ferramentas Haskell é, a algum nível, um wrapper que invoca o GHC com os argumentos certos.
Instalar o GHC (use o GHCup)
Não instale o GHC à mão. O caminho limpo e suportado é o GHCup, que gere várias versões do GHC e lhe permite alternar por projeto — veja o nosso guia de instalação do GHCup. Em resumo:
ghcup install ghc recommended
ghcup set ghc 9.10.1
ghc --version Por que a gestão de versões importa: os projetos reais fixam versões específicas do GHC, e o GHCup torna indolor ter várias instaladas.
GHCi: o REPL interativo
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) O GHCi é o lugar onde realmente acontece a maior parte do desenvolvimento Haskell — carregar um módulo, testar funções, inspecionar tipos, iterar.
As opções que importam
-O2— otimização completa para as builds de release (compilação mais lenta, execução mais rápida). O predefinido é-O0.-Wall— ativa o amplo conjunto de avisos; combine-o com-Werrorem CI para falhar perante avisos.-threaded— liga o runtime com threads, necessário para verdadeira concorrência/paralelismo.-j— compila os módulos em paralelo (veja como as builds Haskell aproveitam os seus núcleos).-rtsopts +RTS -N— deixa o programa usar vários núcleos em tempo de execução.
Compile diretamente com ghc -O2 Main.hs, mas para tudo o que ultrapasse um único ficheiro, irá pilotar o GHC através de uma ferramenta de build.
Como o GHC se articula com o Cabal e o Stack
Raramente chama o ghc à mão num projeto. O Cabal e o Stack resolvem as dependências e invocam o GHC com as opções certas e a base de dados de pacotes certa por si — veja o contexto do modelo de build em Cabal 2.0 e o historial do isolamento nas sandboxes Cabal. O Haskell Language Server também executa o GHC nos bastidores para fornecer ao seu editor tipos e diagnósticos — veja o nosso guia do HLS.
FAQ
O GHC é o único compilador Haskell? É de longe o mais dominante e padrão em 2026; existem outros compiladores, mas o GHC é aquele a que praticamente todas as ferramentas e bibliotecas se destinam.
Como instalo o GHC? Através do GHCup — gere as versões e é o instalador recomendado em haskell.org.
O que faz o -O2? Ativa a otimização completa: compilação mais demorada, execução mais rápida. Use-o para as releases; o predefinido -O0 serve para uma iteração rápida.
É preciso chamar o GHC diretamente? Raramente — o Cabal ou o Stack invocam-no por si nos projetos reais. O ghc direto é prático para scripts de ficheiro único.