为什么 eval 没有绑定在 REPL 中?

Why is eval not bound in 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 REPL,其中 eval 仅作为需要 additional setup 的自托管构建的一部分。 clojure.core 作为编译器的一部分自动别名为 cljs.core,这就是为什么您会收到 cljs.core/*eval* 错误。

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

shadow-cljs clj-repl

这将为您提供纯 Clojure REPL。