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

Reply via email to