prettyPrintChordPro :: (Show a) => Layout a -> IO ()
prettyPrintChordPro paras = mapM_ prettyPrintParagraph paras
  where
    prettyPrintParagraph p = do
      putStrLn "PARAGRAPH"
      mapM_ prettyPrintLine p
    prettyPrintLine l = do
      putStrLn "  LINE"
      mapM_ prettyPrintChunk l
    prettyPrintChunk c = do
      putStr "    CHUNK: "
      putStrLn (show c)
prettyPrintChordPro :: (Show a) => Layout a -> IO ()
prettyPrintChordPro paras = mapM_ prettyPrintParagraph paras
  where
    prettyPrintParagraph p = do
      putStrLn "PARAGRAPH"
      mapM_ prettyPrintLine p
    prettyPrintLine l = do
      putStrLn "  LINE"
      mapM_ prettyPrintChunk l
    prettyPrintChunk c = do
      putStr "    CHUNK: "
      putStrLn (show c)
prettyPrintChordPro paras = mapM_ prettyPrintParagraph paras
  where
    prettyPrintParagraph p = do
      putStrLn "PARAGRAPH"
      mapM_ prettyPrintLine p
    prettyPrintLine l = do
      putStrLn "  LINE"
      mapM_ prettyPrintChunk l
    prettyPrintChunk c = do
      putStr "    CHUNK: "
      putStrLn (show c)