
On Thu, Jun 16, 2011 at 04:17:55PM +0200, Francesco Mazzoli wrote:
On 16/06/11 15:01, Dmitri O.Kondratiev wrote:
Hi, Data.Map has many great functions, yet I could not find the one that allows from one map create another map where keys are values and values are keys of the first one. Something like: transMap:: (Ord k, Ord a) => Map k a -> Map a k
Does such function exist? Thanks!
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
What about something like
transMap :: (Ord k, Ord a) => Map k a -> Map a k transMap = M.fromList . map swap . M.toList
?
Or, if you want to keep duplicates, import qualified Data.Set as S import Control.Arrow (second) transMap = M.fromListWith S.union . map (second S.singleton . swap) . M.toList -Brent