【发布时间】:2011-01-14 02:51:30
【问题描述】:
基本上我已经创建了一个多态树数据类型,我需要一种计算给定树中元素数量的方法。这是我的 Tree 数据类型的声明:
data Tree a = Empty
| Leaf a
| Node (Tree a) a (Tree a)
deriving (Eq, Ord, Show)
所以我可以像这样定义一个 Ints 树:
t :: Tree Int
t = Node (Leaf 5) 7 (Node (Leaf 2) 3 (Leaf 7))
但是,我需要一个函数来计算其中一个列表中的元素数量。我已经定义了这个递归函数,但是我得到了错误“推断的类型不够通用”:
size :: Tree a -> Int
size Empty = 0
size (Leaf n) = 1
size (Node x y z) = size x + size y + size z
这里有什么我不应该做的吗?
【问题讨论】:
标签: haskell recursion functional-programming count