(defn require-resolve [id] (let [sym (symbol id) ns-symbol (symbol (namespace sym)) var-symbol (symbol (name sym))] (require ns-symbol) (ns-resolve (find-ns ns-symbol) var-symbol)))
The name is terrible, I know. You can pass a symbol or a string in fully qualified clojure syntax and it returns a clojure.lang.Var, which the caller can "resolve" with var-get... maybe this function should call var-get itself... that's up for debate. Adobo:~ dan$ clj Clojure (defn require-resolve [id] (let [sym (symbol id) ns-symbol (symbol (namespace sym)) var-symbol (symbol (name sym))] (require ns-symbol) (ns-resolve (find-ns ns-symbol) var-symbol))) #'user/require-resolve user=> (require-resolve "clojure.contrib.def/defvar-") #'clojure.contrib.def/defvar- user=> (var-get (require-resolve "clojure.contrib.def/defvar-")) #<def$defvar___115 clojure.contrib.def$defvar___...@e40293> user=> ((require-resolve "clojure.contrib.str-utils/str-join") "," [1 2 3 4 5]) "1,2,3,4,5" Stephen, if you think this is something suitable for clojure.contrib.ns-utils then I'll submit my CA to Rich and you can pull it in, otherwise it's here for anyone to use. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---