Используя пакет cassava, компилируется следующее:
{-# LANGUAGE DeriveGeneric #-}
import Data.Csv
import GHC.Generics
data Foo = Foo { foo :: Int } deriving (Generic)
instance ToNamedRecord Foo
Однако следующее не работает:
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
import Data.Csv
import GHC.Generics
data Foo = Foo { foo :: Int } deriving (Generic, ToNamedRecord)
Компилятор сообщает:
test.hs:7:50:
No instance for (ToNamedRecord Int)
arising from the first field of ‘Foo’ (type ‘Int’)
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (ToNamedRecord Foo)
Это оставляет мне два вопроса: почему вторая версия не идентична первой? И почему компилятор надеется найти экземпляр для ToNamedRecord Int
?
DeriveAnyClass
делал что-нибудь полезное. Однако я видел, как это приводило к сбою во время компиляции. Я думаю, это глючит. - person dfeuer   schedule 08.09.2016