私は、ADTをJsonとしてエンコードして、クライアント/サーバーの一部にAesonを使用しています。私は必要なインスタンスをData.Aeson.TH
生成するために使用していますが、Map タイプ用に生成されたインスタンスは本当に醜く、扱いがひどいものです。toJSON
それらをリストとして扱うだけの、独自のより単純なエンコーディングを定義しました。
instance (ToJSON a, ToJSON b) => ToJSON (Map a b) where
toJSON m = toJSON $ toList m
当然、コードでこれを使用すると、Duplicate instance declarations
エラーが発生します。
これを解決する方法はありますか?Template Haskell に Map の ToJson インスタンスを生成しないように指示するか、GHC にそのインスタンスを無視して私が提供したインスタンスを使用するように指示する必要があります。これらのいずれかを実行できますか?
これは「重複インスタンス」の問題ではないことに注意してください。あるインスタンスを別のインスタンスと混ぜずに完全に捨てたいです。