2017-08-10 39 views
3

因此,我刚开始使用clojurescript体验,并跟随clojurescript-unraveled网页书籍来了解基础知识。主要是一个平稳的过程,但我用#queue []文字碰到了一个障碍。我使用运行Clojure 1.8.0,Java 1.8.0_112-b16和Leiningen 2.7.1的lein repl在REPL中使用队列文字时的RuntimeException

当我把在下面输入:

(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实现的更广泛的主题,但我并没有在解决原始问题上取得很大进展问题。任何有关为什么这个例外是/可能发生的见解将非常感激。

谢谢。

回答

1

#queue文字只存在于ClojureScript中,所以具有Clojure的REPL无法解决它。其他(例如,#uuid)文字存在于两者中。由于常用文字工作,但#queue没有,这表明你实际上运行Clojure REPL而不是CLJS REPL。

clojurescript-unraveled提供instructions for setting a REPL与Nashorn,Node.js或浏览器。另一种选择是使用连接到浏览器的figwheel REPL。

3

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