1

cabal を使用して、acid-state を Haskell Platform 2012.2.0.0 (Windows XP) にインストールしようとしましたが、次のエラーが発生しました。

src-win32\FileIO.hs:43:5:
    Not in scope: catchIO Perhaps you meant `catch' (imported from Prelude)

src-win32\FileIO.hs:55:6:
    Not in scope: tryE Perhaps you meant `try' (imported from Control.Exception.Extensible)

src-win32\FileIO.hs:56:6:
    Not in scope: tryE
    Perhaps you meant `try' (imported from Control.Exception.Extensible)
cabal: Error: some packages failed to install:
acid-state-0.8.1 failed during the building phase. The exception was:
ExitFailure 1
4

1 に答える 1

1

この種の問題は、拡張可能な例外システムに移行するときに頻繁に発生します。tryEおよびcatchIO標準のボイラープレートです。彼らはただ専門catchtryし、使用SomeExceptionし、IOException

 import Control.Exception.Extensible(try,throw)
 import Control.Exception(SomeException,IOException)
 import qualified Control.Exception as E 
 tryE :: IO a -> IO (Either SomeException a)
 tryE = try
 catchIO :: IO a -> (IOException -> IO a) -> IO a
 catchIO = E.catch

そうしてcabal unpack acid-state、 src-win32/FileIO.hs をthisに置き換えます。これにより、18ff の行でそれらが定義され ます https://gist.github.com/4032603そしてcabal install、ファイルのある外部ディレクトリから実行しacid-state.cabalます。

現時点ではテストできないため、おそらく追加の間違いがあります。Paul R. が言うように、それをコンパイルしたら、メンテナーに送ってください。パッケージはしっかりとメンテナンスされていますが、Windows テスターが必要なようです。酸性状態は確かに苦労する価値があります。また、examples/ ディレクトリにあるいくつかのモジュールを試す必要があります。これは、どのような場合でも優れたチュートリアルになります。さらに問題がある場合は、適切なパッチファイルを一緒に考案できます。

于 2012-11-07T16:37:12.290 に答える