【问题标题】:Why is Data.Map.Map not a Bifunctor?为什么 Data.Map.Map 不是双函子?
【发布时间】:2021-04-04 20:24:41
【问题描述】:

Map 中存储数据时,我最近在寻找Bitraversable 实例,因为我想遍历键和值。令我惊讶的是,我发现Map 甚至没有Bifunctor 实例,尽管first (mapKeys) 和second (map) 的实现都存在。

是否有特定的原因,或者这个决定是否只是为了最小化依赖关系?

谢谢

【问题讨论】:

  • 对于很多类型类,我们有mono-traversable 来处理单态情况,但有趣的是,我找不到MonoBifunctor,虽然名字有点矛盾,但似乎就像它是一个有用的类型类一样。

标签: dictionary haskell containers bifunctor


【解决方案1】:

left 的实现(你真的是指 first 吗?我要到处写 left 而不是 first)不存在,因为 mapKeys 有一个约束:

Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a

left 必须适用于 任何 类型 k1k2

【讨论】:

    猜你喜欢
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多