Ok. Thank you. Not quite what I was expecting but nice to see that tool too.


On Friday, 29 April 2016 20:45:27 UTC+2, Michael Willis wrote:
>
> The convention that I've seen among the Clojure community is to represent 
> these kinds of things as data structures, and define your contraints using 
> something like https://github.com/plumatic/schema
>
> On Friday, April 29, 2016 at 1:10:29 PM UTC-5, Olek wrote:
>>
>> 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