Maybe this is what you're looking for: user> (meta (resolve 'slurp)) {:ns #<Namespace clojure.core>, :name slurp, :file "core.clj", :line 3004, :arglists ([f]), :doc "Reads the file named by f into a string and returns it."} user> (:arglists (meta (resolve 'slurp))) ([f]) user> (first (first (:arglists (meta (resolve 'slurp))))) f user> (meta (first (first (:arglists (meta (resolve 'slurp)))))) {:tag String}
-Stuart Sierra On Apr 4, 5:43 pm, Carsten Saager <csaa...@gmail.com> wrote: > Perhaps I am too stupid, but I can't get it too work to define a > function/macro that returns me the arglists of a function I pass to > it. > > The ^#' seems to work only on the symbol in the script - how do I wrap > this? > > Concrete problem: I have some functions that users provide and they > are supposed to be executed only if I have a value for the named > arguments > > -Carsten > > On 24 Feb., 20:22, "Stephen C. Gilardi" <squee...@mac.com> wrote: > > > On Feb 24, 2009, at 11:59 AM, Stuart Halloway wrote: > > > > Is there a way to programmatically retrieve the :tag of an argument? > > > The var metadata will return the tag of a return value... > > > Yes. Here an example: > > > user=> (source slurp) > > (defn slurp > > "Reads the file named by f into a string and returns it." > > [#^String f] > > (with-open [r (new java.io.BufferedReader (new java.io.FileReader > > f))] > > (let [sb (new StringBuilder)] > > (loop [c (. r (read))] > > (if (neg? c) > > (str sb) > > (do > > (. sb (append (char c))) > > (recur (. r (read))))))))) > > nil > > user=> ^#'slurp > > {:ns #<Namespace clojure.core>, :name slurp, :file "core.clj", :line > > 2949, :arglists ([f]), :doc "Reads the file named by f into a string > > and returns it."} > > user=> (meta (first (first (:arglists ^#'slurp)))) > > {:tag String} > > user=> > > > --Steve > > > smime.p7s > > 3KAnzeigenHerunterladen --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---