手軽に Haskell を Visual Studio Code (w/Haskell Language Server) 環境で使いたい
昨今の Haskell 環境は GHCup をインストールするだけで手軽に VS Code + Haskell Language Server (Haskell LSP) 上での full-fledged なIDE/開発環境が手に入る. とはいえこれは Stack か Cabal といったツールでの最低限のセットアップが必要で,私のように偶にしか Haskell を触らない者にはそれすらも少々面倒である.
そこで,Haskell Stack や Cabal を使わない, ghc --make
一つでできているプロジェクトを手軽に最新の VSCode + Haskell LSP 環境でブラウズできるようにする方法を紹介する.
hie.yaml と hie-bios と Haskell LSP
VSCode の Haskell 開発環境のバックエンドである Haskell Language Server のドキュメントによれば, プロジェクトの設定を検出するのは hie-bios というコンポーネントが担当している. (hie は Haskell IDE Engine の頭文字で,Haskell Language Server の前身であったようだ.)
hie-bios の README にあるように, hie-bios は hie.yaml
に設定を書けば明示的にプロジェクトの設定を Haskell Language Server に知らせることができる. その設定は Stack, Cabal のほかに Bios (より詳細な設定) と Direct がある.
hie-bios の Direct 設定
このうち Direct を使えば,手元の非 Stack・非 Cabal のプロジェクトでも平易に Haskell LSP の恩恵を得ることができる.
例えば,次のようにコンパイルされる Haskell コードを考える:
ghc --make -package mtl -package split A.hs B.hs
すなわち A.hs と B.hs からなり, mtl
パッケージと split
パッケージに依存するプロジェクトである.
こういったコードを VS Code で編集するには,次の内容をもつ hie.yaml
をプロジェクトルートにおいて VSCode で開けばよい:
cradle:
direct:
arguments:
- "-package"
- "mtl"
- "-package"
- "split"
- "A.hs"
- "B.hs"
必要に応じて Haskell LSP をリスタート (Ctrl-P -> Haskell と入力すれば選択肢が現れる) すれば反映される.
所感
自分でごく短いコードを試すほか,誰かから渡されたレガシーな Haskell コードを調べなければならない場合にもこの方法は有効だと思う.
とはいえこの方法はファイルが増えるたびに hie.yaml
の編集が必要になる.
プロジェクトが複数のファイルから構成されるようなったら,早々に Stack か Cabal を使う方法に切り替えたほうがよさそうだ.