为什么eval在REPL中不受限制?

时间:2019-08-08 05:19:16

标签: clojurescript

我正在学习clojure,正在尝试使用shadow-cljs在clojure REPL中进行实验。我以为eval是clojure.core的一部分,但是使用它

(eval (list + 1 2))

产生Error: cljs.core/*eval* not bound

我也尝试过,但是出现了相同的错误

(require `clojure.core)
(clojure.core/eval (list + 1 2))

这是为什么?

1 个答案:

答案 0 :(得分:2)

您可能使用ClojureScript REPL,其中eval仅作为需要additional setup的自托管构建的一部分。 clojure.core在编译器中会自动别名为cljs.core,这就是为什么会出现cljs.core/*eval*错误的原因。

如果您打算进行Clojure REPL的实际工作,则应该使用

shadow-cljs clj-repl

这将为您提供纯粹的Clojure REPL。