2013-09-27 3 views
3

После обновления до Ubuntu 13.10 один из моих кодов Haskell не удается скомпилировать. Следующий код компилируется без проблем, по (по крайней мере) GHC-7.0.x, но терпит неудачу при GHC-7.6.2 (с неупорядоченным-контейнеров-0.2.2.1):Haskell GHC-7.6.2 Получение данных и данных с помощью HashMap

{-# LANGUAGE OverloadedStrings, DeriveDataTypeable #-} 
import Data.Typeable 
import Data.Data 
import qualified Data.HashMap.Strict as HM 

data Bar = Bar { bar :: String } deriving(Data, Typeable) 
data Foo = Foo { foo :: HM.HashMap String Bar } deriving(Data, Typeable) 

ошибки я получаю:

deriving-hm-fail.hs:7:58: 
    No instance for (Data (HM.HashMap String Bar)) 
    arising from the 'deriving' clause of a data type declaration 
    Possible fix: 
    add an instance declaration for (Data (HM.HashMap String Bar)) 
    or use a standalone 'deriving instance' declaration, 
     so you can specify the instance context yourself 
    When deriving the instance for (Data Foo) 

Data.HashMap.Strict имеет объявление экземпляра: (Data k, Data v, Eq k, Hashable k) => Данные (HashMap kv). Поскольку Bar является экземпляром Data, это должно работать, или я чего-то не хватает?

ответ

1

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

Кажется, что среда Haskell, отправленная Ubuntu, испорчена. Очистка всех пакетов libghc- * и переустановка из Hackage вместо этого исправили все.

4

Не только он должен работать, он делает работает с GHC 7.6.3 x86-64 на Linux. Возможно, это ошибка 7.6.2? Я бы посмотрел в журнал изменений.

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

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