title: Level-order in Haskell
body: <p>I have a structure for a tree and I want to print the tree by levels.</p>
  
  <pre><code>data Tree a = Nd a [Tree a] deriving Show
  type Nd = String
  tree = Nd "a" [Nd "b" [Nd "c" [],
                         Nd "g" [Nd "h" [],
                                 Nd "i" [],
                                 Nd "j" [],
                                 Nd "k" []]],
                 Nd "d" [Nd "f" []],
                 Nd "e" [Nd "l" [Nd "n" [Nd "o" []]],
                         Nd "m" []]]
  preorder (Nd x ts) = x : concatMap preorder ts
  postorder (Nd x ts) = (concatMap postorder ts) ++ [x]
  </code></pre>
  
  <p>But how to do it by levels? "levels tree" should print ["a", "bde", "cgflm", "hijkn", "o"].
  I think that "iterate" would be suitable function for the purpose, but I cannot come up with a solution how to use it. Would you help me, please?</p>