An advanced, purely functional programming language
抛却「Haskell 语言能装逼」这一光环,笔者认为学习 Haskell 的另一主要动机在于尝试体验另一种编程思维,即「做什么」而非「怎么做」,Haskell 写出的程序更像是人脑的思维而不是机器的思维。当然了,装 x 也 hin 重要。
目前 Haskell 官方下载页 推荐三种下载方案:
总体而言,Haskell 在 *nix / OS X 操作系统下的生态优于 Windows 环境,但对于熟悉 Windows 操作、醉心于各类工具流的笔者而言,必须要在 Windows 系统下完成环境搭建。为方便后续各类包的安装更新等操作,这里采用 Cabal 的替代品 – stack。以下诸多关键操作均参考 Arvind Devarajan 的博客。
预热
在 Windows 操作系统环境中,如果没有设定环境变量 STACK_ROOT
,则通过 stack 下载的程序文件以及包快照会被存放在 %LOCALAPPDATA%\Programs\stack
以及 %APPDATA%\stack
目录下。经常变动的包安放在系统盘总会令人不安,也不便于管理。所以在首次使用 stack 之前,应设定环境变量 STACK_ROOT
,这里笔者将其设为 F:\HaskellStack
。另外推荐设定编译器 GHC 的下载安装目录,见后文 config.yaml
文件的配置。(stack 帮助文档关于此问题的说明)
配置
这里有几点关于我个人在开发过程中的习惯配置。
- 提前安装好 MSYS2 作为 C/C++ 等工具的开发环境,并添加至环境变量
PATH
。详细配置过程见 MSYS2 的日常操作 - 将一个包含常用可执行文件的目录加入环境变量
PATH
,如F:\WorkingDirectory\Bin
stack 默认使用的软件源在国外,这里换上国内的清华大学开源网站镜像。由于之前已设定了 STACK_ROOT
环境变量,首次运行 stack 会在此目录下生成一些文件,修改 config.yaml
文件:
1 | setup-info: "http://mirrors.tuna.tsinghua.edu.cn/stackage/stack-setup.yaml" |
以上参考 stackage 镜像使用帮助 以及 hackage 镜像使用帮助。另作几点说明:
- Windows 下的 stack 会自动安装 MSYS2,由于之前已在机器中安装过,故在配置中跳过 MSYS 的安装
- 通过
stack install
生成的可执行文件默认在%APPDATA%
目录下,这里统一放置于之前提到的可执行文件合集目录中
执行 stack setup
下载最新版的 GHC,目前版本为 8.4.3。
如一切顺利,stack path
输出如下:
1 | stack-root: F:\HaskellStack |
最后,如要修改 GHCi 的命令行提示符或在启动时加载某些包,可通过添加 / 修改 %APPDATA%\ghc\ghci.conf
文件为以下内容:
1 | import Text.Show.Pretty (ppShow, pPrint) |
编辑器
考虑编辑效率和插件生态,推荐使用 VSCode 作为主力编辑器。安装插件:
后两者为代码格式化插件,任选一即可。
hindent-format
貌似不能正确读取配置文件,故手动修改之(当前版本 0.0.8)
1 | ; |
个人更青睐 brittany
格式化的效果。 但目前 VSCode 插件 brittany
对未保存文档不能正确执行格式化,同样需要修改插件源代码(当前版本 0.0.1)
1 | ; |
另外,建议利用 config.yaml
文件搭配 brittany
进行深度配置。在控制台执行一次 brittany
命令,生成的配置文件位置为 %APPDATA%\brittany\config.yaml
,示例配置如下。
1 | conf_debug: |