本节将介绍如何搭建 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)
这东西不太会用到
推荐的代码编辑器:
如果你使用的是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
时, 你会发现前置的提示符为 Prelude>
, 这是默认样式
但它会随着你引入的模块的增多, 而变得冗杂, 比如:
当你输入 :m Data.Time
(表示引入一个模块, 后面会学), 前置提示符变成了 Prelude Data.Time>
为了防止每引入模块过多, 导致前置提示符过于杂乱, 可以选择修改 ghci 的前置符, 比如:
bash -c "echo ':set prompt \"ghci> \"' > ~/.ghci"
chmod go-w ~/.ghci
第一行更改提示符
第二行移除可写权限, 防止他人更改, 不然 ghci 会警告, 然后拒绝更改