Hi,

I found that resolve does not work correctly (I guess) when it is
called from other thread than main:

e.g.

let define

(def zz 123)

and afterwords call:

(.start (new Thread #(println (resolve 'zz))))

for me it does not work (it returns nil)

Workaround is to write a kind of "super-resolve" that search the all
available namespaces:

(defn super-resolve [sym-exp]
        (loop [all-namespaces (all-ns) ]
                (let [current-namespace (first all-namespaces)]
                        (let [result (ns-resolve current-namespace sym-exp)]
                                (if (and (= result nil) (> (count 
all-namespaces) 1))
                                        (recur (rest all-namespaces))
                                        result)))))

and now is OK:

(.start (new Thread #(println (super-resolve 'zz))))

The question is, however, whether the resolve shouldn't work in the
same manner as resolve?
What do you think?

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

Reply via email to