我只是选择了Haskell并且有一些关于树符号的问题
首先,我正在处理树的以下定义:
data Tree a = Leaf a | Branch [Tree a]
1)据我所知,这个定义允许无限数量的子句。但树旁边的“a”是什么意思呢?我认为这意味着这棵树可以是任何数据类型,对吗?
2)如何定义树来测试Haskell中的函数?例如,如果我将数组传递给函数,我会有Foo [1,2,3]。上面的树定义会是什么样的?
3)我如何找到一棵简单树的总和(上面有树的定义)?
提前感谢您的帮助!
答案 0 :(得分:5)
1)是的。 “a”是一个类型参数,因此我们可以有一个Tree Int或Tree String。但请注意,这两个类型不同。
2)你可以通过设置一个等于它的变量来定义Tree的例子来测试一个函数,就像这样
tree1 = Leaf "hello"
tree2 = Branch [Branch [tree1]]
3)为了找到总和,你创建一个函数来递归树的结构。它应该在两种不同类型的树(叶子和分支)上进行模式匹配,并从分支中提取值。注意,此函数将仅限于树a,其中a是可以添加的类型。