I've hit another mystery (to me), that I hope someone can explain.
Why doesn't the following work?
(defn tst[] (pr 4))
(defn trd[]
(let [f #(eval '(tst))]
(. (Thread. f) start) ))
It seems that a separate thread can not EVAL any defined functions. If
I change the above to remove the thread, the function works fine, or
if I keep the thread but remove the eval (define the function to
invoke TST directly), it will work. In particular I hit this problem
trying to get a remote socket REPL loop going, similar to the wiki
example. I have it working for simple stuff like (+ 2 3), but
attempting anymore more complicated than a clojure built-in instantly
fails (unable to resolve symbol). And this failure appears to be
related directly to threading. (Remove the thread and I CAN make
remote function calls).
I have a feeling I'm missing something regarding threads / variables /
root bindings, etc. Any ideas?
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---