【发布时间】:2018-10-04 11:11:30
【问题描述】:
我来自命令式语言的背景,所以 Haskell 和函数式编程对我来说是一个相当新的概念。
我有一个构建 P-trees 的数据类型,一棵有 p 个子节点的树。它类似于二叉树,除了叶子有值但内部节点没有。
这是我想出的数据类型(如果我错了,请纠正我)。
data PTree a = PNode (PTree a) (PTree a) | PLeaf a
deriving Show
我想编写一个函数,它接收 PTree 并返回树中元素的列表。到目前为止,这是我想出的
pList :: (Ord a) => PTree a -> [a]
pList PLeaf a = [a]
pList (PNode left right) = pList left ++ pList right
我没有得到我想要的结果。例如,如果我尝试在 ghci 中运行以下代码,
pList (PNode [PLeaf 5, PLeaf 6, PLeaf 7, PLeaf 8])
我希望得到 [5,6,7,8] 的列表。有人可以给我一个线索来解决这个问题并引导我走上正确的道路。
【问题讨论】: