首页 > 解决方案 > 为什么 Data.Map.Map 不是双函子?

问题描述

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

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

谢谢

标签: dictionaryhaskellcontainersbifunctor

解决方案


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

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

left必须适用于任何一对类型k1k2.


推荐阅读