vim-users.jp

Hack #211: Haskellでimportするモジュールや関数をその場で調べつつ入力する

Posted at 2011/04/06
このエントリーをはてなブックマークに追加

問題

Haskellで、標準添付ライブラリを含むなんらかの外部モジュールを利用するためにはimport文を記述する必要があります。例えばData.ListモジュールのunionとunionByという関数を使用するためには、

import Data.List (union, unionBy)

と記述します。また、Data.Listの全ての関数をLという名前に限定してimportするには、import qualified ~ as文を使います。

import qualified Data.List as L

いずれにせよ、importするためには事前に

  • importするモジュール名
  • (必要に応じて) そのモジュールからimportする関数名

を知っておく必要があります。非常に面倒な作業です。

解決

eagletmtさんの開発した、neco-ghcというVimプラギンを導入します。

Auto completion with neco-ghc

Auto completion with neco-ghc

Auto completion with neco-ghc

上記画像を見ていただければ、説明するまでもないでしょう。

import<space>

まで打鍵した時点で、自動でモジュールの一覧が補完候補に現れます。括弧を書くと、自動でそのモジュールの関数一覧が補完候補に現れます。これらの動作はかなり高速です。

また、importした関数が地の文で補完可能となります。このとき、どのモジュール由来の関数なのかも分かります。至れりつくせりです。

参考

Haskellのimport文についての仕様はHaskell 2010 Language Reportをご覧ください。なお、neco-ghcがこの仕様のすべてを満たしている保証はありませんが、問題を発見し次第github上でpull requestを送っていただけたりすると大変助かります。

ujihisa

もどる
blog comments powered by Disqus