Невозможно установить кислотное состояние с помощью cabal на Haskell Platform 2012.2.0.0 (Windows XP)

Используя 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

1 ответ

Решение

Подобные проблемы часто возникают при переходе на расширяемую систему исключений. tryE а также catchIO являются стандартным шаблоном; они просто специализируются catch а также try использовать 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 этим, который определяет их в строках 18ff https://gist.github.com/4032603 а затем выполните cabal install из внешнего каталога, тот, с acid-state.cabal файл.

Вероятно, есть какая-то дополнительная ошибка, так как я не могу проверить это в данный момент. Как говорит Пол Р., когда вы получите его для компиляции, отправьте его сопровождающим. Пакет тщательно поддерживается, но похоже, что они нуждаются в тестере Windows. Кислотное состояние, безусловно, стоит того. Вам также следует попробовать некоторые модули из каталога examples/, которые в любом случае станут отличным учебником. Если у вас возникли другие проблемы, напишите, мы можем разработать подходящий исправленный файл вместе.

Другие вопросы по тегам