前言
最近突然想学习一款Functional Programming Language,然后就果断选择了Haskell,结果在配置开发环境的时候搞得一头雾水QAQ,从VSCode换到Atom然后又从Atom换回VSCode,折腾一一天最后终于搞好了。然后打算在这里抒发一下自己的感慨。
准备
这里我用的是macOS,虽然可以用Homebrew安装,不过我还是从Hakell的官网下载回来安装的。当然也可以用Homebrew安装:
brew install haskell-stack
brew install ghc
brew install cabal-install
然后我们还是要给stack换镜像源。。。
先vim .stack/config.yaml
然后加上:
package-indices:
- name: Tsinghua
download-prefix: https://mirrors.tuna.tsinghua.edu.cn/hackage/package/
http: https://mirrors.tuna.tsinghua.edu.cn/hackage/00-index.tar.gz
setup-info: "http://mirrors.tuna.tsinghua.edu.cn/stackage/stack-setup.yaml"
urls:
latest-snapshot: http://mirrors.tuna.tsinghua.edu.cn/stackage/snapshots.json
lts-build-plans: http://mirrors.tuna.tsinghua.edu.cn/stackage/lts-haskell/
nightly-build-plans: http://mirrors.tuna.tsinghua.edu.cn/stackage/stackage-nightly/
安装完后就可以开始配置VSCode了。
配置
首先我们要在VSCode里面安装一大堆插件,主要是以下几个:
Haskell Syntax Highlighting
Haskell ghc-mod
haskell-linter
Haskelly
其中Haskelly
是要求安装:
stack install intero QuickCheck stack-run # for a global installation
stack build intero QuickCheck stack-run # for a local installation
然而。。。在安装stack-run
的时候应该也会报错QAQ,这个我也上Stackoverflow查了半天。。。最后找到的解决办法是按照它报错之后的要求把一大堆东西加到extra-deps
里面。
下面的方法来源于Github
根据报错的信息将要新增的内容加到.stack/global-project/stack.yaml
的extra-deps
里面,加完后大概长这样
extra-deps: #不要直接copy这个,按照报错的信息把东西copy上来,但基本上是这几样东西
- conduit-1.2.13.1
- conduit-extra-1.1.17
- resourcet-1.1.11
- streaming-commons-0.1.19
或者还有一个方法是这样的,先新建这样一个文档:.stack/global-project/stack-cabal-1.24.yaml
,然后在里面输入:
flags: {}
extra-package-dbs: []
packages: []
extra-deps: []
resolver: lts-8.24
然后在安装stack-run
的时候输入:
stack --stack-yaml ~/.stack/global-project/stack-cabal-1.24.yaml install stack-run
理论上这样是没问题的(我自己是成功了的)
而Haskell ghc-mod
则要求安装ghc-mod
,但问题来了,如果直接stack install ghc-mod
的话是会报错的!然后我折腾了快半天都没找到解决办法,最后在找Atom的插件的时候发现了atom-haskell
这个插件,然后发现里面有适合于9102年的ghc-mod的安装办法。。。
stack --resolver lts-9 install ghc-mod
(出现这个问题的的主要原因其实是ghc-mod的原版已经很久没有维护了。。。)
然后。。。很可能会出现路径问题,应该就要export PATH=$ PATH:~/.local/bin
orz
完成这些步骤之后理论上就没问题的了。。。
继续
然后我们可以试着创建一个Haskell的Project
stack new my-project #自己项目的名字
cd my-project
stack setup
然后我们用VScode打开这个新建的文件夹,然后配置一下插件
首先是haskell-linter
,我们在Executable Path
里面加上:/Users/(你的用户名)/.local/bin/hlint
(也就是hlint的绝对路径)
然后是Haskell ghc-mod
的,我们在Executable Path
上面写上stack
就可以了(虽然我也不知道为什么这样可以orz)
最后配置完长这样:
当然这些插件的bug也挺多的QAQ,不过我觉得能用已经差不多了QWQ
总结
这个东西真的好折腾啊QAQ,虽然说如果要学习FP的话不想折腾完全可以直接装一个Visual Studio然后学F#的,但毕竟F#不是纯函数式语言。。。
不过好在东西已经折腾完了OWO
Cheers :)
的Markdown真让人崩溃,在Atom编辑好copy上来之后引用的的格式真是惨不忍睹QAQ,又要重新调一下。。。