[Haskell-cafe] bit of help with n-ary please...
daniel.is.fischer at web.de
Sun Nov 8 19:12:40 EST 2009
Am Sonntag 08 November 2009 23:24:59 schrieb spot135:
> Ok what im trying to do is replace an element in an n-ary and display the
> completed tree.
> So this is what ive got so far.
> data Tree a = Empty |Leaf a|Branch a [Tree a]
> deriving (Show)
replace x y tree
should give a tree with the same structure, values equal to x should be replaced by y, all
other values left as they are?
> replace :: Eq a=>a->a->Tree a -> (Tree a)
> replace x y Empty = Element x
That should surely be
replace _ _ Empty = Empty ?
> replace x y (Leaf z)
> | x==z = (Leaf y)
> -- | otherwise =
| otherwise = Leaf z
> replace x y (Branch z lis)
> | x==z = (Branch y lis)
> |otherwise = replaceA x y clis
You'd want to recur, I believe, use
map (replace x y)
> replaceA :: Eq a=> a->a->[Tree a]->(Tree a)
> replaceA _ _  = Empty -- run out
> replaceA x y (h:r)
> |Q suc = suc
> |otherwise = replaceA x y r
> where suc=replace x y h
> Q :: a -> Bool
> Q a = True
> Q a = False
> Theres two main problems i am having. One is I'm not sure what should be
> the "otherwise" in the leaf function. Another problem is it doesn't show
> the whole tree just the part after the replacement.
> If you think this is complete bull I'll quite happily start over if
> somebody could give me some insight
> into what is the best way of tackling this problem is.
> Many thanks in advance
More information about the Haskell-Cafe