Subscribed unsubscribe Subscribe Subscribe

Haskellのエディタ支援ツールあれこれ

Haskell

最近はいろいろなツールの開発が盛んで期待しています。Emacs系で継続的に開発されている or 作り始めでホットなものと言えば次の3つでしょう。

僕はというと、ベースのメジャーモードは定番(かつ微妙な)haskell-modeで、scionとghc-modを併用しています。併用しているが故にどちらの機能だったかよくわからなくなってきているのですが、想像の範囲でどんなことができるか書いてみます。

scion

scionはThomas Schilling(nominolo)さんという方が開発しています。Google Codeにプロジェクトのページがありますが、現在メンテナンスされているのはGitHubのリポジトリだけのようです。

ユーザ視点で見た特徴は

  • cabalと統合されている
    • cabalファイルを解釈するのでHs-source-dirsなどをいじっていてもちゃんとロードできる
      • Yesodみたいな大げさなディレクトリ構成でも大丈夫
    • cabalは読まずに1ファイルだけ読むこともできる
  • ローカル識別子の型を表示できる
    • これのあるなしで大違い
  • LANGUAGEプラグマの補完がカンマ区切りで1行に入れてくれて便利
    • たぶんbos/hvrブランチのみ

などでしょうか。内部的にはフロントエンドとは独立して作られていて、EmacsVimだけでなくEclipseFPから使われており、最近はむしろそちらの方がメインになっていて*.elファイルが置いてけぼりになっている印象があります。

開発ブランチは僕の観測範囲では

  • nominoloさん
    • masterブランチは古い
    • 最近scion-2nd-attemptブランチができた。大幅な設計刷新をするらしいので期待。
  • JPMoresmauさん
    • EclipseFPの中の人
    • 僕は使ってないのでなんとも。。。
  • bosさん
    • 泣く子も黙るbosのブランチ
    • ちゃんと使えるがGHC 7で動かすにはいじる必要があったような気がしなくもない
  • hvrさん
    • bosのブランチをforkしてGHC 7対応したもの

というわけで、今からならhvrさんのブランチを使うのがよいかと思います。最近何でかローカル識別子の型が出なくなって悲しいのですが調べてないので原因はわかりません。暇なときに調べます。

ghc-mod

id:kazu-yamamotoさんが作っているEmacsでの支援ツール。

いろいろ多機能なのですが、自分のモジュール名の補完機能など、補完周りが充実している印象です。何より最新版がhackageにちゃんと上がっているのが安心感があります。国内シェアはトップなのではないかと予想しています。

haskell-emacs

以前shimeというプロジェクトがあって、それが前身となっているそうです。まだ開発が始まったばかりで手軽に使えるようなパッケージングにもなっていないので、今後に期待です。

他の2つと違ってすべて*.elで作られているのが特徴でしょうか。おそらくhaskell-modeの代替として使うのではないかと思われます。いいのか悪いのかはまだよくわかりません。ただhs-move-nested.elといういかにも良さそうな名前のファイルがあるので期待です。

というわけで、いい環境を整えてすてきなHaskellライフを送りましょう。Happy Haskelling!