現在 Haskell の習得に挑戦しているのですが、HOC というパッケージの導入で躓いています。はてなダイアリーをはじめ各種ウェブサイトで情報を探したのですが、自力では解決方法を見つけることが出来ませんでしたのでこちらで質問させていただきます。
Mac OS X 10.6.2/GHC 6.12.1(GHC 6.10.4 でも可) の環境で、HOC を導入する手順と、導入作業にあたり注意すべきことを教えてください。GHC6.12.1/GHC6.10.4にて導入を試みた際の作業手順を下にまとめています。間違った点があれば指摘していただけるとありがたいです。
ここで下記のようなエラーが出力され、どうにも自分では解決出来ません。なお、この質問を書いている時点の最新リビジョンは413です。hoc に添付されている README.txt に書いてある通り、『runhaskell Setup configure』も試したのですが、同じエラーが出力されます。
etup.hs:18:19:
Couldn't match expected type `GenericPackageDescription'
against inferred type `Either
GenericPackageDescription PackageDescription'
Expected type: (GenericPackageDescription, HookedBuildInfo)
Inferred type: (Either
GenericPackageDescription PackageDescription,
HookedBuildInfo)
In the `confHook' field of a record
In the second argument of `($)', namely
`defaultUserHooks
{confHook = customConfig, buildHook = customBuild}'
Setup.hs:88:21:
Couldn't match expected type `GenericPackageDescription'
against inferred type `Either
GenericPackageDescription PackageDescription'
Expected type: (GenericPackageDescription, HookedBuildInfo)
Inferred type: (Either
GenericPackageDescription PackageDescription,
HookedBuildInfo)
In the first argument of `configure', namely `pdbi'
In a stmt of a 'do' expression: lbi <- configure pdbi cf
この場合でも同じようにエラーが出力されました。runhaskell configure でもやはり同じようにエラーが出力されます。
エラーメッセージを読む限り、パッケージの依存とか以前のところで Setup.hs がこけているように見えます。(GenericPackageDescriptin 型のデータを受け取る関数に対して Eigher GenericPackageDescription PackageDescription なデータが渡されている?)
考えられる対策としては、
1. Cabal を Cabal-1.6.x系統にグレードダウンする
2. Setup.hs を書き換える
のどちらかだと思います。しばらくは1.8に移行していない他のライブラリでも同じエラーが出るのではないかと。
いずれはCabal-1.8系統に対応したモノが増えると思いますので、手間がかかりますが2の手段を執るのが良いと思います。
それならば、Setup.hsの88行目付近の
customConfig :: (Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo
を
customConfig :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo
に書き換えると動くのではないかと思います。ただ、ちょっと今Haskellが使えない環境なのでうまくいくかわからないので、もし無理だったら一時的にCabalを1.6に替えるのがよいかと思います。