[Haskell-cafe] Data.Map: Values to keys and keys to values
Brent Yorgey
byorgey at seas.upenn.edu
Thu Jun 16 19:25:37 CEST 2011
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 at 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
More information about the Haskell-Cafe
mailing list