试图像这样使用clojure匹配:
(defn eval-arraklisp
"not sure yet"
[tree scope]
(match tree
[:SYM sym] (lookup sym scope)
[:NUM num] (read-string num)
[:FUN & params body] [:FUN & body]
[:CALL [:SYM sym] & args] (call-sym sym scope args)
[:CALL [:FUN & params body] & args]))我在(match tree行中得到了以下内容:
#error {
:cause No method in multimethod 'to-source' for dispatch value: :clojure.core.match/rest
:via
[{:type clojure.lang.Compiler$CompilerException不知道为什么。
发布于 2015-12-21 18:00:55
问题在以下几行:
[:FUN & params body] [:FUN & body]匹配的rest部分有两个符号,特别是params和body,但不允许有多个符号。这会导致您正在获取的错误。
也许,您应该按照以下方式重写此match子句:
[:FUN params & body] [:FUN & body]此外,正如@Andre所指出的,您应该检查此匹配的返回值,因为&符号肯定是多余的。
https://stackoverflow.com/questions/34388555
复制相似问题