【发布时间】:2018-01-21 21:00:33
【问题描述】:
大家好,这是我在这里的第一个问题,我对 Haskell 很陌生,我需要做一个 Haskell 函数,它接受一个树并在前序遍历中返回其节点中的元素列表,但我不能让它工作。
我的树定义如下:
data Tree a = Node a [Tree a] deriving Show
预购函数为:
preorderTree :: Tree a -> [a]
preorderTree Empty = []
preorderTree (Node a l r) = a : (preorderTree l) ++ (preorderTree r)
非常感谢您的帮助:)
【问题讨论】:
-
好吧,你写了
Node只接受两个参数,但模式匹配三个。 -
你有一个玫瑰树的数据定义,但是一个函数似乎需要一个二叉树。如果您希望
preorderTree适用于您的Tree数据类型,请查看concatMap。 -
这实际上不是您的第一个问题,因为您实际上并没有问任何问题。您也没有发布任何错误消息。鉴于遍历和数据声明不匹配,有两种可能的修复方法。哪个修复是正确的还不清楚,所以我投票关闭。随意编辑问题。