代碼在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。 –