Scott Turner wrote:

It's a valid approach. Rather than declare an Updateable class, I'd just have the update function be a parameter of ins_in_tree. Also, the key and value types can be independent parameters of BinTree.

I started to refactor my code as you suggested. I inserted update function in the middle of parameter list of ins_in_tree function. Just because this order seemed to be logical to me. ins_in_tree :: (Ord a) => BinTree a -> (a->a) -> a -> BinTree a

But soon I found that i need partial parametrization in order to rewrite
old ins_list:
ins_list lst = foldl ins_in_tree  Leaf (map wrap lst)

So i had to change parameter order in ins_in_tree:
ins_in_tree :: (Ord a) => (a->a) -> BinTree a -> a -> BinTree a

and then wrote:
ins_list lst = foldl (ins_in_tree update_stat) Leaf  (map wrap lst)
update_stat (Word_stat s i) = Word_stat s (i+1)

That worked, but what if i would need another order somethere further?
Will I have to write some kind of wrapper like
ins_in_tree' a b c = ins_in_tree b a c

Does better solution exist?



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to