VSCode中搭建Haskell开发环境(2019)

C#

浏览数:9

2019-10-10

前言

最近突然想学习一款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.yamlextra-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/binorz
完成这些步骤之后理论上就没问题的了。。。

继续

然后我们可以试着创建一个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)

最后配置完长这样:


长这样OWO

当然这些插件的bug也挺多的QAQ,不过我觉得能用已经差不多了QWQ

总结

这个东西真的好折腾啊QAQ,虽然说如果要学习FP的话不想折腾完全可以直接装一个Visual Studio然后学F#的,但毕竟F#不是纯函数式语言。。。

不过好在东西已经折腾完了OWO

Cheers 🙂

简书的Markdown真让人崩溃,在Atom编辑好copy上来之后引用的的格式真是惨不忍睹QAQ,又要重新调一下。。。

作者:Meowcolm024