-1

バラの木のリストを、指定されたバラの木のルート ノードの最高値である親ノードと組み合わせる関数を作成しようとしています。例えば;

RosesToRose [Rose 1 [Rose 1 [], Rose 2 []], Rose 3 [], Rose 4 [Rose 10 []]]

戻るべきRose 4 [Rose 1 [Rose 1 [], Rose 2 []], Rose 3 [], Rose 4 [Rose 10 []]]

「関数 rosesToRose の非網羅的なパターン」というエラーが表示されますが、何が原因なのかわかりません。入力として空のリストと照合しようとしましたが、同じエラーが発生しました。任意の提案をいただければ幸いです。

私のコード:

data Rose a = Rose a [Rose a]
    deriving Show

rosesToRose:: (Ord a, Num a )=> [Rose a] -> Rose a
rosesToRose [(Rose node tree)] = Rose (maxRoseNode [(Rose node tree)]) [(Rose node tree)]

maxRoseNode:: (Ord a,Num a) =>[Rose a] -> a
maxRoseNode trs = case trs of
    [] -> 0
    (Rose node tree):xs -> maximum  ([maxRoseNode xs] ++ [node])
4

1 に答える 1