Haskell · compilatore · toolchain
GHC, il Glasgow Haskell Compiler: una guida pratica 2026
GHC — il Glasgow Haskell Compiler — è il compilatore standard di Haskell, e di fatto il motore sotto tutto il resto dell'ecosistema: Cabal, Stack e l'Haskell Language Server lo pilotano tutti. Questa guida spiega cos'è GHC, come installarlo in modo pulito nel 2026, come usare GHCi, quali opzioni di compilazione contano davvero e come si integra con gli strumenti di build.
Cos'è GHC
GHC compila il sorgente Haskell in eseguibili nativi ottimizzati e fornisce GHCi, un REPL interattivo per esplorare il codice. È un compilatore maturo e fortemente ottimizzante, dotato di un ricco sistema di tipi, e fornisce le librerie (base e affini) su cui poggiano i tuoi programmi. Quasi tutto il resto dell'attrezzatura Haskell è, a un certo livello, un wrapper che invoca GHC con i giusti argomenti.
Installare GHC (usa GHCup)
Non installare GHC a mano. Il percorso pulito e supportato è GHCup, che gestisce più versioni di GHC e ti permette di passare dall'una all'altra per progetto — vedi la nostra guida all'installazione di GHCup. In breve:
ghcup install ghc recommended
ghcup set ghc 9.10.1
ghc --version Perché la gestione delle versioni conta: i progetti veri fissano versioni GHC specifiche, e GHCup rende indolore averne più di una installata.
GHCi: il REPL interattivo
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 è il luogo in cui avviene realmente la maggior parte dello sviluppo Haskell — caricare un modulo, testare funzioni, ispezionare tipi, iterare.
Le opzioni che contano
-O2— ottimizzazione completa per le build di release (compilazione più lenta, esecuzione più veloce). Il default è-O0.-Wall— attiva l'ampio insieme di avvisi; abbinalo a-Werrorin CI per fallire sugli avvisi.-threaded— collega il runtime threaded, necessario per vera concorrenza/parallelismo.-j— compila i moduli in parallelo (vedi come le build Haskell sfruttano i tuoi core).-rtsopts +RTS -N— lascia che il programma usi più core a runtime.
Compila direttamente con ghc -O2 Main.hs, ma per tutto ciò che supera un singolo file piloterai GHC tramite uno strumento di build.
Come GHC si integra con Cabal e Stack
Raramente chiami ghc a mano su un progetto. Cabal e Stack risolvono le dipendenze e invocano GHC con le opzioni giuste e il giusto database di pacchetti per te — vedi il contesto del modello di build in Cabal 2.0 e la storia dell'isolamento nelle sandbox Cabal. Anche l'Haskell Language Server esegue GHC dietro le quinte per fornire al tuo editor tipi e diagnostiche — vedi la nostra guida HLS.
FAQ
GHC è l'unico compilatore Haskell? È di gran lunga il più dominante e standard nel 2026; esistono altri compilatori, ma GHC è quello a cui mirano praticamente tutti gli strumenti e le librerie.
Come installo GHC? Tramite GHCup — gestisce le versioni ed è l'installer raccomandato su haskell.org.
Cosa fa -O2? Attiva l'ottimizzazione completa: compilazione più lunga, esecuzione più veloce. Usalo per le release; il default -O0 va bene per un'iterazione rapida.
Bisogna chiamare GHC direttamente? Raramente — Cabal o Stack lo invocano per te sui progetti veri. ghc diretto è comodo per gli script a file singolo.