为什么 Data.Map.Map 不是双函子?

Why is Data.Map.Map not a Bifunctor?

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

这是否有特定原因,或者这个决定只是为了最大限度地减少依赖性?

谢谢

left 的实现(您实际上是指 first 吗?我将在所有地方写 left 而不是 first),因为 mapKeys 有一个约束:

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

left 必须适用于 any 对类型 k1k2.