(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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---