可以理解,字典的概念似乎引起了许多不同的实现。由于这是Haskell,因此我将重点介绍不变的地图/哈希/字典。我希望能够为正在使用的小库使用类型类,并允许用户选择其Hash / Map / Dict实现。
如果没有标准的类型类,那么通过黑客提供类型类似乎是有用的,否则,作为库库/ API提供者,仍然可以从使用黑客软件包或自己的类型类中受益允许用户为地图选择给定的实现。
假设我没有错过Dicts的类型类,那么关于不可变的字典,有什么特别的东西与Haskell中的类型类不兼容吗?
更新
更普遍的问题Why is Haskell missing "obvious" Typeclasses提供了许多有用的见解,对回答这个问题有很长的路要走,但是并没有针对这种特殊情况提供实用的解决方案。
答案 0 :(得分:2)
使用类似Map
的数据结构的类型类存在一些无法解决的问题。幸运的是,背包有帮助。您可以在此处通过背包查看Map
的界面:
我已经实现了该解决方案,并撰写了有关此类界面的博客文章: