는 다음과 같은 컴파일 :`DeriveAnyClass`와 빈 인스턴스의 차이점은 무엇입니까? <a href="http://hackage.haskell.org/package/cassava">cassava</a> 패키지를 사용
{-# 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'는 유용하지 않은 것을 보지 못했습니다. 그러나 나는 컴파일 타임 크래시를 생성하는 것을 보았다. Methinks 'tis 버기. – dfeuer