代码在Clojure中包含类似'(1+2)
的内容将导致java.lang.RuntimeException
,这会留下错误消息“不匹配的分隔符:)”。这是因为Clojure受JVM限制,所以此代码无法评估?
但在任何其他口齿不清的方言我曾经使用过类似的Emacs Lisp或球拍,'(1+2)
只会返回一个列表,其中应该行为像这样因为与特殊形式报价,列表中的任何事情不应该被评估。
所以我只是想知道是否由于JVM的限制,所以这些代码不能像其他方言那样行事?或者它是Clojure的错误?或者,在Clojure和其他lisp方言中引用的定义有所不同?
实际的错误是'NumberFormatException无效的数字:1 + 2 clojure.lang.LispReader.readNumber(LispReader.java:330)'。这是因为clojure正在尝试(和失败)读取一个数字。由于试图读取表达式的其余部分,之后出现不匹配的分隔符错误。 – dsm
我看不出如何将此行为绑定到JVM。 –