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 时自动识别命名空间,不必使用requireor use,也不必用命名空间完全限定函数名称?