打造令人愉悅的 Haskell 開發(fā)環(huán)境

一直以來,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-modide-haskell-hasktags之外,其他的插件都直接能用。

配置 ide-haskell-hasktag很簡單,在插件配置頁直接填入你安裝的hasktags的目錄即可,需要包含 binary 的名字, 比如 /Users/..../Library/Haskell/bin/hasktags

配置 haskell-ghc-mod 是比較蛋疼的,需要填三個(gè)路徑,從上到下分別是additional path directories、ghc mod pathghc modi path

  • additional path directies,填入 ghc 的 path,不包含 binary 名字,比如 /usr/local/bin/

  • ghc mod path,填入 ghc-mod 的 path,要包含 binary 的名字,比如:/Users/.../Library/Haskell/bin/ghc-mod

  • ghc modi path,可不填。因?yàn)楝F(xiàn)在安裝的 ghc-mod 都是5.5了。

用上一組

接下來,就能正常使用了。不僅有語法高亮,autocomplete,并且可以通過cmd+r來調(diào)出 symbols view 做快速的跳轉(zhuǎn)。比如這樣:

Paste_Image.png

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

Paste_Image.png

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

Paste_Image.png

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

Paste_Image.png
Paste_Image.png

來幫助你寫出更加嚴(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)注我的知乎

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

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

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