(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
-~----------~----~----~----~------~----~------~--~---

Reply via email to