Haskell 定义为 "data BB a = L | K (BB a) a (BB a) deriving (Show)" 的树的预序树遍历
Haskell preorder tree traversal for tree defined as "data BB a = L | K (BB a) a (BB a) deriving (Show)"
这里是 Haskell 的新手。试图弄清楚如何在给定各种树定义的情况下进行前序遍历。我看到一棵树的预购定义为
data BB a = L | K a (BB a) (BB a) deriving Show
prefixCollect L = []
prefixCollect(K w l r) = w : prefixCollect l ++ prefixCollect r
但是,如果树的定义不同,我不确定如何执行相同的操作:
data BB a = L | K (BB a) a (BB a) deriving Show
?
有人可以帮忙吗?
您定义函数的方式几乎没有区别;类型定义的差异只会改变你pattern-match反对论点的方式。
prefixCollect L = []
-- K l w r instead of K w l r
prefixCollect (K l w r) = w : prefixCollect l ++ prefixCollect r
两种定义都以完全相同的方式定义树:作为由一个值和两个子树组成的节点。数据构造器 K
列出这三个值的顺序并不重要。
这里是 Haskell 的新手。试图弄清楚如何在给定各种树定义的情况下进行前序遍历。我看到一棵树的预购定义为
data BB a = L | K a (BB a) (BB a) deriving Show
prefixCollect L = []
prefixCollect(K w l r) = w : prefixCollect l ++ prefixCollect r
但是,如果树的定义不同,我不确定如何执行相同的操作:
data BB a = L | K (BB a) a (BB a) deriving Show
?
有人可以帮忙吗?
您定义函数的方式几乎没有区别;类型定义的差异只会改变你pattern-match反对论点的方式。
prefixCollect L = []
-- K l w r instead of K w l r
prefixCollect (K l w r) = w : prefixCollect l ++ prefixCollect r
两种定义都以完全相同的方式定义树:作为由一个值和两个子树组成的节点。数据构造器 K
列出这三个值的顺序并不重要。