1

だから私は Haskell を学んでいて、タイプ (Tree (a,b)) のツリーを取り、'a' と 'b' が整数で、解凍された 2 つのツリーのリストを返す treeunzip 関数を実装する必要があります。は (ツリー a、ツリー b) です。

2 つのツリーのうちの 1 つを取得できますが、それらをリストにまとめることはできません。私が思いついたのはこれです:

treeunzip :: (NewTree) -> (treeunzipL, treeunzipR)

NewTree は次のように定義されます。

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 には署名がありますが実装がないため、モジュールをロードするときに明らかにエラーが発生します。これを回避する方法はありますか?

ありがとうございました。

4

1 に答える 1