一直以來,Haskell 都沒有一個(gè)成熟的 IDE 產(chǎn)品,但作為小眾語言,haskell 的生態(tài)圈還算是比較強(qiáng)大。再加上現(xiàn)在有了 Atom,VS Code 這樣優(yōu)秀的編輯器,通過各種插件還是能夠有體驗(yàn)比較 nice 的開發(fā)環(huán)境的。
VS Code 比 Atom 更輕,運(yùn)用的時(shí)候占更小的內(nèi)存,但發(fā)布較晚,生態(tài)各方面并沒有 Atom 的成熟。而且 Atom 的插件安裝以及使用體驗(yàn)堪稱傻瓜級操作。本文就主要介紹 Atom 的方案。
安裝插件
-
autocomplete-haskell:提供了 autocomplete 的功能 -
haskell-ghc-mod:提供了語法檢查的 backend 重要,依賴于ghc-mod -
ide-haskell:提供了菜單欄顯示haskell ide的功能,可以進(jìn)行一些面板打開或關(guān)閉的操作 -
ide-haskell-hasktags:提供了 haskell 版的symbols view,symbols view是 atom 內(nèi)置的插件,用于搜索當(dāng)前文件的函數(shù)或者變量之類,但原生的 symbols view 是基于 ctags 的,并不支持 haskell。需要安裝此插件來讓其支持 haskell。依賴于hasktags -
language-haskell:提供了語法高亮。
安裝依賴
上面有兩個(gè)依賴是需要單獨(dú)安裝的。一個(gè)是ghc-mod,另一個(gè)是hasktags。直接通過 cabal 安裝即可。
cabal install ghc-mod
cabal install hasktags
配置插件
上面除了依賴于外部 binary 的 haskell-ghc-mod 和 ide-haskell-hasktags之外,其他的插件都直接能用。
配置 ide-haskell-hasktag很簡單,在插件配置頁直接填入你安裝的hasktags的目錄即可,需要包含 binary 的名字, 比如 /Users/..../Library/Haskell/bin/hasktags
配置 haskell-ghc-mod 是比較蛋疼的,需要填三個(gè)路徑,從上到下分別是additional path directories、ghc mod path 和 ghc modi path
additional path directies,填入 ghc 的 path,不包含 binary 名字,比如/usr/local/bin/ghc mod path,填入 ghc-mod 的 path,要包含 binary 的名字,比如:/Users/.../Library/Haskell/bin/ghc-modghc modi path,可不填。因?yàn)楝F(xiàn)在安裝的 ghc-mod 都是5.5了。
用上一組
接下來,就能正常使用了。不僅有語法高亮,autocomplete,并且可以通過cmd+r來調(diào)出 symbols view 做快速的跳轉(zhuǎn)。比如這樣:

鼠標(biāo)移到某個(gè) symbol 上,還可以顯示出他的 type:

還能有各種暖心的warning,比如 import 建議:

更逆天的是,還有程序?qū)懽鞯慕ㄗh(這個(gè)別的語言可真沒有):


來幫助你寫出更加嚴(yán)謹(jǐn)和簡潔的 code。
關(guān)于用 stack 可能遇到的錯(cuò)誤
如果你用的是 stack,并且都按上面的步驟正確配置了,但依舊會(huì)報(bào)一個(gè)奇怪的錯(cuò)誤:
readCreate*Process*: *runInteractiveProcess*: exec: does *not*exist (No such file or directory)
可以嘗試一個(gè)黑魔法:從工程目錄直接用 stack 來啟動(dòng) atom,stack exec atom
想看更多內(nèi)容? 可以關(guān)注我的知乎