我有一個模塊Foo.hs
其中包含不派生Generic
一個定義:同時派生Generic和ToJSON?
-- Foo.hs
data Blather = Blather ... -- Generic not derived here
而在另一個模塊我想獲得ToJSON
:
-- Bar.hs
{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
import GHC.Generics
import Data.Aeson
instance Generic Blather
instance ToJSON Blather
但它不會編譯。如果我在定義站點的Foo.hs
中推導出Generic,則我可以稍後在另一個模塊中推導出ToJSON
。
我可以在Bar.hs
中得出ToJSON Blather
而無需修改原始Foo.hs
?
或者有沒有簡單的方法手寫instance ToJSON Blather
?
它是否與['StandaloneDeriving'分機]工作(https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/deriving.html )? –
爲什麼你不想在你定義類型的地方派生'Generic'?孤兒實例是邪惡的! – dfeuer
是的,這將是正確的解決方案,但在此時我不想提交修改'Foo.hs'的PR。 – ErikR