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)
これにより、2 つの疑問が残ります。2 番目のバージョンが最初のバージョンと同じでないのはなぜですか? そして、コンパイラが のインスタンスを見つけようとしているのはなぜToNamedRecord Int
ですか?