Windowsにajhcをインストールする

■ajhcとは
ajhc はmaster_qさんが最近力を入れている Haskell コンパイラです。色々な情報はMetasepiにあります。GHCよりも吐くバイナリが小さい jhc から fork されたHaskell コンパイラであり、現在は kernel レベルでのプログラミングを目標に開発が活発に行われています。

■現状、cabal からはインストールできない
「ニコニコ動画 ajhc」あたりでヒットする ajhc のデモでは小さなマイコンで動かす例が取り上げられる事が多いですが、もちろんWindowsで動かすことが出来ます。ただし、MinGWシェルから

$ cabal update
$ export LANG=en_US.UTF-8
$ cabal install ajhc

としても多分失敗します

■ajhcをzipからコンパイル
cabalからインストールできないのは、どちらかと言うとMinGWのツールの問題なのですが最近 master_q さんが workaround を施してくださったので、github/ajhcにある最新版は簡単にインストールできます。インストール方法のcabal じゃない方に書かれてる通りにやればいいのですが git を MinGWに入れてないとちゃんとコンパイルできないようです。git は触るのも嫌なので、github/ajhcにある最新版を zip でダウンロードしてMinGWのホーム(例えば C:\MinGW\msys\1.0\home\UserName あたり)で解凍しておきます。多分 ajhc-arafura なんて名前のフォルダができるはずです。あとは MinGWシェルから

$ cd ajhc-arafura
$ export LANG=en_US.UTF-8
$ autoreconf -i
$ ./configure
$ make
$ make install

とやれば良さそうですが、僕は MinGW に git 入れてないのでコンパイルが途中でこけてしまいました。エラーメッセージを読むと Makefile の

ChangeLog:
        git log fork-jhc-0.8.0-darcs20120314.. > $@

でコケてるらしいけどgit を入れるのも面倒なので、Makefile のその部分を

ChangeLog:
        touch $@

と書き換えてみたら make が通るようになりました。あとは make install するだけですね。問題なくインストールできると思います。

■簡単なテスト
動作確認してみましょう:

$ echo 'main = print "Hello, Ajhc"' > Hello.hs; ajhc Hello.hs -o Hello;./Hello.exe
......
......
"Hello, Ajhc"

ajhcには今のところ Haskell コンパイラとしての機能が足りておらず、現状ではGHCの代わりに使えるようなレベルではありません。しかし、この記事で紹介したように手軽にインストールできるものですから、触ってみたら面白いんじゃないかなと思います。あと、MinGW にはどうせなら git 入れといたほうがいいかもしれません。嫌いだし面倒なので僕は git を MinGW には入れませんが。