Thanks everyone - I was leaning towards maps and sounds like that's the preferred approach.
On 26 April 2014 10:59, Gary Trakhman <gary.trakh...@gmail.com> wrote: > If it's more than a few parameters, I prefer maps.. It enables the > possibility of things like merge. > > > On Fri, Apr 25, 2014 at 6:56 PM, Andrey Antukh <n...@niwi.be> wrote: > >> Hi! >> >> I have the same doubt! >> >> However, At this time, I prefer use a explicit map instead keywords, >> because for me is much clear that using keywords. >> >> Andrey. >> >> >> 2014-04-26 0:41 GMT+02:00 Colin Fleming <colin.mailingl...@gmail.com>: >> >> Hi all, >>> >>> I'm working on an API at the moment, and I'm balancing whether to use >>> inline keyword args which I would destructure in the functions, or whether >>> to just pass an explicit params map as the last parameter. Comparison of >>> the two options in case I'm not explaining myself well: >>> >>> Kwargs: >>> (class/create-class :instance list >>> :description "My description" >>> :implements (keys class-methods) >>> :methods (calculate-my-methods)) >>> >>> Map: >>> (class/create-class {:instance list >>> :description "My description" >>> :implements (keys class-methods) >>> :methods (calculate-my-methods)}) >>> >>> A lot of APIs I've seen have favoured kwargs, and it undeniably makes >>> for some pretty code - Seesaw is the best example I've seen here, the API >>> is a thing of beauty. However it seems to me to have some issues: >>> >>> 1. If I want to delegate to another call from within an API function >>> and use the same arguments, it's really awkward: (apply delegate >>> (mapcat identity args)) or some similarly awful black juxt magic. Or >>> of course writing out all the parameters again, but that's even worse. >>> 2. It's more difficult to make parameters optional based on some >>> runtime criteria since the params are baked into the function call. I >>> guess >>> this is usually dealt with by making the calls handle nil for a >>> particular >>> parameter. >>> >>> Both of these are much easier when passing an explicit map. Any >>> preferences here, from either writing or using APIs like this? >>> >>> Cheers, >>> >>> Colin >>> >>> -- >>> 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. >>> >> >> >> >> -- >> Andrey Antukh - Андрей Антух - <andrei.anto...@kaleidos.net> / < >> n...@niwi.be> >> http://www.niwi.be <http://www.niwi.be/page/about/> >> https://github.com/niwibe >> >> -- >> 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. >> > > -- > 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. > -- 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.