在 REPL 中使用队列文字时出现 RuntimeException

RuntimeException when using queue literal in REPL

所以我才刚刚开始我的 clojurescript 体验,并跟随 clojurescript-unraveled 网络书了解基础知识。大部分过程都很顺利,但我在使用 #queue [] 文字时遇到了麻烦。我正在使用 lein repl 运行 Clojure 1.8.0、Java 1.8.0_112-b16 和 Leiningen 2.7.1。

当我输入以下内容时:

(def pq #queue [1 2 3])

我得到这个堆栈跟踪:

RuntimeException No reader function for tag queue  
clojure.lang.LispReader$CtorReader.readTagged (LispReader.java:1245)
RuntimeException Unmatched delimiter: )  
clojure.lang.Util.runtimeException (Util.java:221)

我也尝试了 #js 标签文字,但得到了相同的 No reader function for tag ... 异常。但是,UUID 和时间文字实例按预期工作,没有运行时错误。

我正在深入研究这个问题,现在正处于探索 edn 规范和 cljs.reader 实施的更广泛主题的领域,但我并没有做很多解决原始问题的进展。任何关于为什么会发生此异常 is/might 的见解将不胜感激。

谢谢。

#queue [] 语法存在于 clojurescript 中,但不存在于 JVM clojure 中。可以参考clojure.lang.PersistentQueue/EMPTY,这是一个空队列。

#queue 文字仅存在于 ClojureScript 中,因此具有 Clojure 本身的 REPL 无法解析它。其他(例如,#uuid)文字存在于两者中。由于通用文字有效,但 #queue 无效,这表明您实际上是 运行 Clojure REPL 而不是 CLJS REPL。

clojurescript-unraveled 提供 instructions for setting a REPL with Nashorn, Node.js, or Browser. Another option is to use a figwheel REPL,它连接到浏览器。