【发布时间】:2018-06-29 17:34:32
【问题描述】:
我有一个自定义数据类型:
data Tree a = Node a [Tree a]
示例树:
tree1 = Node 3 [Node 4 [Node 3 [], Node 2 []], Node 5 []]
我正在努力创建一个函数来计算树的节点数。
我有一个函数:
numNodes :: Num p => Tree a -> p
numNodes(Node a []) = 0
numNodes(Node a b) = 1 + numNodes b
但这并没有真正奏效,我哪里错了?
编辑: 编译器输出:
• Couldn't match type ‘Tree a’ with ‘[Tree a]’
Expected type: [Tree a] -> p
Actual type: Tree a -> p
• Relevant bindings include
numNodes :: [Tree a] -> p (bound at tree.hs:28:1)
28 | numNodes(Node a []) = 0
【问题讨论】:
-
numNodes应该获取节点列表还是单个节点?编译器错误信息是什么意思? -
嗨,numNodes 应该采用像“tree1”这样的树
-
@Bergi 我在问题中添加了 de 编译器输出
-
b不是一棵树。 -
您的实际代码包含类型签名,不是吗?一定要把它也包括在这里。
标签: haskell count functional-programming tree nodes