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