
All, Is there a reason not to have monadic version of the functions in containers? I've a need for functions of type: adjustM :: (Monad m, Ord k) => (a -> m a) -> k -> Map k a -> m (Map k a) updateWithKeyM :: (Monad m, Ord k) => (k -> a -> m (Maybe a)) -> k -> Map k a -> m (Map k a) where adjustM can be ~ half the cost of separate insert/lookup calls and would obey the following rule: adjustM f k m == liftM (\x -> insert k x m) (f $ lookup k m ) They aren't large, but must be in the containers package due to opacity of Map/Set/etc. Perhaps someone can provide a reason for their omission? If not then I'll probably start yet-another proposal in a week or two (once the current containers proposals and my System.Random proposals have concluded). Tentatively I expect to make a patch that includes proper *M functions for Map, Set, IntMap, and IntSet. Cheers, Thomas