I agree that it's difficult to represent graphs textually. So why not do it graphically?
With regular haskell syntax it is indeed quite tricky (and ugly) to describe the graphs, but there is a popular haskell extension (arrow syntax) that makes things very elegant. You give names to the nodes of the graph and then you describe the connections between the nodes
yampa is used for making interactive simulations (games) or graphical user interfaces. It takes a purely functional approach to these problem domains (no monads!)