Monthly Archives: 2月 2018

haskell-ide-engine を使ってみて

ここ数日 haskell-ide-engine(HIE) 試してみてます。これは、Haskell による開発をサポートするさまざなツールを統合して Language Server Protocol によって扱えるようにしようというものです。

まず、私の場合 Windows 上では GHC 8.2.2 でのビルドしか成功できてません。GHC 自体なにかと Windows では切ないのでこれはちょっと諦めています。

HIE を使うための Visual Studio Code の機能拡張「Haskell Language Server」のページをみると、GHC 8.0.2 にしか対応していないようなことが書いてありますが、これは HIE が ghc-mod を使用しているからであり、ghc-mod が GHC 8.0.2 までしか対応していないからだと思います。つまり、Visual Studio Code に限らず HIE を使うならば GHC 8.0.2 までということになると思います。

コードフォーマットは、Visual Studio Code 上ではちょっと動きが怪しかったです。なぜかフォーマットするたびに末尾に空行が1行ずつ追加されていきました。ちなみに HIE のコードフォーマット機能には brittany が使われているようです。

text-icuをWindowsで使う

いきさつ

  • Windows 上の Visual Studio Code で Haskell の開発環境を整えようとする。
  • haskell-ide-engine を Visual Studio Code から使う機能拡張が GHC 8.0.2 にしか対応していない(この記事の執筆時点での最新版は GHC 8.2.2)
  • haskell-ide-engine を GHC 8.0.2 の設定でビルドしてみたら text-icu のコンパイルでコケた(以下のようなエラーが出た)
 libraries:
 * Missing C libraries: icuuc, icuin, icudt
 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.

原因

設定されている include パスおよびライブラリパス上に ICU 関連のライブラリがない。

解決方法

まず ICU のダウンロードページから ICU4C 49.1.2(icu4c-49_1_2-Win64-msvc10.zip)をダウンロードする。text-icu のドキュメントによれば ICU 4.0 より新しければいいようだが、あまり新しくても text-icu のコンパイルだけは通るが、haskell-ide-engine のビルドが途中でエラーになるのでこのバージョンにした。

ICU4C のインストールは解凍して適当なフォルダに置くだけ。その置き場を C:\sr\config.yaml に記述する。

extra-include-dirs:
  - /path/to/your/icu/include

extra-lib-dirs:
  - /path/to/your/icu/lib64

これでとりあえず ICU がらみのエラーはでなくなったが……haskell-ide-engine 自体のビルドは未だ成功していないのであった。