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.

Reply via email to