Hi! Clojure data structures can express tree data structures, same as in XML what is ideal for DSL. Especially that thanks to macros you can also change the evaluation order and hide execution complexity and treat DSL in terms of declarations and not statements nor functions. What is more the grammar of such structure is simplified to what you can see in XML. For example let take the XML example:
<books> <book iban="31232" title="some title" author="some author"/> <book iban="43232" title="another title 2" author="another author 2"/> </books> Now lets look at Clojure: (books (book { :iban "31232" :title "some title" :author "some author" }) (book { :ban "43232" :title "another title2" :author "another author 2" }) ) You can notice that when you build macros & functions for that you have simple structure of input arguments like: (defmacro/defn books[ attrs & books-col ] (do some stuff)) (defn book[ attrs ] (do some stuff)) Now all you need is to slurp the specification made in terms of created DSL, call eval on it and as the result of execution you will spit the resulting data/mutate the state/do side effect. Finally for XML you can create XSD to constraint possibilities of tags which can be put into DSL. But as you can see, such possibility is missing for Clojure. Do you have any ready tool for that or do I have to create one? Thanks in advance, Olek -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.