pragma {-#Overlapping#-}重叠实例,但仍然出现编译器错误

时间:2019-04-26 13:02:49

标签: haskell ghc

我使用了来自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提供了此实例,但是程序包的用户应该可以覆盖它。

0 个答案:

没有答案