spot135 aca08sas at shef.ac.uk
Sun Nov 8 17:24:59 EST 2009

```
Hi,

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 :: Eq a=>a->a->Tree a -> (Tree a)

replace x y Empty = Element x

replace x y (Leaf z)
| x==z = (Leaf y)
--	| otherwise =

replace x y (Branch z lis)
| x==z = (Branch y lis)
|otherwise = replaceA x y clis

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.