Hi all
I'm trying to build a vector data structure that can be printed using
the core prn function.
Here's my test case
(defn ea-xmi [dname & packages]
[:xmi {:version "2.1"
:nsuml "http://schema.omg.org/spec/UML/2.1"
:nsxmi "http://schema.omg.org/spec/XMI/2.1"
:customprofile "http://www.sparxsystems.com/profiles/
thecustomprofile/1.0"}
(map #(eval %) packages)])
(defn ea-document [dname & packages]
[:Documentation {:exporter "Enterprise Architect" :exporterVersion
"6.5"}]
[:Model {:type "uml:Model" :name (str/join [dname
"_Model"]) :visibility "public"}])
And this is how I want to call it:- (this I dont want to change - it's
the dsl)
(def output
(ea-xmi "Oil"
(ea-document "Fundamental")))
What I get as the output is:-
[:xmi {:version 2.1, :nsuml http://schema.omg.org/spec/UML/2.1, :nsxmi
http://sc
hema.omg.org/spec/XMI/2.1, :customprofile http://www.sparxsystems.com/profiles/t
hecustomprofile/1.0} ([:Model {:type uml:Model, :name
Fundamental_Model, :visibi
lity public}])]
Whereas I would want:-
[:xmi {:version 2.1, :nsuml http://schema.omg.org/spec/UML/2.1, :nsxmi
http://schema.omg.org/spec/XMI/2.1, :customprofile
http://www.sparxsystems.com/profiles/thecustomprofile/1.0} [:Model
{:type uml:Model, :name Fundamental_Model, :visibility public}]]
The difference is minimal, just the additional () around the second
vector. Why is this and how do I remove it (at construction time). I'm
guessing it's how I call eval within map, but I've tried identity and
apply and still can't get it right. Any ideas?
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en