关于Haskell树木的各种问题

时间:2014-02-22 00:34:32

标签: haskell tree ghci

我只是选择了Haskell并且有一些关于树符号的问题

首先,我正在处理树的以下定义:

data Tree a = Leaf a | Branch [Tree a]

1)据我所知,这个定义允许无限数量的子句。但树旁边的“a”是什么意思呢?我认为这意味着这棵树可以是任何数据类型,对吗?

2)如何定义树来测试Haskell中的函数?例如,如果我将数组传递给函数,我会有Foo [1,2,3]。上面的树定义会是什么样的?

3)我如何找到一棵简单树的总和(上面有树的定义)?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

1)是的。 “a”是一个类型参数,因此我们可以有一个Tree Int或Tree String。但请注意,这两个类型不同。

2)你可以通过设置一个等于它的变量来定义Tree的例子来测试一个函数,就像这样

tree1 = Leaf "hello"
tree2 = Branch [Branch [tree1]]

3)为了找到总和,你创建一个函数来递归树的结构。它应该在两种不同类型的树(叶子和分支)上进行模式匹配,并从分支中提取值。注意,此函数将仅限于树a,其中a是可以添加的类型。