(func tree) 元素的总和
Sum of (func tree) elements
我正在努力寻找上一个作业的解决方案。我必须实现一个函数 sumSucc
,它采用 IntTree
和 returns 从 succTree
.
获得的树元素的总和
succTree
基本上是 returns 给定树的后继者,定义如下:
succTree :: IntTree -> IntTree
succTree t = tmap (+1) t
我知道我可以通过执行以下操作轻松解决此问题:
sumSucc :: IntTree -> Int
sumSucc (Leaf x) = x+1
sumSucc (Branch (x, xl, xr)) = (x+1) + sumSucc xl + sumSucc xr
但是我必须在sumSucc
里面使用函数succTree
。提前致谢。
你可以再实现一个函数sumTree
,那么sumSucc
就相当于:
sumSucc :: IntTree -> Int
sumSucc x = <strong>sumTree</strong> (succTree x)
<strong>sumTree :: IntTree -> Int</strong>
sumTree (Leaf x) = …
sumTree (Branch (x, xl, xr)) = …
因此您应该在此处实现 sumTree
的 …
部分。我把它留作练习。
sumSucc
可以不用参数实现,利用(.) :: (b -> c) -> (a -> b) -> a -> c
:
sumSucc :: IntTree -> Int
sumSucc = sumTree <strong>.</strong> succTree
我正在努力寻找上一个作业的解决方案。我必须实现一个函数 sumSucc
,它采用 IntTree
和 returns 从 succTree
.
succTree
基本上是 returns 给定树的后继者,定义如下:
succTree :: IntTree -> IntTree
succTree t = tmap (+1) t
我知道我可以通过执行以下操作轻松解决此问题:
sumSucc :: IntTree -> Int
sumSucc (Leaf x) = x+1
sumSucc (Branch (x, xl, xr)) = (x+1) + sumSucc xl + sumSucc xr
但是我必须在sumSucc
里面使用函数succTree
。提前致谢。
你可以再实现一个函数sumTree
,那么sumSucc
就相当于:
sumSucc :: IntTree -> Int
sumSucc x = <strong>sumTree</strong> (succTree x)
<strong>sumTree :: IntTree -> Int</strong>
sumTree (Leaf x) = …
sumTree (Branch (x, xl, xr)) = …
因此您应该在此处实现 sumTree
的 …
部分。我把它留作练习。
sumSucc
可以不用参数实现,利用(.) :: (b -> c) -> (a -> b) -> a -> c
:
sumSucc :: IntTree -> Int
sumSucc = sumTree <strong>.</strong> succTree