相同类型的两个相同类型的实例

Kon*_*tov 4 haskell types typeclass

想象一下,我们有一个使用库的Haskell程序.该程序从其依赖项之一为类型T提供类型类TC实例.在同一个库的下一个版本中,库作者为类型T提供了类型TC的另一个实例.

我们想要使用两个类型类实例.我们怎么能这样做?

PS newtype解决方案无效.这两个实例都驻留在我们无法控制的库中.

PPS我没有真实代码的例子.这是一个理论问题.我只是想了解类型类如何与库可组合性一起工作.

dav*_*420 5

哈斯克尔报告2010§4.3.2指出,

  • 在程序中,类型不能多次声明为特定类的实例.

所以在标准的Haskell中是不可能的.

我不知道任何GHC扩展允许您在GHC中执行此操作.

这是(一个?)为什么孤立实例(在类型和类型类中定义不同模块中的实例)通常被认为是个坏主意的原因.