When storing data in a Map
, I was recently looking for a Bitraversable
instance, since I wanted to traverse over both keys and values. To my surprise, I found out that Map
does not even have a Bifunctor
instance, even though implementations for both first
(mapKeys
) and second
(map
) exist.
Is there a specific reason for this or was this decision just made to minimize dependencies?
Thanks
The implementation for left
(did you actually mean first
? I'm going to write left
instead of first
everywhere) does not exist, because mapKeys
has a constraint:
Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a
left
must work for any pair of types k1
and k2
.