9 comments

[ 3.2 ms ] story [ 30.7 ms ] thread
Why hasn't anyone made an homoiconic graph-based language? It seems like a natural extension of an homoiconic list-based language (i.e. Lisp).
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!

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

I agree that it's difficult to represent graphs textually. So why not do it graphically?
Beyond text, there be dragons.
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!)

http://www.haskell.org/yampa/

What are the advantages to a graph based language? Better parallelisation? Opportunity to apply genetic algorithms?