MerelyAPseudonym <[email protected]> writes:
Hi!
> When abstracting out common behavior by creating higher-order
> functions, I would like the resulting function to retain the arglist
> metadata. Has anyone already solved this problem?
Right now, if I define public functions in terms of comp or partial, I
add the metadata manually, e.g.,
(def ^{:arglists '([coll])}
filter-even
"Filters the even elements of coll."
(partial filter even?))
So your idea is to have a defpartial for automating that? Something
like
(defpartial filter-even [filter even?]
"Filters the even elements of coll.")
I think that should be doable. There might be some complexities when
the function uses varargs, say, the only arglist of foo is [a & more],
then the arglist of (defpartial foofoo [foo 1 2 3]) is still [& more],
so you cannot simply drop the first n args. And if the function is
overloaded, you have to strip the arglists that are too short. But
again, I don't see a strict reason that this cannot work.
Bye,
Tassilo
--
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