Mac上Haskell的换源和安装
参考文章:vscode搭建haskell环境
参考文章针对的是旧版本的stack,本文针对较新版本的stack
stack
Installing GHC automatically, in an isolated location.
Installing packages needed for your project.
Building your project.
Testing your project.
Benchmarking your project
正如官网所说,直接安装stack的好处是它自带Haskell的编译器GHC和Cabal(a system for building and packaging Haskell libraries and programs)等Heskell运行需要文件(个人觉得stack类似anaconda,环境管理+包管理工具)。但是国内安装不换源的话,搭建之路会很不顺利
使用brew安装stack
1
brew search haskell
可以看到brew返回了两个结果,一个是Formulae下的haskell-brew,另一个是Cask类型下的haskell-for-mac,后者是个IDE,使用
brew cask install haskell-for-mac
下载,但是下载的过程太长,不知道到底是什么样,我们还是按照教程里的方法下载stack1
brew install haskell-stack
换源
这个时候如果按照stack官网的指示
1
2
3
4
5stack new my-project
cd my-project
stack setup
stack build
stack exec my-project-exe很可能卡在setup步骤
第一种错误是返回Connection Failure,开全局VPN也没用那种。根据我在stackOverflow查到的信息,主要原因可能是路由器认为该地址是不良链接,拒绝了访问,无脑解决方法是直接手机开热点
第二种错误是执行stack setup之后一直卡在
ghc-8.8.2: dowanload has begun
其实就是原本的下载源在国外,所以下载速度起不来,所以我们要换清华的镜像源要换的源涉及两个文件:
~/.cable/config
~/.stack/config.yaml
首先换stack(stackage镜像使用帮助)和stack setup(hackage镜像使用帮助)的源,stack版本在2.1.1以上和以下不一样,这里只写2.1.1以上版本:
打开~/.stack/config.yaml,加上:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20setup-info: "http://mirrors.tuna.tsinghua.edu.cn/stackage/stack-setup.yaml"
urls:
latest-snapshot: http://mirrors.tuna.tsinghua.edu.cn/stackage/snapshots.json
package-indices:
- download-prefix: http://mirrors.tuna.tsinghua.edu.cn/hackage/
hackage-security:
keyids:
- 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d
- 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42
- 280b10153a522681163658cb49f632cde3f38d768b736ddbc901d99a1a772833
- 2a96b1889dc221c17296fcc2bb34b908ca9734376f0f361660200935916ef201
- 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3
- 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921
- 772e9f4c7db33d251d5c6e357199c819e569d130857dc225549b40845ff0890d
- aa315286e6ad281ad61182235533c41e806e5a787e0b6d1e7eef3f09d137d2e9
- fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0
key-threshold: 3 # number of keys required
# ignore expiration date, see https://github.com/commercialhaskell/stack/pull/4614
ignore-expiry: no
现在换cabal的源
在终端执行
cabal update
后Ctrl+C
停止, 然后进行下一步。报错没关系,这一步的目的是生成~/.cabal/config
配置文件打开
~/.cabal/config
,加入1
2repository mirrors.tuna.tsinghua.edu.cn
url: http://mirrors.tuna.tsinghua.edu.cn/hackage为了速度,可以将官方仓库注释掉。实际有朋友反应他的配置文件中本身就没有官方仓库这一行
1
2-- repository hackage.haskell.org
-- url: http://hackage.haskell.org/
现在可以愉快地按照stack官方安装指导 中的步骤继续了
1
2
3
4
5stack new my-project
cd my-project
stack setup
stack build
stack exec my-project-exe或者像python一样在终端运行.hs文件
1
2
3runhaskell filename
# 或者
runhs filename
Hs学习笔记
<–To be Continued–>