【发布时间】:2013-04-27 18:40:51
【问题描述】:
给定这个使用折叠的定义,我将如何编写一个包含、平衡函数。
data Tree a = Tree a [Tree a]
treeFold :: (a -> [b] -> b) -> Tree a -> b
treeContains :: Eq a => a -> Tree a -> Bool
treeBalanced :: Tree a -> Bool
请注意,在上述定义中,不允许使用空树,而叶子是具有空子树列表的树。
contains 函数确定树是否包含给定标签。
balanced函数确定树是否平衡。
如果一棵树的子树的高度相差最多1个,则该树是平衡的,并且子树是平衡的
我目前得到的 contains 函数如下所示。
treeContains :: Eq a => a -> Tree a -> Bool
treeContains a = treeFold (\x y -> if a == x then True else ...)
那么你怎么做...指示的else部分
任何帮助将不胜感激。
【问题讨论】:
-
查看前奏中的函数
and、or和any。特别要弄清楚你应该写什么类型的术语来代替...