我正在尝试编写一个函数,将玫瑰树列表与它们的父节点组合在一起,这些父节点是给定玫瑰树的根节点的最高值。例如;
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])