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.

Reply via email to