所以我正在学习 Haskell,我必须实现一个 treeunzip 函数,该函数采用类型为 (Tree (a,b)) 的树,其中“a”和“b”是整数,并返回解压缩的两棵树的列表,即是(树 a,树 b)。
我可以得到两棵树中的一棵,但我不能将它们放在一个列表中。我想出的是:
treeunzip :: (NewTree) -> (treeunzipL, treeunzipR)
新树定义为:
data NewTree = NewLeaf | NewNode Int Int NewTree NewTree deriving Show
树定义为:
data Tree = Leaf | Node Int Tree Tree deriving Show
这是treeunzipL和treeunzipR函数,我不知道是否重要。
treeunzipL :: (NewTree) -> (Tree)
treeunzipL NewLeaf = (Leaf)
treeunzipL (NewNode x y lSubTree rSubTree) = (Node x (treeunzipL (lSubTree)) (treeunzipL (rSubTree)))
treeunzipR :: (NewTree) -> (Tree)
treeunzipR NewLeaf = (Leaf)
treeunzipR (NewNode x y lSubTree rSubTree) = (Node y (treeunzipR (lSubTree)) (treeunzipR (rSubTree)))
现在加载模块时显然给我一个错误,因为 treeunzip 有签名但没有实现。有没有办法解决这个问题?
谢谢你。