【发布时间】:2014-09-18 09:01:18
【问题描述】:
晚安,
对于学校作业,我必须编写一个非常简单的程序;我需要将树从一种类型转换为另一种类型。但我很难过,因为我无法参加讲座,因此不知道我的代码有什么问题。任务是将 Tree1a 类型的树转换为 RoseTree:
data RoseTree = RoseNode String [RoseTree]
data Tree1a = Leaf1a Number | Node1a Number Tree1a Tree1a
tree = Node1a 1 (Leaf1a 2)
(Node1a 3 (Leaf1a 4)
(Leaf1a 5))
pp1a :: Tree1a -> RoseTree
pp1a (Leaf1a n) = RoseNode (show n) []
pp1a (Node1a n left right) = RoseNode (show n) [pp1a left, pp1a right]
(数字是在老师给出的库中定义的,但这不是这里的问题。)但这不起作用;当我运行 showTree (pp1a tree) 时没有任何反应,它只是永远运行(showTree 是在老师给出的某个库中为 RoseTree 定义的打印函数)。
【问题讨论】:
-
您的错误一定在其他地方。给出的测试树不应导致无限递归(任何其他有限树也不应)。
标签: haskell tree type-conversion