假设我们有一个具有以下定义的类型:
data Tree a = Leaf a | Branch [Tree a] deriving (Show,Eq)
我想做的是一个返回布尔值的函数。
False
如果我的二叉树包含叶子,True
如果没有。
这是我的代码:
tester :: Tree a -> Bool
tester (Leaf x) = False
tester (Branch y) = if (Branch (map tester y)) then True else False
我知道这个的主要问题是没有办法评估(Branch (map tester y))
,但我真的不知道如何解决它。
我可以添加一个新子句,例如类似这样tester (Branch y) = True
的内容,但我认为这不是一个好主意。