为什么 eval 在 REPL 中不受约束?



我正在学习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))

这是为什么呢?

您可能正在使用ClojureScript REPLeval其中仅作为需要额外设置的自托管构建的一部分。clojure.core会自动别名化为编译器的一部分cljs.core,这就是您收到cljs.core/*eval*错误的原因。

如果你打算做实际的Clojure REPL工作,你应该使用

shadow-cljs clj-repl

这将给你一个纯粹的Clojure REPL。

最新更新