2014-10-29 4 views
2

Что означает следующее сообщение об ошибке означает, когда cabal install testpack-2.1.1 не удалось:Случайные Word8 продублировать объявление экземпляра во время установки Кабал testpack

... Everything above this succeeded with no problems. 
[22 of 22] Compiling Control.Monad.Cont (Control/Monad/Cont.hs, dist/build/Control/Monad/Cont.o) 
Registering mtl-2.2.1... 
Installing library in /home/ely/.cabal/lib/mtl-2.2.1/ghc-7.4.2 
Registering mtl-2.2.1... 
Downloading testpack-2.1.1... 
Configuring testpack-2.1.1... 
Building testpack-2.1.1... 
Preprocessing library testpack-2.1.1... 
[1 of 3] Compiling Test.QuickCheck.Instances (src/Test/QuickCheck/Instances.hs, dist/build/Test/QuickCheck/Instances.o) 

src/Test/QuickCheck/Instances.hs:50:10: 
    Duplicate instance declarations: 
     instance Random Word8 
     -- Defined at src/Test/QuickCheck/Instances.hs:50:10 
     instance Random Word8 -- Defined in `System.Random' 
cabal: Error: some packages failed to install: 
testpack-2.1.1 failed during the building phase. The exception was: 
ExitFailure 1 

Я попытался Googling, но не может иметь смысл этой установки ошибки.

ответ

2

testpack-2.1.1 обеспечивает так называемый сиротский экземпляр для Random Word8, то есть тот случай, когда он не определяет либо класс или тип сам.

Одной из нескольких проблем, связанных с бесхозными случаях является то, что один из пакетов, которые сделать определить класс или тип может выбрать, чтобы добавить этот экземпляр себя в более поздней версии, которая является именно то, что пакет random сделал в этом и, следовательно, конфликты.

От testpack версия 2.1.2 есть проверка, что обязательно укажите экземпляр, если пакет random слишком стар, чтобы сделать это сам. Поэтому вы должны исправить это, установив вместо этого более позднюю версию testpack.

+0

Я буду работать над этим, но быстрая попытка 'cabal install testpack-2.1.2' дала эту ошибку почти сразу:' src/Test/QuickCheck/Tools.hs: 34: 34: «interrupted» не является (видимое) поле конструктора «MkResult» – ely

+0

@EMS Sheesh. Во всяком случае, я попробовал просто «cabal install testpack» сам, и он установил 2.1.2.1 только с некоторыми предупреждениями. Тогда я понял, что должен был сделать «обновление для cabal», а после этого он ошибся при попытке установить 2.1.3.0. Что-то говорит мне, что ограничения на версию этого пакета не очень хорошо написаны :( –