Clojure 和 Eclipse 的新手,请多多包涵。
我在安装了逆时针 (CCW) 和 Leiningen 的 Eclipse Juno 下运行 Clojure 1.5.1,我正在 Eclipse 调试器下测试运行 Clojure 代码的过程。我正在使用以下文件:
(ns myproject.core)
(defn foo [str]
(println str "Hello, World!")
)
(defn hello [who]
(str "Hello " who "!"))
(println str "Hello, World!")
我在和行上设置断点,(str "Hello " who "!"))
在 Package Explorer 窗格中选择“myproject”,单击 Run-Debug As-Clojure Application,然后启动一个 REPL。现在,这是问题/问题:如果我输入(hello "Fred")
REPL 我得到
CompilerException java.lang.RuntimeException: Unable to resolve symbol: hello
in this context, compiling:(NO_SOURCE_PATH:1:1)
如果我尝试将过程调用限定为(myproject.core/hello "Fred")
. 我让它运行的唯一方法是先发出(require 'myproject.core)
然后发出(myproject.core/hello "Fred")
。一旦我这样做了,断点就会被识别,代码会在适当的地方中断,变量是可见的,并且生活是美好的。
如果我键入(use 'myproject.core)
而不是(require 'myproject.core)
我不必完全限定函数名称,但我的理解是use
不推荐使用的做法。
另一方面:如果我通过使用 Ctrl-Alt-S(在 Windows 上)将代码“发送”到 REPL 来启动 REPL,我可以简单地键入(hello "Fred")
并获得预期的输出。当然,这样做不会启动调试器,不会设置断点等。
我的问题:有没有办法在 Eclipse 调试器下运行代码,当代码通过 Ctrl-Alt-S“发送”到 REPL 时自动识别命名空间,不必使用require
or use
,也不必用命名空间完全限定函数名称?