如何从包中覆盖类型类实例

问题描述 投票:0回答:1

aeson.Types.ToJSON
,已经有一个电话
instances for ToJSON (Ratio Integer)
但它在 JSON 中显示类似 ("A" % "B") 的数字,我想在我的代码中的某个位置制作一个自定义版本(类似于浮点数字):

instance ToJSON (Ratio Integer) where
  toJSON r = String $ pack $ show $ (numerator r) / (denominator r)

然后 GHC 告诉我它重叠了,有什么办法可以覆盖

Data.Aeson.Typtes.ToJSON
中的
Ratio Integer
吗?

谢谢你

enter image description here

haskell aeson
1个回答
0
投票

你不需要,通常你会引入一个“信号接口”,比如:

newtype MyRatio = MyRatio (Ratio Integer)

instance ToJSON MyRatio where
  toJSON (MyRatio r) = String $ pack $ show $ (numerator r) / (denominator r)
© www.soinside.com 2019 - 2024. All rights reserved.