You don't have javascript enabled. Good luck! :(
記事公開日: 2020/04/02
最終更新日: 2020/08/28

(廃止) VS Code と haskell-ide-engine で Haskell 開発環境を構築する


現在は haskell-language-server (hls) に開発が移っており、こちらの方が機能も多く、インストールについてもビルド不要でバイナリが自動的に落ちてきます。

hls の動作は hie と比べてかなり安定しています。(windows 環境でも問題無く動いているようです)

インストール方法等については Haskell環境構築2020簡易版 (macOS, Linux向け) が参考になります。

補足: 現状 hie.yaml ファイルは Avi-D-coder/implicit-hie を使って自動生成した方が良いです。

# for cabal
$ cabal install -z implicit-hie

# for stack
$ stack install implicit-hie

$ gen-hie > hie.yaml

また、不要になった hie のバイナリ等は以下のコマンドで削除できます。

# for cabal
$ rm ~/.cabal/bin/hie*

# for stack
$ rm ~/.local/bin/hie*

hls と周辺ツールとの関係は The State of Haskell IDEs を読むとよくわかります。


注意: 本記事の内容は古くなっているため Haskell 開発環境の構築方法として推奨していません。


本家のSSを引用

この画像は本家リポジトリのスクリーンショットを引用しています。

現在リリースされている最新バージョンは v1.2 です。(HIE はまだ安定して動作しない場合があるのでご注意ください)

この記事は以下のリビジョンで動作確認しています。

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ git rev-parse HEAD
02815bb04d9ea3501e941ac116673f0968e1d0dd

また、vscode-hie-server の最新バージョンは 0.0.37 です。

実行環境

環境 バージョン
OS Ubuntu 18.04.4 LTS
Stack 2.1.3
HIE Version 1.2 x86_64 ghc-8.8.2
vscode 1.43.2

haskell-ide-engine のビルド時間めちゃ長い問題について

現状、公式からビルド済みのバイナリは配布されていません。

「[Nix で Haskell IDE Engine をシュッと入れる][vscode-install-nix]」の方法でインストールすれば比較的短時間で終わるみたいです。興味ある方は試してみると良いかもしれません!

また、その他にも VS Code の Devcontainer 機能を使ったインストール方法もあります。

ビルド時間 (参考)

参考までに僕の環境 (Mac)

  • MacBook Air (Retina, 13-inch, 2018)
  • CPU: 1.6 GHz Dual-Core Intel Core i5
  • Memory: 16 GB 2133 MHz LPDDR3

v1.0.0.0 をビルドした場合は22分かかりました。(色々キャッシュとか効いてるはずなので、フルビルドの場合は1時間~2時間ぐらいかかるかもしれません。)

$ stack ./install.hs hie
...
Build completed in 22m31s

Haskell の開発環境について

みなさん Haskell の開発環境ってどうしてますか?僕は Vim and Haskell in 2016 を参考にしつつ、 haskell-vim-now で環境を整えていました。これはこれで便利なのですが、やっぱり IDE を使いたいって思う時ありますよね。

Haskell 界隈でもこの話題は昔から問題として認識されていて、Haskell で書かれている Leksah (10年以上続いているプロジェクト) や Haskell for Mac (有料ですが SpriteKit を使ってゲームを作れたりします。開発スピードは遅めです。Xcodeplayground 機能も実装されています。個人的に購入してみましたが stack と相性が悪いのですぐに使わなくなりました) などの IDE が存在します。

また、IDE を作るのではなく、バックエンドを実装するプロジェクトも存在します。

そして、ghc-modide-backend が力を合わせてすごいやつ作るぞ!となって、絶賛開発中なのがこちら。

将来的には、このプロジェクトに全て統合していくようです。

説明が長くなりましたが、Summer of Haskell 2017Haskell IDE Engine というプロジェクトがあり、以下を実装することを目標としていました。

今までは自分たちで HLintHaRe などのツールを別途インストールし、実行する必要がありましたが、HIE を使うことでこれらの作業負担が無くなる点も Good Point だと思います。(Tools in the ecosystem を見てもらえればわかりますが、本当にたくさんあります。)

