为什么REPL中并不总是提供`(exit)`?

时间:2012-04-19 16:41:45

标签: clojure exit leiningen

今天我注意到一些奇怪的事情。当我不在"在"一个项目(也就是说,shell不在clojure项目目录中),我可以使用exit退出REPL:

shell$ lein repl
REPL started; server listening on localhost port 43712
user=> (+ 3 4)
7
user=> (exit)
shell$ echo '<span>not in <s>kansas</s>clojure anymore</span>'

当我&#34;&#34;在&#34;一个项目(也就是说,shell在一个clojure项目的目录中),我不能使用exit

shell$ cd my_clojure_project
shell$ lein repl
REPL started; server listening on localhost port 69237
user=> (* 8 4)
32
user=> (exit)
java.lang.Exception: Unable to resolve symbol: exit in this context (NO_SOURCE_FILE:2)
user=>

这里有什么问题?


Clojure版本(两个例子):

user=> (clojure-version)
"1.2.1"

Leiningen版本(两个例子):

shell$ lein -v
Leiningen 1.6.1 on Java 1.6.0_26 Java HotSpot(TM) 64-Bit Server VM

1 个答案:

答案 0 :(得分:5)

似乎是因为当有项目时leiningen.core命名空间不可用。更具体地说,当有项目时,项目的代码为evaluated in a separate ClassLoader,只有类路径上的项目。因此Leiningen的功能都不可用。

Leiningen 2 REPL没有这个问题。