I found a nice idiom for a graph algorithm where the pairs of nodes representing links could be merged into node lists by something like:
ns = nub $ map fst g --head nodes
ne = nub $ map snd g -- tail nodes
And found a nicer approach:
(ns,ne) = (nub***nub) unzip g
Or perhaps:
(ns.ne) = bimap nub nub $ unzip g -- from Control.Bifunctor
The SO reference I saw described bimap as a way to map a function over a pair, and it seemed like a great match, but I cannot find the bimap function, and cabal reports no package Control.Bifunctor.
??
-------------------------------------------------------
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe