关于Haskell中树木的各种问题
我刚接了Haskell,有几个关于树表示法的问题 首先,我将讨论树的以下定义:关于Haskell中树木的各种问题,haskell,tree,ghci,Haskell,Tree,Ghci,我刚接了Haskell,有几个关于树表示法的问题 首先,我将讨论树的以下定义: data Tree a = Leaf a | Branch [Tree a] 1) 我知道这个定义允许无限多个子树。但树旁的“a”是什么意思?我想这意味着这棵树可以是任何数据类型,对吗 2) 如何定义树来测试Haskell中的函数?例如,如果我要将一个数组传递给一个函数,我将使用Foo[1,2,3]。上面的树定义是什么样子的 3) 我如何找到一个简单树的和(使用上面的树定义) 提前谢谢你的帮助 是的。“a”是一个类
data Tree a = Leaf a | Branch [Tree a]
1) 我知道这个定义允许无限多个子树。但树旁的“a”是什么意思?我想这意味着这棵树可以是任何数据类型,对吗
2) 如何定义树来测试Haskell中的函数?例如,如果我要将一个数组传递给一个函数,我将使用Foo[1,2,3]。上面的树定义是什么样子的
3) 我如何找到一个简单树的和(使用上面的树定义)
提前谢谢你的帮助 是的。“a”是一个类型参数,因此我们可以使用树Int或树字符串。但是,请注意,这两种类型不同
2) 您可以定义树的示例来测试函数,只需设置一个等于它的变量,如下所示
tree1 = Leaf "hello"
tree2 = Branch [Branch [tree1]]
3) 为了求和,你需要做一个函数在树的结构上递归。它应该在两种不同类型的树(叶和枝)上进行模式匹配,并从枝中提取值。注意,此函数将限制为树a,其中a是可添加的类型。1)是。“a”是一个类型参数,因此我们可以使用树Int或树字符串。但是,请注意,这两种类型不同
2) 您可以定义树的示例来测试函数,只需设置一个等于它的变量,如下所示
tree1 = Leaf "hello"
tree2 = Branch [Branch [tree1]]
3) 为了求和,你需要做一个函数在树的结构上递归。它应该在两种不同类型的树(叶和枝)上进行模式匹配,并从枝中提取值。请注意,此函数将仅限于树a,其中a是可以添加的类型。我认为
分支
示例不太正确。也许你的意思是Branch[Branch[tree1]]
或类似的?我认为Branch
示例不太正确。也许你的意思是分支[Branch[tree1]或类似的?