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

前言

最近突然想学习一款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,又要重新调一下。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容