2015-09-18 3 views
1

Программа имеет следующий импорт:Тип несоответствия после обновления камеры

import Pipes.Network.TCP 
import Pipes 
import Pipes.Core 
import qualified Data.ByteString.Char8 as C 

Компиляция терпит неудачу так:

Couldn't match expected type `bytestring-0.9.2.1:Data.ByteString.Internal.ByteString' 
      with actual type `C.ByteString' 
Expected type: Proxy 
       Int 
       bytestring-0.9.2.1:Data.ByteString.Internal.ByteString 
       () 
       b0 
       m0 
       () 
    Actual type: Proxy Int C.ByteString() C.ByteString IO() 

я могу быть более конкретную информацию о коде, но, похоже, это не относится к коду - скорее какой-то междусобойчик каприз. Возможно, Pipes, что я импортирую, считается другим ByteString, чем тот, который импортирован с квалифицированным именем.

Программа, используемая для компиляции некоторое время назад (у меня есть ее рабочий исполняемый файл), но теперь она остановилась, и я подозреваю, что может быть какое-то обновление или установка пакета. Как отладить и исправить это?

+1

Да, у вас есть две разные версии 'bytestring', и каждый из двух установленных вами пакетов зависит от другой версии. Вот почему cabal предупреждает вас, что «переустановки всегда опасны». В конце туннеля есть свет ([«no-reinstall cabal»] (http://blog.ezyang.com/2015/08/help-us-beta-test-no-reinstall-cabal/)), но вы можете захотеть уничтожить вашу песочницу или '.ghc' и повторите попытку. – dfeuer

+0

Да, вы должны удалить «bytestring», который не пришел с вашим GHC, и все, что от него зависит. –

ответ

2

Предполагая, что ваша программа построена с помощью cabal, вы должны ее повторно настроить. Это может указывать на другие проблемы, такие как зависимости, которые потребуют повторной установки или взлома других частей дерева зависимостей. «Старый способ» для решения этого - постепенно увеличивать все до тех пор, пока решатель зависимостей не согласится, что это возможно, например.

$ cabal install . 
# complains that reinstalls might break lens 
$ cabal install . lens 
# complains that reinstalls might break bytestring 
$ cabal install . lens bytestring 
# complains that reinstalls might break X 
$ cabal install . lens bytestring X 

... и т.п. «Новый способ» - использовать no-reinstall cabal. Вам все равно придется переконфигурировать, прежде чем создавать, и, возможно, потребуется снова установить некоторые зависимости для правильного перехода.

 Смежные вопросы

  • Нет связанных вопросов^_^