Haskell开发环境配置

操作系统:Win11

参考资料:

我们使用GHCup这样一个工具来帮助我们安装Haskell工具链,由于默认下载源在境外网站,因此国内用户需要使用镜像站来加快下载的速度。

首先在Windows powershell终端中执行

$env:BOOTSTRAP_HASKELL_YAML = 'https://mirrors.ustc.edu.cn/ghcup/ghcup-metadata/ghcup-0.0.7.yaml'
Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://mirrors.ustc.edu.cn/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true

输入希望安装的目录并回车,全部选择默认配置。

由于Windows缺少编译工具等,GHCup会先下载msys2这样一个工具包。该工具包同样默认从境外源下载,因此可以使用VPN等工具加速下载,例如在Clash中打开一个ps终端执行上述命令。

msys2下载完之后按Ctrl+C终止命令,此时关闭代理,重新打开ps窗口执行上述命令。GHCup会自动下载cabal等工具,当cabal安装完后,终端会卡在Downloading the latest package list from hackage.haskell.org这一行,再次终止命令。

在Haskell安装目录下的cabal文件夹内找到config文件,将其中

repository hackage.haskell.org
  url: http://hackage.haskell.org/
  -- secure: True
  -- root-keys:
  -- keys-threshold: 3

替换为科大源

repository mirrors.ustc.edu.cn
  url: https://mirrors.ustc.edu.cn/hackage/
  secure: True

然后执行

cabal update

可以看到终端显示Downloading the latest package list from mirrors.ustc.edu.cn,等待其将package list下载完。

使用cabal安装HLS,构建出的可执行文件应该在cabal/bin

cabal install haskell-language-server

安装完成后,在VSCode中安装Haskell插件。为Haskell插件添加HLS的配置项即可。

另:此方法安装的cabal可能版本较老,install新版本依赖时可能在build环境出错,可以使用ghcup install cabal ${version}指定安装新版本cabal,并依旧使用上述方法替换cabal的config。