【问题标题】:Various Questions about Trees in HaskellHaskell 中关于树的各种问题
【发布时间】:2014-02-22 09:27:23
【问题描述】:

我刚开始学习 Haskell,有几个关于树符号的问题

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

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

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

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

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

提前感谢您的帮助!

【问题讨论】:

    标签: haskell tree ghci


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我不认为Branch 的例子是完全正确的。也许你的意思是Branch [Branch [tree1]] 或类似的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    相关资源
    最近更新 更多