>> fromDistinctAscList :: [(k,a)] -> Map k a >> fromDistinctAscList xs >> = build const (length xs) xs >> where >> -- 1) use continutations so that we use heap space instead of stack >> space. >> -- 2) special case for n==5 to build bushier trees. >> build c 0 xs' = c Tip xs' >> build c 5 xs' = case xs' of >> ((k1,x1):(k2,x2):(k3,x3):(k4,x4):(k5,x5):xx) >> -> c (bin k4 x4 (bin k2 x2 (singleton k1 >> x1) (singleton k3 x3)) (singleton k5 x5)) xx
By the way, did anyone test if (or when) this n==5 case "bushier trees" gains something? Thanks Christian _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe