The same reason that hiccup tag vector is taking optional attribute map. It's more readable.
(my-widget {:id "id1"} "hello" "world") vs. (my-widget {:attr {:id "id1"} :contents '("hello" "world")}) On Jun 4, 2:38 am, "Jim - FooBar();" <jimpil1...@gmail.com> wrote: > On 03/06/13 18:22, Alice wrote: > > > I often need to do this when writing hiccup helper functions: > > > (defn my-widget > > [& args] > > (let [attrs (if (map? (first args)) (first args) {}) > > contents (if (map? (first args)) (next args) args)] > > ... > > > I found this post, but considering that it is 4 years old, is there > > any new library developed to help with this situation?. > > >https://groups.google.com/group/clojure/browse_frm/thread/125a8af6881... > > why are you not using named arguments? Is there somethign in hiccup that > prevents you from doing so? It seems to me they would save you quite a > bit of hassle and make the code more evident... > > (defn my-widget > [& {:keys [attrs contents]}] > ... > > or if you don't know exactly what keys will come in you can relax it a > bit with (defn my-widget [& {:as opts]}] ... > > HTH, > > Jim > > ps: assuming there is no constrain I'd go for this one: > > (defn my-widget > ([attrs contents] ...) > ([contents] (my-widget {} contents)) > ([] (my-widget {} [])) -- -- 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/groups/opt_out.