为什么 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 对类型 k1
和 k2
.
在 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 对类型 k1
和 k2
.