Я использую Aeson для некоторых файлов клиентского сервера, которые я делаю, кодируя ADT как Json. Я использую Data.Aeson.TH
для генерации нужных мне экземпляров toJSON
, но экземпляры, сгенерированные для типов карт, действительно уродливы и ужасны.Игнорирование/переопределение экземпляра, сгенерированного с использованием TemplateHaskell
Я определил свою собственную, простую кодировку, которая просто рассматривает их как списки:
instance (ToJSON a, ToJSON b) => ToJSON (Map a b) where
toJSON m = toJSON $ toList m
Естественно, когда я использую это в моем коде, я получаю ошибку Duplicate instance declarations
.
Есть ли способ решить эту проблему? Мне нужно либо сообщить Template Haskell НЕ для создания экземпляра ToJson для Map, либо мне нужно сообщить GHC игнорировать этот экземпляр и использовать тот, который я предоставляю. Можно ли это сделать?
Обратите внимание, что это не проблема с перекрывающимися экземплярами. Я хочу полностью выбросить один экземпляр, а не смешивать его с другим.
Это необычно видеть 'toList' вместо' Map.toList'. 'Data.Map' предназначен для импорта. –
сделаю, но это кроме того пункт. – jmite