windows的haskell开发环境

ghcup

ghcup 是一个用于管理 Haskell 工具链的命令行工具,它可以帮助你轻松安装、更新、切换 Haskell 编译器、GHC(Glasgow Haskell Compiler)版本以及其他相关工具,如 cabal 和 stack。通过 ghcup,你可以方便地管理和配置 Haskell 开发环境,确保不同项目使用不同的工具链版本。

非管理员运行powershell,若ghcup官网下载缓慢,使用镜像网站下载,如下

1
$env:BOOTSTRAP_HASKELL_YAML = 'https://mirrors.ustc.edu.cn/ghcup/ghcup-metadata/ghcup-0.0.6.yaml'

执行安装脚本

1
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

安装完成后需要使用ghcup安装和更新软件,如stack等,添加中国镜像
在安装目录下修改配置文件D:\ghcup\config.yml

1
2
url-source:
OwnSource: https://mirrors.ustc.edu.cn/ghcup/ghcup-metadata/ghcup-0.0.6.yaml

stack

stack 是一个 Haskell 的构建工具,它简化了 Haskell 项目的构建、管理和部署过程。stack 提供了一些强大的功能,使得 Haskell 开发变得更加高效和容易。其核心功能包括依赖管理、项目构建、版本控制以及与 GHC(Glasgow Haskell Compiler)集成等。

使用ghcup安装/更新stack版本

1
ghcup install stack

新建项目

1
stack new projectname

新建项目需要下载resolver文件,所以需要代理,clash全局代理对控制台无效,虽然能够curl google.com,但是stack依旧不能走代理,所以添加了代理的环境变量

1
2
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"

使用建议

如果是开发服务端程序建议在linux环境安装,可在windows的wsl子系统安装,因为访问数据库的一些so文件如果换环境还需要进行匹配。

如果是开发客户端程序那么可以使用windows进行开发,可配合msys2开发,更加方便。