Home > Software design >  Sum of (func tree) elements
Sum of (func tree) elements

Time:10-26

I'm struggling in finding a solution to my last assignment. I have to implement a function sumSucc that takes an IntTree and returns the sum of the elements of the tree obtained from succTree.

succTree basically returns the successor of a given tree and is defined as follows:

succTree :: IntTree -> IntTree
succTree t = tmap ( 1) t

I know I could easily solve this by doing the following:

sumSucc :: IntTree -> Int
sumSucc (Leaf x) = x 1
sumSucc (Branch (x, xl, xr)) = (x 1)   sumSucc xl   sumSucc xr

But I have to use the function succTree inside of sumSucc. Thanks in advance.

CodePudding user response:

You can implement another function sumTree, and then sumSucc is equivalent to:

sumSucc :: IntTree -> Int
sumSucc x = sumTree (succTree x)

sumTree :: IntTree -> Int
sumTree (Leaf x) = …
sumTree (Branch (x, xl, xr)) = …

here you thus should implement the parts of sumTree. I leave this as an exercise.

The sumSucc can be implemented without a parameter, and make use of (.) :: (b -> c) -> (a -> b) -> a -> c:

sumSucc :: IntTree -> Int
sumSucc = sumTree . succTree
  • Related