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.