I have occasionally been frustrated by the behavior of apropos because it returns a list of matching symbols, but with no clue as to which namespace those symbols are in. I wrote a couple of functions to help with this, apropos2 and unresolve.
https://gist.github.com/1757414 apropos2 is like apropos, except it returns a list of symbols that include a namespace qualification, if one is needed to use the symbol from the current namespace. The symbols returned can be used in that namespace in code, or as arguments to 'doc' or 'source', unlike some of the return values from 'apropos'. unresolve is like resolve in reverse: given a Var, it constructs a list of all symbols that resolve to that Var from the current namespace. Examples of use are given below. apropos2 uses unresolve to find the shortest symbol that resolves to a given Var. Do similar functions already exist in a published library? Does anyone have bug fixes or other suggested enhancements to the code? Andy Example use of apropos2: user=> (apropos "replace") (postwalk-replace prewalk-replace replace) user=> (doc postwalk-replace) nil user=> (apropos2 "replace") (clojure.walk/prewalk-replace replace clojure.walk/postwalk-replace) user=> (use 'clojure.walk) nil user=> (apropos2 "replace") (prewalk-replace replace postwalk-replace) Example use of unresolve: user=> (unresolve #'replace) (replace clojure.core/replace) user=> (use 'clojure.string) WARNING: replace already refers to: #'clojure.core/replace in namespace: user, being replaced by: #'clojure.string/replace WARNING: reverse already refers to: #'clojure.core/reverse in namespace: user, being replaced by: #'clojure.string/reverse nil user=> (unresolve #'replace) (replace clojure.string/replace) user=> (unresolve #'clojure.core/replace) (clojure.core/replace) -- 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