VSCode中搭建Haskell開發(fā)環(huán)境(2019)

前言

最近突然想學(xué)習(xí)一款Functional Programming Language,然后就果斷選擇了Haskell,結(jié)果在配置開發(fā)環(huán)境的時(shí)候搞得一頭霧水QAQ,從VSCode換到Atom然后又從Atom換回VSCode,折騰一一天最后終于搞好了。然后打算在這里抒發(fā)一下自己的感慨。

準(zhǔn)備

這里我用的是macOS,雖然可以用Homebrew安裝,不過我還是從Hakell的官網(wǎng)下載回來安裝的。當(dāng)然也可以用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里面安裝一大堆插件,主要是以下幾個(gè):

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的時(shí)候應(yīng)該也會(huì)報(bào)錯(cuò)QAQ,這個(gè)我也上Stackoverflow查了半天。。。最后找到的解決辦法是按照它報(bào)錯(cuò)之后的要求把一大堆東西加到extra-deps里面。

下面的方法來源于Github

根據(jù)報(bào)錯(cuò)的信息將要新增的內(nèi)容加到.stack/global-project/stack.yamlextra-deps里面,加完后大概長這樣

extra-deps: #不要直接copy這個(gè),按照報(bào)錯(cuò)的信息把東西copy上來,但基本上是這幾樣?xùn)|西
- conduit-1.2.13.1  
- conduit-extra-1.1.17
- resourcet-1.1.11
- streaming-commons-0.1.19

或者還有一個(gè)方法是這樣的,先新建這樣一個(gè)文檔:.stack/global-project/stack-cabal-1.24.yaml,然后在里面輸入:

flags: {}
extra-package-dbs: []
packages: []
extra-deps: []
resolver: lts-8.24

然后在安裝stack-run的時(shí)候輸入:

stack --stack-yaml ~/.stack/global-project/stack-cabal-1.24.yaml install stack-run

理論上這樣是沒問題的(我自己是成功了的)
Haskell ghc-mod則要求安裝ghc-mod,但問題來了,如果直接stack install ghc-mod的話是會(huì)報(bào)錯(cuò)的!然后我折騰了快半天都沒找到解決辦法,最后在找Atom的插件的時(shí)候發(fā)現(xiàn)了atom-haskell這個(gè)插件,然后發(fā)現(xiàn)里面有適合于9102年的ghc-mod的安裝辦法。。。

stack --resolver lts-9 install ghc-mod

(出現(xiàn)這個(gè)問題的的主要原因其實(shí)是ghc-mod的原版已經(jīng)很久沒有維護(hù)了。。。)
然后。。。很可能會(huì)出現(xiàn)路徑問題,應(yīng)該就要export PATH=$ PATH:~/.local/binorz
完成這些步驟之后理論上就沒問題的了。。。

繼續(xù)

然后我們可以試著創(chuàng)建一個(gè)Haskell的Project

stack new my-project #自己項(xiàng)目的名字
cd my-project
stack setup

然后我們用VScode打開這個(gè)新建的文件夾,然后配置一下插件
首先是haskell-linter,我們在Executable Path里面加上:/Users/(你的用戶名)/.local/bin/hlint(也就是hlint的絕對路徑)
然后是Haskell ghc-mod的,我們在Executable Path上面寫上stack就可以了(雖然我也不知道為什么這樣可以orz)

最后配置完長這樣:


長這樣OWO

當(dāng)然這些插件的bug也挺多的QAQ,不過我覺得能用已經(jīng)差不多了QWQ

總結(jié)

這個(gè)東西真的好折騰啊QAQ,雖然說如果要學(xué)習(xí)FP的話不想折騰完全可以直接裝一個(gè)Visual Studio然后學(xué)F#的,但畢竟F#不是純函數(shù)式語言。。。

不過好在東西已經(jīng)折騰完了OWO

Cheers :)

簡書的Markdown真讓人崩潰,在Atom編輯好copy上來之后引用的的格式真是慘不忍睹QAQ,又要重新調(diào)一下。。。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容