José Romildo Malaquias wrote:
Hello.I would like to pretty print a tree in a way that its structure is easily perceived. For instance, consider the declarations: data Node a = Node a [Node a] type Tree a = [ Node a ] t = [ Node "a" [ Node "b" [] , Node "c" [ Node "c1" [] , Node "c2" [] ] , Node "d" [ Node "d1" [ Node "d1a" [] ] , Node "d2" [] ] ] ] Then the resulting of pretty printing the given tree would be something like the following: a | +-------------+ | | | b c d | | +---+ +---+ | | | | c1 c2 d1 d2 | d1a
If you're just curious about how one would write such a thing, you can look at Data.Trie.Internal.showTrie[1]--- it's horizontal rather than vertical, and it doesn't center labels above their children, but it should give you a starting idea. Data.Map and Data.IntMap also have examples (showTree, showTreeWith) which are a bit simpler.
This is a common homework assignment (because it's a great exercise!) though I haven't seen any prepackaged generic solutions. Perhaps we need more enterprising students :)
[1] http://community.haskell.org/~wren/bytestring-trie/src/Data/Trie/Internal.hs
-- Live well, ~wren _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
