Tony Arcieri wrote: > Homoiconicity doesn't afford power so much as simplicity. Using parse > transformations in Ruby requires learning what the Ruby parser's "sexps" > look like, whereas in Lisp you write your code directly in those sexps so > there is no disconnect. Actually, you can have complex syntax *and* easy manipulation, by delegating the building of the AST to the tool that already knows how to do that anyway: the compiler. The Converge Programming Language (<http://ConvergePL.Org/>) is a great example of compile time metaprogramming in a language with complex syntax (Pythonic in this case). It uses quasi-quoting to let you build ASTs using the *concrete* syntax of the language and it uses splice points to allow you to splice AST fragments back into the AST. For things that are too complex for simple quoting and splicing, Converge has an abstract standardized API to the compiler. jwm PS: Consider this my entry to "what Reia could steal from other languages" (-: