coldwa.st
Todos os guiasProgramaçãoWebDadosFerramentasBases de dadosHaskellConceitosCabal e buildsToolchainCompiladorDesempenhoEditor e HLS

Haskell · compilador · toolchain

GHC, o Glasgow Haskell Compiler: um guia prático 2026

Por ColdwastAtualizado em 14 de junho de 20267 min de leitura#haskell#ghc#compiler
Código-fonte no ecrã
O GHC transforma o seu código-fonte Haskell em binários nativos rápidos — e alimenta o GHCi e toda a toolchain.

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

Um computador portátil aberto a mostrar código sobre uma secretária
Um computador portátil aberto a mostrar código — o GHCi permite-lhe carregar módulos e testar funções de forma interativa.
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 -Werror em 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.

Guia independente, mantido pela comunidade. O coldwa.st é um site de recursos de programação; este artigo é um texto novo e original sobre o GHC e a atual toolchain Haskell, sem afiliação com os mantenedores do projeto nem escrito por eles. Os comandos refletem o comportamento documentado do GHC/GHCup — consulte a documentação oficial para os números de versão mais recentes.