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
Description: S/MIME cryptographic signature
