The homoiconic thing is not all it is made up to be.  That is, you can take (say) Java and parse it to an abstract syntax tree and the manipulate the tree.<p>Assuming you have a good toolbox of operators, working with that kind of AST is not much harder than working with s expressions.  Maybe it is easier if you can build a general notation that can be generalized for multiple languages and also represent more ordinary data such as json formatted,  relational, rdf, etc.