>> 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

Reply via email to