On Mon, Jul 27, 2009 at 5:09 PM, Phil Hagelberg<p...@hagelb.org> wrote: [snip] > What exactly are you trying?
The following steps should show the "problem" I'm having: 1. Create a file, foo.clj, containing (ns foo) (def qux 5) (defn bar [x] (* x qux)) 2. Start Slime. 3. Back in foo.clj, C-c C-k to compile and load the file into slime. 4. In the slime-repl I can see that foo/bar is defined: ; SLIME 2009-07-06 user> foo/bar #<foo$bar__1293 foo$bar__1...@442fb9e4> 5. I can set the foo namespace from the repl by typing ",i foo": user> foo> (bar 5) 25 6. Now switch back to foo.clj and change the definition of bar in some uninteresting way, e.g., (defn bar [x] (* x x qux)) 7. Now evaluate that definition, C-c C-c 8. Fail: you get an error Unable to resolve symbol: qux in this context [Thrown class java.lang.Exception] Restarts: 0: [ABORT] Return to SLIME's top level. Backtrace: 0: clojure.lang.Compiler.resolveIn(Compiler.java:4682) 1: clojure.lang.Compiler.resolve(Compiler.java:4628) 2: clojure.lang.Compiler.analyzeSymbol(Compiler.java:4605) 3: clojure.lang.Compiler.analyze(Compiler.java:4307) 4: clojure.lang.Compiler.analyze(Compiler.java:4286) 5: clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:2771) 6: clojure.lang.Compiler.analyzeSeq(Compiler.java:4498) 7: clojure.lang.Compiler.analyze(Compiler.java:4325) 8: clojure.lang.Compiler.analyze(Compiler.java:4286) 9: clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:3862) 10: clojure.lang.Compiler$FnMethod.parse(Compiler.java:3697) 11: clojure.lang.Compiler$FnMethod.access$1100(Compiler.java:3574) 12: clojure.lang.Compiler$FnExpr.parse(Compiler.java:2963) 13: clojure.lang.Compiler.analyzeSeq(Compiler.java:4494) 14: clojure.lang.Compiler.analyze(Compiler.java:4325) 15: clojure.lang.Compiler.analyzeSeq(Compiler.java:4484) 16: clojure.lang.Compiler.analyze(Compiler.java:4325) 17: clojure.lang.Compiler.access$100(Compiler.java:35) 18: clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:369) 19: clojure.lang.Compiler.analyzeSeq(Compiler.java:4496) 20: clojure.lang.Compiler.analyze(Compiler.java:4325) 21: clojure.lang.Compiler.analyzeSeq(Compiler.java:4484) 22: clojure.lang.Compiler.analyze(Compiler.java:4325) 23: clojure.lang.Compiler.analyze(Compiler.java:4286) 24: clojure.lang.Compiler.eval(Compiler.java:4536) 25: clojure.core$eval__3990.invoke(core.clj:1728) --more-- Note that the repl was set to the namespace containing qux! Indeed, if you abort the evaluation: foo> qux 5 It seems that the environment the per-definition compilation takes place in doesn't match that of the underlying repl, or something. I don't know. I'm just confused by it. Does this make more sense now? -tree -- Tom Emerson tremer...@gmail.com http://treerex.blogspot.com/ --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---