I attempted (incorrectly) to implement foldTree here.Recently, I updated it per Petr's help:treeFold :: (b -> [b] -> b) -> (a -> b) -> Tree a -> btreeFold f g tree = f (g (rootLabel tree)) (map (treeFold f g) (subForest tree))I implemented toList:toList :: Tree a -> [a]toList = treeFold (\x y -> x ++ (foldr (++) [] y)) (\x -> [x])Testghci> stringTreeNode {rootLabel = foo,       subForest =                 [Node {rootLabel = bar, subForest = []},                 Node {rootLabel = bippy, subForest = []},                 Node {rootLForest = []}]}ghci> toList stringTree[foo,bar,bippy,baz]I'm not sure if it's idiomatic to include the foldr call. Nor am I sure if I like the usage of ++. Please review this code.
Implementing `concat` using `foldTree` on Rose Tree
haskell