
Hi Matthias,
On Sun, 15 May 2011 10:15:42 +0200
Matthias Guedemann
Hi Manfred,
I may be wrong but having to use Map.toList looks pretty inefficient.
Question: I'd like to know if there is a more efficient way to do it?
I do not know if it is really more efficient (it has to consider each entry, just like converting to list does), but Data.Map is an instance of Data.Traversable, which has the traverse function, see:
http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.3.1.0/Data-Trav...
e.g.
Prelude> :m Data.Map Data.Traversable Prelude Data.Map Data.Traversable> let mymap = insert 1 "bubu" $ insert 2 "baba" $ empty Prelude Data.Map Data.Traversable> traverse print mymap "bubu" "baba" fromList [(1,()),(2,())] Prelude Data.Map Data.Traversable>
Thanks for pointing me to Traversable. Now I used Traversable.mapM which worked fine and seems to be the "traversable" counterpart of mapM_ from Control.Monad. It didn't make much of a difference in runtime doing it without toList. I'm not quite sure if it is really more efficient or not. Perhaps I would have to create dictonary with some millions entries in order to see a noticable difference? -- Manfred