haskell-basic-p2~> 环境搭建
<~~ 发表日期:2022-06-25 | 本文词数:628 | 预计阅读时间:4分钟 ~~>

本节将介绍如何搭建 Haskell 的环境

同系列传送门: haskell-basic

编译器 && 包管理

本文假设你使用的是Linux系统

通过Linux发行版自带的包管理器, 下载 haskell-platform 来直接配置环境
随后, 你会获得 ghc, ghci, cabal

  • ghc: Haskell 的编译器
  • ghci: 一个REPL, 即用于新手学习的交互式解释器
  • cabal: Hsakell的包管理器

(注, 你也可以选择下载另一个叫 stack 的包管理器, 不过我选择了 cabal (官方的), 仅此而已)

请确保都能正确显示版本:

ghc -V
ghci -V
cabal -V

本系列暂时只涉及 Haskell 的语法部分, 大部分时间花在 ghci, 因此 cabal-install (即上面的 cabal) 这东西不太会用到


代码编辑

推荐的代码编辑器:

  • Helix (强推)
  • Nvim/Vim
  • Emacs
  • Vscode

如果你使用的是Vscode, 直接下载对应的Haskell插件
如果你使用的是 Helix/Vim/Emacs, 要下载对应的LSP: haskell-language-server

比如, 我现在用的是Fedora-Linux, 可以这样下载LSP:

sudo dnf copr enable -y petersen/haskell-language-server
sudo dnf install -y haskell-language-server

如果你使用的是 Helix, LSP将会直接启用
当然, 你也完全可以使用其他代码编辑器, 最好能支持LSP


换源

Haskell的包都放在 hackage, 下载依赖时, 速度可能极慢
这时, 我们应该进行将其换成镜像源

若你使用cabal, 可以按照下面的做:

cabal user-config init -f
sed -i 's/repository hackage.haskell.org/repository mirrors.ustc.edu.cn/g' ~/.cabal/config
sed -i 's/http:\/\/hackage.haskell.org\//http:\/\/mirrors.ustc.edu.cn\/hackage\//g' ~/.cabal/config
sed -i 's/-- secure: True/secure: True/g' ~/.cabal/config
cabal update

这会生成cabal的配置文件, 并且将url替换为中科大的源

至此, 环境准备工作已全部完成
下一节, 我们将正式开始学习 Haskell


更改ghci提示符

第一次执行 ghci 时, 你会发现前置的提示符为 Prelude>, 这是默认样式
但它会随着你引入的模块的增多, 而变得冗杂, 比如:

当你输入 :m Data.Time (表示引入一个模块, 后面会学), 前置提示符变成了 Prelude Data.Time>

为了防止每引入模块过多, 导致前置提示符过于杂乱, 可以选择修改 ghci 的前置符, 比如:

bash -c "echo ':set prompt \"ghci> \"' > ~/.ghci"
chmod go-w ~/.ghci

第一行更改提示符
第二行移除可写权限, 防止他人更改, 不然 ghci 会警告, 然后拒绝更改