第10章 その他のHaskellユーティリティプログラム

目次

10.1. Haskell用Ctags/Etags: hasktags
10.1.1. エディタからタグを使う
10.2. “Haskell用Yacc”: happy
10.3. CコードへのHaskellインタフェースを書く: hsc2hs
10.3.1. コマンド行構文
10.3.2. 入力の構文
10.3.3. 自分で構文要素を用意する

この節では、配布物に含まれるその他のプログラムについて述べる。これらは、大いなるHaskellでのプログラミング作業に役立つものである。

10.1. Haskell用Ctags/Etags: hasktags

hasktagsは非常に単純なHaskellプログラムであり、Haskellプログラムに対して、ctagsの「tags」ファイルやetagsの「TAGS」ファイルを生成する。

これをNEditやVim、Emacsなどのエディタにロードすると、複数ファイルからなるプログラムにおいて、関数、型、構築子の定義を探し、簡単に移動することができる。

起動構文

hasktags files

これで、files中のファイルが全て読まれ、ctagsの「tags」ファイルとetagsの「TAGS」ファイルとがカレントディレクトリに生成される。

使用例

find -name \*.\*hs | xargs hasktags

この場合、カレントディレクトリ以下の全てのHaskellソースが探索され、それらを目録化したタグファイルがカレントディレクトリに生成される。

hasktagsは単純なプログラムであり、関数や構築子や型の定義を見つけるのにも単純な規則を使っている。全てを見つけることは保証されていないし、存在しないものに対して項目を作ることもあるが、通常はかなりよく働く。特に、関数は、型シグネチャが与えられているときにのみ項目化される。

hasktagsの前、fptagshstagsがあった。これらは基本的には同じことをするものだが、どちらももはや保守されていないようである。

10.1.1. エディタからタグを使う

NEditでは、「File/Load Tags File」で「tags」ファイルをロードし、「Ctrl-D」でタグを検索する。

XEmacsでは、「visit-tags-table」で「TAGS」ファイルをロードし、「M-.」でタグを検索する。