On Thu, Dec 29, 2011 at 11:27 AM, vitalyper <[email protected]> wrote:
> My question is why do we have BOTH :arglists metadata and usual fn
> args destructuring?
As Meikel surmised, it's to improve the docstring (shown by the doc
function). We (the CongoMongo team) have not been terribly consistent
about it tho' :(
In the command function you highlighted, we show defaults for keyword
arguments (and the implication is that it takes two arguments: cmd and
a map - which is not the case). In the mongo! function, we show
keyword argument defaults more in line with usage:
{:arglists '([:db ? :host "localhost" :port 27017])}
[& {:keys [db host port]
:or {db nil host "localhost" port 27017}}]
In other functions, we just show the possible keyword arguments
without defaults:
;; create-collection!
{:arglists
'([collection :capped :size :max])}
([collection & {:keys [capped size max] :as options}]
;; fetch
{:arglists
'([collection :where :only :limit :skip :as :from :one? :count?
:sort :options])}
[coll & {:keys [where only as from one? count? limit skip sort options]
:or {where {} only [] as :clojure from :clojure
one? false count? false limit 0 skip 0 sort nil options []}}]
Hopefully you can see the intent...
--
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/
"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)
--
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