
On Sat, 6 Dec 2014, Joachim Breitner wrote:
Am 6. Dezember 2014 10:25:03 MEZ, schrieb Andreas Abel
: On 05.12.2014 22:43, Joachim Breitner wrote:
did anyone else ever wanted to have a function
Data.Map.unzip :: Map k (a, b) -> (Map k a , Map k b)
Yes, I wanted it, and was annoyed by its absence, and the fact that I had to fall back to the
solution (for efficiency reasons). although I wonder how big the difference would be. At least both versions will re-use the tree-structure. It probably depends on how its used...
Consider the following example let (bigs,smalls) = unzip mix in do f bigs g smalls 'bigs' contains a great amount of data, and thus you prefer that it can be garbage collected as 'f' consumes it. If 'unzip' is actually (fmap fst mix, fmap snd mix) then 'mix' (and thus all big data) will be kept in memory until 'g' starts processing.