Я использую пакет из Hackage (network-uri
), который включает в себя нестандартный экземпляр для Show
, который мне нужно переопределить (для работы с соответствующим экземпляром Read
). Я понимаю, что прагма overlapping
специально создана для этого случая, когда экземпляр в пакете должен быть исключен.
У меня есть код
deriving instance {-# Overlapping #-} Show N.URI
и я получаю сообщение об ошибке:
Duplicate instance declarations:
instance [overlapping] Show N.URI
-- Defined at Uniform/HttpURI.hs:54:1
instance [safe] Show N.URI -- Defined in ‘Network.URI’ |
54 | deriving instance {-# Overlapping #-} Show N.URI
Какое дополнительное кодирование необходимо для достижения намеченного переопределения экземпляра в пакете? Есть проблема с safe
? Я добавил
{-# LANGUAGE Unsafe #-}
но ошибка остается. Добавление
{-# LANGUAGE IncoherentInstances #-}
также не имеет никакого эффекта. Чего не хватает?
PS. Я понимаю, что у автора пакета была, возможно, какая-то причина предоставить этот экземпляр для Show
, но пользователь пакета должен иметь возможность переопределить его.