11 Mar 02:24 2014

## [containers] Proposal: Add traverseKeys, traverseKeysWith, traverseKeysMonotonic to Data.Map

Niklas Haas <haskell <at> nand.wakku.to>

2014-03-11 01:24:21 GMT

2014-03-11 01:24:21 GMT

Hello all, While programming a specific type of map update I came across a great need for a 'traverseKeys' function. I ended up making it myself but it was still less efficient than it needed to be because my traversal function was actually monotonic. I went ahead and added this along with some variants to Data.Map. > traverseKeys :: (Applicative f, Ord k2) => (k1 -> f k2) -> Map k1 a -> f (Map k2 a) > traverseKeysWith :: (Applicative f, Ord k2) => (a -> a -> a) -> (k1 -> f k2) -> Map k1 a -> f (Map k2 a) > traverseKeysMonotonic :: (Applicative f, Ord k2) => (k1 -> f k2) -> Map k1 a -> f (Map k2 a) A full patch can be found here: https://github.com/nandykins/containers/commit/a8b0ebd57653bc0a309af69d732356e3572c455c Let me know what you think, Discussion period: 2 weeks