現在使える機能は以下の通りです。

  • HLint, ghc-mod を使った静的解析
  • apply-refact を使ったクイックフィックス
  • マウスホバー時の型情報の表示と Hoogle を使ったドキュメントの表示
  • 定義へのジャンプ
  • トップレベル定義の一覧表示
  • ドキュメント内のハイライト参照
  • 自動補完
  • Ormolu, brittany, Floskell を使ったコード整形
  • HaRe を使った名前変更リファクタリング
  • import 文の自動挿入
  • import 文からパッケージを .cabal (Cabal) ファイルや hpack.yaml (hpack) に追加
  • typo のクイックフィックス
  • hsimport を使った import 文の挿入
  • LiquidHaskell のサポート
  • Case splitting

HIEHLint, brittany, ghc-mod 等の各パッケージが提供している API を利用して実装しているため、それぞれのバイナリファイルは必要ありません。(つまり、stack install hlint などでインストールしなくても使えるということです)

その他の開発環境について

その他、参考になりそうな記事へのリンクです。

HIE のデメリット

良い部分だけ紹介するのは不公平なので、利用していて気になっている部分を箇条書きで列挙します。

  • プロジェクトごとに異なる HIE のバイナリが必要なので、ビルドの時間が長いです。またかなりディスク容量を消費します (Wild thought: use ghc-hotswap to load plugins #904 という取り組みも今後の野望として考えているようです)
  • 良くも悪くも安定していないので、master ブランチが壊れている場合があります
  • macOSTemplateHaskell を利用しているファイルを開くと HIE が動かなくなることがあります

上記の問題はあるものの、その問題点を確実に上回るメリットがあるため現在も利用を続けています。

準備

依存関係のインストール

git はすでにインストールされているものとします。

# Debian 9/Ubuntu 18.04 or earlier
$ sudo apt install libicu-dev libtinfo-dev libgmp-dev zlib1g-dev

# Debian 10/Ubuntu 18.10 or later
$ sudo apt install libicu-dev libncurses-dev libgmp-dev zlib1g-dev

zlib1g-dev公式ドキュメントに記載が無いため環境によっては不必要かもしれませんが、ハマりポイントっぽいのでインストールしておいた方が良いと思います。

Stack のインストール

$ curl -sSL https://get.haskellstack.org/ | sh

既に stack をインストールしている人でバージョンが 2.1.1 より小さい場合は、以下のコマンドで更新しましょう。

$ stack upgrade

$ stack --version
Version 2.1.3, Git revision 0fa51b9925decd937e4a993ad90cb686f88fa282 (7739 commits) x86_64 hpack-0.31.2

パスを通す

すでに設定している方は必要ありません。

だいたいこんな感じです。必要に応じて変更しましょう。

  • Mac ユーザ
$ echo 'export PATH=$(stack path --local-bin):$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
  • Ubuntu ユーザ
$ echo 'export PATH=$(stack path --local-bin):$PATH' >> ~/.bashrc
$ source ~/.bashrc

HIE が対応している GHC のバージョン

install.hs スクリプトの help コマンドで、利用可能なコマンドの一覧が表示されます。

利用可能な GHC のバージョン一覧もここで確認できます。

$ stack ./install.hs help
... GHC のインストールが始まる場合があります ...

Usage:
    stack install.hs <target> [options]
    or
    cabal v2-run install.hs --project-file install/shake.project -- <target> [options]

Targets:
    help                Show help message including all targets
                        
    hie                 Install hie with the latest available GHC and the data files
    latest              Install hie with the latest available GHC
    data                Get the required data-files for `hie` (Hoogle DB)
    hie-8.4.2           Install hie for GHC version 8.4.2
    hie-8.4.3           Install hie for GHC version 8.4.3
    hie-8.4.4           Install hie for GHC version 8.4.4
    hie-8.6.4           Install hie for GHC version 8.6.4
    hie-8.6.5           Install hie for GHC version 8.6.5
    hie-8.8.1           Install hie for GHC version 8.8.1
    hie-8.8.2           Install hie for GHC version 8.8.2
                        
    dev                 Install hie with the default stack.yaml
                        
    icu-macos-fix       Fixes icu related problems in MacOS

Options:
    -j[N], --jobs[=N]   Allow N jobs/threads at once [default number of CPUs].
    -s, --silent        Don't print anything.
    -q, --quiet         Print less (pass repeatedly for even less).
    -V, --verbose       Print more (pass repeatedly for even more).

HIE のインストール

HIE はビルドに利用した GHC のバージョンを利用するプロジェクトでしか動きません。(具体例: GHC-8.6.5 でビルドした HIEGHC-8.8.3 を利用するプロジェクトでは使えません)

そのため、各 GHC のバージョンに対応した HIE のバイナリファイルを hie-8.6.5 のようにリネームすることで、この問題を回避しています。

通常の良くある stack install コマンドではなく install.hs スクリプトを使ったインストール方法を推奨するのは、それらのつまらない作業を全部やってくれるからです。また、このスクリプトは Shake というビルドシステムを利用しているため、OS に依存することなく実行可能です。そのため Windows でも Linux でも install.hs を使ってインストールを行います。

インストール方法には

  1. 最新の GHC のバージョンに対応する HIE をインストールする方法
  2. 指定したバージョンの GHC に対応する HIE をインストールする方法

の2パターンがあります。

HIE をバージョンごとにインストールする方法

以下は全て stack を使ってインストールする方法になります。cabal を使いたい人は後述の方法を試してください。

2つ以上のバージョンを利用したい場合は、次に説明するインストール方法を単純に組み合わせるだけで大丈夫です。

最新の GHC (8.8.2)

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ stack ./install.hs hie

hie コマンドは最新版の HIE のインストールと hoogle ドキュメントの生成の両方を行います。

GHC 8.8.2

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ stack ./install.hs hie-8.8.2
$ stack ./install.hs data

GHC 8.8.1

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ stack ./install.hs hie-8.8.1
$ stack ./install.hs data

GHC 8.6.5

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ stack ./install.hs hie-8.6.5
$ stack ./install.hs data

GHC 8.6.4

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ stack ./install.hs hie-8.6.4
$ stack ./install.hs data

GHC 8.4.4

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ stack ./install.hs hie-8.4.4
$ stack ./install.hs data

GHC 8.4.3

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ stack ./install.hs hie-8.4.3
$ stack ./install.hs data

GHC 8.4.2

$ git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
$ cd haskell-ide-engine
$ stack ./install.hs hie-8.4.2
$ stack ./install.hs data

stack ではなく cabal を使う

HIE のビルドに stack build ではなく cabal build を使うこともできます。cabal のバージョンは 2.4.1.0 以降であれば利用可能です。

ただし、Windows 環境の場合は 3.0.0.0 以降でしか動きません。

cabal を使う場合の基本形はこんな感じです。cabal-hie-install というスクリプト経由でコマンドを実行します。

$ ./cabal-hie-install help
... ビルドが実行される場合があります。

Usage:
    stack install.hs <target> [options]
    or
    cabal v2-run install.hs --project-file install/shake.project -- <target> [options]

Targets:
    help                Show help message including all targets
                        
    hie                 Install hie with the latest available GHC and the data files
    latest              Install hie with the latest available GHC
    data                Get the required data-files for `hie` (Hoogle DB)
    hie-8.4.4           Install hie for GHC version 8.4.4
    hie-8.6.4           Install hie for GHC version 8.6.4
    hie-8.6.5           Install hie for GHC version 8.6.5
    hie-8.8.1           Install hie for GHC version 8.8.1
    hie-8.8.2           Install hie for GHC version 8.8.2
                        
    ghcs                Show all GHC versions that can be installed via `cabal-build`.
                        
    icu-macos-fix       Fixes icu related problems in MacOS

Options:
    -j[N], --jobs[=N]   Allow N jobs/threads at once [default number of CPUs].
    -s, --silent        Don't print anything.
    -q, --quiet         Print less (pass repeatedly for even less).
    -V, --verbose       Print more (pass repeatedly for even more).

利用可能なGHCの一覧は cabal-hie-install ghcs コマンドで確認できます。

$ ./cabal-hie-install ghcs
********************************************************************************
Found the following GHC paths:
ghc-8.4.4: ~/.ghcup/bin/ghc-8.4.4
ghc-8.6.4: ~/.ghcup/bin/ghc-8.6.4
ghc-8.6.5: ~/.ghcup/bin/ghc-8.6.5
ghc-8.8.1: ~/.ghcup/bin/ghc-8.8.1
ghc-8.8.2: ~/.ghcup/bin/ghc-8.8.2

********************************************************************************

例として、GHC-8.8.2 対応の HIE をビルドする場合は以下のようになります。

$ cabal update
$ ./cabal-hie-install hie-8.8.2
$ ./cabal-hie-install data

VSCODE の設定

無事にインストールが完了し、パスが通っている状態であればこのように HIE のバージョンが表示されます。

$ hie --version
Version 1.2 x86_64 ghc-8.8.2

トラブルシューティング

本家の Troubleshooting も参考になる場合があります。


hie doesn’t work with error “cannot satisfy -package-id foo …”

上記の issue 通り、プロジェクトのルートで以下のコマンドを実行すれば直ります。

$ echo "cradle: { stack: {}}" > hie.yaml
$ stack build

stack build だけで直る場合もあります。


Mismatching GHC versions: GHC session is No System GHC Found., HIE is 8.6.5 You may want to use hie-wrapper.Check the README for more information

vscode でフォルダを開く際に、プロジェクトルートを開いているか確認してみてください。

例えば、ホームディレクトリなど、プロジェクトルートではない場所で作業している場合に発生します。


hie が見つからない

vscode のポップアップ

hie executable missing, please make sure it is installed, see github.com/haskell/haskell-ide-engine.

画像のようなエラーメッセージが出た時は hie が見つからないということなので、以下のように実行ファイルのパスを languageServerHaskell.hieExecutablePath に指定します。

"languageServerHaskell.hieExecutablePath": "~/.local/bin/hie",

どこにインストールしたかわからない人は次のコマンドでパスを確認しましょう。

$ which hie
~/.local/bin/hie

エラーメッセージは以下のような内容が表示されます。

readCreateProcess: <path>/bin/cabal-helper-wrapper "print-build-platform" (exit 1): failed

このエラーは cabal-helper-wrapper “print-build-platform” (exit 1): failed. #128 の可能性があります。

下記の内容を .bash_profile 等に追記すると解決する場合があります。

export PATH=$(stack path --compiler-bin):$PATH

Error: spawn EACCES というエラーが出て HIE が起動しない

[Error - 19:07:38] Starting client failed
Error: spawn EACCES
	at _errnoException (util.js:1024:11)
	at ChildProcess.spawn (internal/child_process.js:323:11)
	at Object.exports.spawn (child_process.js:514:9)
	at _getServerWorkingDir.then.serverWorkingDir (/home/guchi/.vscode/extensions/alanz.vscode-hie-server-0.0.24/node_modules/vscode-languageclient/lib/main.js:347:40)
	at <anonymous>

上記のエラーは、パスの指定が間違っている場合などで出現するようです。

例えば、以下のパスはどちらも間違っています。自分の設定ファイルを確認してみましょう。

  • 間違った指定その1
"languageServerHaskell.hieExecutablePath": "~/.local/bin/",
  • 間違った指定その2
"languageServerHaskell.hieExecutablePath": "${HOME}/.local/bin/hie",

以下のように、正しいパスを指定しましょう。

"languageServerHaskell.hieExecutablePath": "~/.local/bin/hie",

text-icu パッケージのビルドエラー

macOS 環境だと、以下のようなエラーが出る場合があります。

--  While building custom Setup.hs for package text-icu-0.7.0.1 using:
      /Users/bm12/.stack/setup-exe-cache/x86_64-osx/Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64-osx/Cabal-1.24.2.0 configure --with-ghc=/Users/bm12/.stack/programs/x86_64-osx/ghc-8.0.2/bin/ghc --with-ghc-pkg=/Users/bm12/.stack/programs/x86_64-osx/ghc-8.0.2/bin/ghc-pkg --user --package-db=clear --package-db=global --package-db=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/pkgdb --libdir=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/lib --bindir=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/bin --datadir=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/share --libexecdir=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/libexec --sysconfdir=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/etc --docdir=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/doc/text-icu-0.7.0.1 --htmldir=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/doc/text-icu-0.7.0.1 --haddockdir=/Users/bm12/.stack/snapshots/x86_64-osx/lts-9.21/8.0.2/doc/text-icu-0.7.0.1 --dependency=base=base-4.9.1.0 --dependency=bytestring=bytestring-0.10.8.1 --dependency=deepseq=deepseq-1.4.2.0 --dependency=text=text-1.2.2.2-9UQZjEJZQFSGMffj1Z5g00
    Process exited with code: ExitFailure 1
    Logs have been written to: /usr/local/share/haskell-ide-engine/.stack-work/logs/text-icu-0.7.0.1.log

    Configuring text-icu-0.7.0.1...
    Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2: Missing dependencies on foreign
    libraries:
    * Missing C libraries: icuuc, icui18n, icudata
    This problem can usually be solved by installing the system packages that
    provide these libraries (you may need the "-dev" versions). If the libraries
    are already installed but in a non-standard location then you can use the
    flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are.
make: *** [build] Error 1

依存しいてるライブラリのパスがわからなくてパッケージのインストールに失敗しているため、以下のコマンドでパッケージをビルドしましょう。

$ stack ./install.hs icu-macos-fix

VS Code のインストール

Ubuntu 18.04 LTS

公式ドキュメントで紹介されている、手動でのインストール方法でインストールすることにします。

$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
$ sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
$ sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'

$ sudo apt install apt-transport-https
$ sudo apt update
$ sudo apt install code # or code-insiders

code と入力すればすぐに vscode が起動します。

$ code
vscode 起動時の画面

以下のようなエラーが出る場合はライブラリが足りないので、追加でインストールしましょう。

$ code
/usr/share/code/bin/../code: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory

$ sudo apt install libxss1

macOS Catalina (10.15.3)

公式サイトからバイナリが配布されているので、それをインストールするだけです。

拡張機能 (Haskell Language Server) の追加

VS Code marketplace から Haskell Language Server 拡張をインストールします。

マーケットプレイスから Haskell Language Server 拡張をインストール

インストール完了後、再読み込みすると有効化されます。

また、vscode 内からインストールすることも可能です。

VSCode 内から Haskell Language Server 拡張をインストール

Haskell Language Server をインストールすると Haskell Syntax Highlighting 拡張も同時にインストールされるため、何もしなくても色鮮やかなコードが表示されます。

シンタックスハイライト

設定可能な項目

名前 デフォルト値 備考
hlintOn boolean true
maxNumberOfProblems number 100
diagnosticsOnChange boolean true
liquidOn boolean false
completionSnippetsOn boolean true
formatOnImportOn boolean true
formattingProvider string “brittany” Enum: [“brittany”, “floskell”, “ormolu”, “none”]
hieExecutablePath string ""
useCustomHieWrapper boolean false
useCustomHieWrapperPath string ""
noLspParam boolean false
showTypeForSelection.onHover boolean true
showTypeForSelection.command.location string dropdown Enum: [“dropdown”, “channel”]
trace.server string “off” Enum: [“off”, “messages”, “verbose”]
logFile string ""
enableHIE boolean true

実際の設定は vscode-hie-server/package.json で確認できます。

利用可能なコマンド

コマンド名 説明
demoteDef Move a definition one level down
liftOneLevel Move definition one level up from where it is now
liftTopLevel Move a definition to the top level
genApplicative Generalize a monadic function to use applicative
deleteDef Deletes a definition
insertType Insert type for the expression
showType Show type for the expression
caseSplit Generate pattern matches for the identifier under the cursor
importIdentifier Imports a function or type based on a Hoogle search
restartHie Restart the Hie LSP server

実際のコマンドは vscode-hie-server/package.json で確認できます。

機能について

ここが一番重要ですね!まだまだ開発途中なので出来ることは限られているのですが、それでも凄く便利です。ここから利用するスクリーションは本家リポジトリで紹介されている画像になります。

cabal, hpack へのパッケージ追加

パッケージの追加
パッケージの追加

typo quick fixes

typo quick fixes

不足している import の追加 (via hsimport)

Add missing imports

import 宣言の自動挿入

import

このコマンドは package.yaml の依存関係から、選択した関数が含まれるモジュールをリストアップしてくれるので、その中から適切な物を選ぶと、自動的に挿入されます。

Lint

PROBLEMS (問題) のエリアには HLint, ghc-mod のエラーや警告が表示されます。クリックすると、該当する行までジャンプするので便利です。

lint

コードアクションとクイックフィックス

HLint に指摘されると行の左側に電球のマークが表示されます。これをクリックして適用するだけで、HLint の指摘通りにコードが書き換わります。

quickfix

失敗することもあるので、あまり使いません。

マウスホバー時の型情報とドキュメント表示

マウスホバー時に型の情報とドキュメントが表示されます。ドキュメントの表示は hoogle を利用しています。

hoogle

ドキュメントが表示されない場合

以下の画像のように、画面上部に No hoogle db found. Check the README for instructions to generate one と表示されている場合はデータベースと上手く連携できていない状態です。

No hoogle db found. Check the README for instructions to generate one

僕の環境では以下のバージョンでエラーとなってしまったので、 最新のLTSで hoogle をインストールし直しました。

$ hoogle --version
Hoogle 5.0.9, http://hoogle.haskell.org/

$ stack install hoogle --resolver lts
...

$ hoogle --version
Hoogle 5.0.17.15, https://hoogle.haskell.org/

プロジェクト固有のデータベースを利用する

stack のプロジェクトルートで通常通り hoogle のデータベースを生成すればOKです。

$ stack haddock --keep-going

cabal プロジェクトの場合は ~/.cabal/config に以下の設定を追記します。

documentation: True

定義へのジャンプ

定義ジャンプ

全てのトップレベル定義の一覧表示

Ctrl + P でコマンドパレットを開き @ を入力することでトップレベルに定義された関数の一覧を確認できます。クリックすると、その関数の定義にジャンプします。

トップレベル定義の一覧表示

ソースコード内のハイライト参照

マウスでドラッグするだけで、全てハイライトされます。

ハイライト参照

自動補完

文字を入力すると自動的に補完機能が働きます。タブキーで補完完了です。

自動補完

コード整形

以下のフォーマッターが利用できます。

フォーマッターを適用

名前の変更

HaRe を使って名前変更のリファクタリングができます。

HaReを使ったリファクタリング

その他の拡張機能について

Haskell に関する拡張機能はそれほど多くはありませんが、Haskell GHCi debug viewer Phoityne などは GHCi debugger が使えるようになるという面白い拡張です。

一応こんな感じで動きます。

DEMO

HIE がサポートしているエディタ

HIEvscode に限らず Language Server Protocol が利用できれば、どんなエディタでも利用できます。公式の README で明記があるのは以下のエディタです。

まとめ

vscode 内の統合ターミナルウィンドウで以下のコマンドを一度入力しておけば、保存時に自動的にリビルドしてくれるのでオススメです。

$ stack test --fast --file-watch --no-run-tests

# コンパイルの遅さが気になる人はこちらのコマンドが良いです
$ stack build --fast --file-watch --ghc-options "-j4 +RTS -A128m -n2m -qg -RTS"

最新の IDE 環境でモダンな Haskell アプリケーション開発を楽しみましょう!