Goodday,
对于学校作业,我必须写一个非常简单的程序;我需要将树从一种类型转换为另一种类型。但是我很难过,因为我无法参加讲座,因此不知道我的代码有什么问题。赋值是将树从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树)时没有任何反应,它只是永远运行(showTree是一个在老师给出的某个库中为RoseTree定义的打印函数)。
答案 0 :(得分:1)
错误不在代码中;错误在于我没有完全认识到showTree函数的作用,它没有打印到控制台(正如我所料)。
答案 1 :(得分:0)
我在deriving Show
类型签名中添加了RoseTree
,这对我有用。
*Main> pp1a tree
RoseNode "1" [RoseNode "2" [],RoseNode "3" [RoseNode "4" [],RoseNode "5" []]]
虽然我确实将Number
更改为Int
,但我看不出这有什么不同!