前言
最近突然想學(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.yaml的extra-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)
最后配置完長這樣:

當(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)一下。。。