[Haskell-cafe] Paths to tree
Tomasz Zielonka
tomasz.zielonka at gmail.com
Mon Jan 29 07:07:10 EST 2007
On Mon, Jan 29, 2007 at 10:10:47PM +1100, John Ky wrote:
> I've written some code and was wondering if there was a better way to write
> it in terms of readability, brevity and/or efficiency.
This version of mergeForest2 should be more efficient. For even better
efficiency it should use Data.Sequence for efficient concatenation
(instead of ++). I also made it more general. You have to judge
readability yourself.
import qualified Data.Map as Map
data ArcData = ArcData
{ name :: String
} deriving (Show, Eq, Ord) -- derive Ord and Eq
mergeForest2 :: (Ord k) => [Tree k] -> Forest k
mergeForest2 =
map pairToNode .
Map.toList .
Map.map mergeForest2 .
Map.fromListWith (++) .
map nodeToPair
where
nodeToPair (Node x y) = (x, y)
pairToNode = uncurry Node
Best regards
Tomasz
More information about the Haskell-Cafe
mailing list