Haskell · strumenti · editor
Haskell Language Server (HLS) nel 2026: installazione e correzioni comuni
Scrivere Haskell senza un backend da IDE significa strizzare gli occhi sugli errori di tipo dopo ogni compilazione. L’Haskell Language Server (HLS) risolve questo: implementa il Language Server Protocol (LSP), dandoti tipi inline, autocompletamento, vai-alla-definizione, documentazione al passaggio del mouse e refactoring in VS Code, Neovim e altri editor. Questa guida spiega cos’è HLS, come installarlo in modo pulito nel 2026, collegarlo al tuo editor e la manciata di errori che fanno inciampare le persone.
Cosa fa davvero HLS
HLS è un singolo server con cui gli editor dialogano via LSP. Fornisce:
- Informazioni sui tipi al passaggio del mouse e inline.
- Autocompletamento e suggerimenti di import.
- Vai-alla-definizione, ricerca dei riferimenti e simboli del documento.
- Azioni sul codice: aggiungere un import mancante, completare una firma di tipo, applicare un suggerimento.
- Linting tramite i suggerimenti hlint integrati.
Poiché parla LSP, lo stesso server alimenta ogni editor — installi HLS una volta e scegli un plugin client.
Installare HLS con GHCup
La via pulita è lo stesso gestore di toolchain che usi per il compilatore. Se non hai ancora predisposto la toolchain, parti dalla nostra guida all’installazione di GHCup, poi aggiungi HLS:
ghcup install hls recommended
ghcup set hls recommended La regola più importante: HLS deve supportare la tua versione di GHC attiva. Installa la build HLS corrispondente al GHC con cui compili — l’interfaccia interattiva ghcup tui mostra quali versioni di HLS coprono quali GHC.
Collegarlo al tuo editor
- VS Code: installa l’estensione ufficiale Haskell; può gestire HLS per te o usare quello installato da GHCup. Indirizzala verso l’HLS di GHCup per evitare disallineamenti di versione.
- Neovim: configura
haskell-tools.nvimo il client LSP integrato conhaskell-language-server-wrappernel tuo PATH. - Altri editor: qualsiasi editor compatibile con LSP (Emacs con lsp-mode, Helix, Zed) funziona — indirizzalo verso il binario
haskell-language-server-wrapper.
Il binario -wrapper seleziona automaticamente l’HLS giusto per il GHC di ogni progetto, ecco perché indirizzare il tuo editor verso di esso (anziché verso una versione fissa) evita la maggior parte delle incompatibilità.
Errori comuni e correzioni
- «No HLS version for GHC X.Y». Il tuo GHC è più recente di qualsiasi HLS installato. Aggiorna HLS tramite
ghcup tui, oppure porta il progetto a un GHC che HLS supporta. - HLS si riavvia di continuo / esaurisce la memoria. I progetti grandi possono esaurire la RAM durante l’indicizzazione; chiudi gli altri strumenti e assicurati che la macchina abbia memoria sufficiente per la dimensione del progetto.
- Errori di «cradle» / componenti errati. HLS legge il tuo build tramite i file di progetto; assicurati prima che il progetto si compili con
cabal build, e aggiungi unhie.yamlsolo quando il rilevamento automatico fallisce. - Risultati obsoleti dopo un cambio di dipendenza. Riavvia il language server dal tuo editor; HLS mette in cache il piano di build.
Una regola affidabile: se HLS si comporta male, conferma prima che il progetto compili da riga di comando — vedi come funzionano i build paralleli in come Cabal sfrutta i tuoi core, e il contesto del modello di build in Cabal 2.0.
FAQ
HLS è gratuito e ufficiale? Sì — è il language server open source e standard della community per Haskell, installabile tramite GHCup.
Mi servono Cabal o Stack per HLS? HLS legge il sistema di build usato dal tuo progetto; funziona sia con i progetti Cabal sia con quelli Stack.
Perché HLS deve corrispondere al mio GHC? HLS è compilato contro una specifica API di GHC, quindi ogni build HLS supporta un insieme di versioni di GHC. Usa il binario wrapper per selezionare automaticamente quello giusto per ogni progetto.
HLS funziona su Windows? Sì, tramite l’installer Windows di GHCup e le stesse estensioni per editor.