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 > >[email protected] > >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 _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
