Pragma OverlappingInstances 在 GHC 中已被弃用一段时间,并且 OVERLAPPING pragma 可以替代它。
instance {-# OVERLAPPING #- } ...
尽管这不是 Haskell 中定义类实例的唯一方法。 我无法通过派生来定义重叠实例并避免有关已弃用的 OverlappingInstances 的讨厌警告。
以下情况均无效:
deriving {-# OVERLAPPING #-} (Lift)
deriving ({-# OVERLAPPING #-} Lift)
最佳答案
对于此类实例以及需要专门实例上下文的实例,您需要使用 StandaloneDeriving
。
{-# language StandaloneDeriving, FlexibleInstances #-}
data T a = T
deriving instance {-# OVERLAPPING #-} Show (T Int)
instance {-# OVERLAPPABLE #-} Show (T a) where
show ~T = "Tee-hee"
main = do
print (T :: T Int)
print (T :: T Char)
关于haskell - 如何将重叠编译指示应用于派生实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67303814/