Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Haskell中树木的各种问题_Haskell_Tree_Ghci - Fatal编程技术网

关于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”是一个类

我刚接了Haskell,有几个关于树表示法的问题

首先,我将讨论树的以下定义:

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]或类似的?