安裝 haskell開發環境

2026-03-13 20:05:009min

上 Haskell 官網 Haskell官網。目前安裝 Haskell 最簡單的方式是透過官網提供的工具 GHCup

curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

安裝完成後,下 ghcup tui ,可以進入 tui 介面。

使用方向鍵操作 tui 光標,移到要安裝的版本。

輸入 i 來安裝版本 輸入 s 來使用該版本

ghc 是 Haskell 的編譯器。

這次直接安裝撰文當下(20260208),推的 ghc 版本(9.6.7)。

Cabal 是 Haskell 的套件管理工具。使用撰文當下的推薦版本(3.14.2.0)。

安裝 HLS

HLS 是 haskell 的 langugae server, 安裝正確的版本後,使用 vs code 或任何支援 lsp 的編輯器,可以得到語言支援。

安裝 Cabal

Cabal 是 Haskell 用來編譯和打包 Haskell 程式的系統。開發者可以透過 Cabal 初始化程式、管理依賴、編譯選項等等。

這邊我們使用撰文當下推的版本(3.14.2.0)。

(可選)安裝 stack

StackHaskell 編譯環境的一層抽象,透過 Stack 可以產生基本的轉案架構、鎖定 ghc 版本、Cabel 版本、管理依賴版本等等及 編譯器選項等等。

在這裡我們也使用推薦的版本(3.7.1)

stack vs cabal

stack 和 cabal 做的事情有點重覆,但它們其實是為不同目的產生的工具。Stack 比 Cabel來說,更強調了專案的可重現性。它會鎖定 Haskell, Cabel 的版本, 並且根據 yaml 檔案自動管理專案的建置。 另外,stack cli 還整合了測試、執行、打包。以我的經驗,對初學角度來說,想要快速進入開發、學習Haskell,Stack 會是更簡單的選擇。

現在的haskell 生態圈流行使用 nix 取代 stack 做為 haskell 的版本控管工具。不過nix 有點學習曲線,為了聚焦,這系列還是建議以 stack 為主開發。

開始專案

使用 stack 開始一個專案

使用以下指令:

stack new MyProject

它會之使用 template 產生一個全新的 haskell 專案。完成後進入 MyProject資料夾。

可以使用 stack run 執行程式。

使用 Cabel 開始一個專案

新建一個專案目錄,並且在專案下執行cabal指令:

mkdir cabal-starter
cabal init 

之後,cabal 會問一些基礎設定,照著填完,會在目錄內產生cabal 檔和簡單的 haskell 程式。

可以使用 cabal run 指令執行程式。

設定 開發工具

筆者使用 emacs + lsp mode + haskell mode ,但 emacs 學習曲線比較高,這裡不另外介紹。

一般開發可以使用 vs code,搭配 haskell language server,可以有大部份的語言支援。

錯誤排除 - 遇到 lsp 提示 mismatch 怎麼辦

LSP :: Couldn't find a working/matching GHC installation. Consider installing ghc-9.10.3 via ghcup or build HLS from source.

Github 能夠找到相關的issue (#3497, #3225)說明 HLS 的版本參照有點問題。嘗試使用 ghcup 手動編譯對應的 HLS 版本。

$  ghcup compile hls --git-ref master --ghc 9.10.3 --cabal-update
haskell-language-server-wrapper --probe-tools

另外,如果使用 stack 的話,如果看到有以下錯誤。

GHC ABIs don't match!

也可能是 stack 和 hls 的整合問題 #2984

最簡單的方式是直接把 stack.yaml 內的 system-ghc: true 註解關掉。

留言