-lookup :: Ord k => k -> Map k a -> Maybe a
+lookup :: (Monad m,Ord k) => k -> Map k a -> m a
+lookup' :: Ord k => k -> Map k a -> Maybe a
How about providing lookup (as is or as your hidden lookup') and lookupM
as generalization instead?
Cheers Christian