Because the absract syntax for a graph does not map directly to a concrete syntax the way lists do. With lists you can just always use the literal equivalent for sublists, but for graphs you need to be able to express true references to otherwise-anonymous nodes. This is hard.
The W3C basically salted the earth for graph languages by promoting their awful XML syntax for RDF for so long -- it doesn't just encourage you to just write things as kookily-flavored standard XML trees -- it's also incapable of expressing true non-tree graphs!
The yampa library is an embedded domain specific language for haskell that is graph based.
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!)
9 comments
[ 3.2 ms ] story [ 30.7 ms ] threadThe W3C basically salted the earth for graph languages by promoting their awful XML syntax for RDF for so long -- it doesn't just encourage you to just write things as kookily-flavored standard XML trees -- it's also incapable of expressing true non-tree graphs!
N3 is a much better syntax, but even it doesn't quite get quite to the level of homoiconicty you desire: http://www.w3.org/DesignIssues/Notation3
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!)
http://www.haskell.org/yampa/