Sử dụng gói cassava, sau đây biên dịch:Sự khác biệt giữa `DeriveAnyClass` và một ví dụ trống là gì?
{-# LANGUAGE DeriveGeneriC#-}
import Data.Csv
import GHC.Generics
data Foo = Foo { foo :: Int } deriving (Generic)
instance ToNamedRecord Foo
Tuy nhiên, sau đây không:
{-# LANGUAGE DeriveGeneriC#-}
{-# LANGUAGE DeriveAnyClass #-}
import Data.Csv
import GHC.Generics
data Foo = Foo { foo :: Int } deriving (Generic, ToNamedRecord)
Các báo cáo trình biên dịch:
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)
này khiến tôi với hai câu hỏi: Tại sao phiên bản thứ hai không giống với phiên bản đầu tiên? Và tại sao trình biên dịch lại hy vọng tìm được một thể hiện cho ToNamedRecord Int
?
Tôi chưa thấy 'DeriveAnyClass' làm bất kỳ điều gì hữu ích. Tôi đã thấy nó tạo ra tai nạn thời gian biên dịch, tuy nhiên. Methinks 'tis buggy. – dfeuer