preOrder :: (a -> b) -> Tree a -> [b] preOrder f (Node v subtrees) = let subtreesTraversed = concat $ map (preOrder f) subtrees in f v : subtreesTraversed
не понимаю совершенно последнюю строку, к v клятся остальные значения (subtreesTraversed) и только ПОТОМ они в f или как?