Clojure 为什么`(exit)`在REPL中不总是可用?

Clojure 为什么`(exit)`在REPL中不总是可用?,clojure,exit,leiningen,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</s

今天我注意到一些奇怪的事情。当我不在项目中(即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>'
这里有什么问题?


Clojure版本(对于两个示例):

Leiningen版本(两个示例):


这似乎是因为存在项目时,
leiningen.core
命名空间不可用。更具体地说,当存在一个项目时,您的项目的代码只有您的项目在类路径上。因此,Leiningen的所有功能都不可用


Leiningen 2 REPL没有这个问题。

似乎很明显,“退出”只是退出当前的“外壳”。退出概念。如果我的问题不清楚,我很抱歉,但这不是我要问的。我想知道为什么退出有时在范围内,但不是一直在范围内。我确认了你的问题,但不知道为什么会发生。我在Java1.6.0\u20OpenJDK客户端虚拟机上使用Clojure1.3.0和LeinLeiningen1.7.1
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=>
user=> (clojure-version)
"1.2.1"
shell$ lein -v
Leiningen 1.6.1 on Java 1.6.0_26 Java HotSpot(TM) 64-Bit Server VM