首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭匹配-在multimethod 'to-source‘中没有方法

关闭匹配-在multimethod 'to-source‘中没有方法
EN

Stack Overflow用户
提问于 2015-12-21 03:31:25
回答 1查看 253关注 0票数 0

试图像这样使用clojure匹配:

代码语言:javascript
复制
(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行中得到了以下内容:

代码语言:javascript
复制
#error {
 :cause No method in multimethod 'to-source' for dispatch value:  :clojure.core.match/rest
 :via
 [{:type clojure.lang.Compiler$CompilerException

不知道为什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-21 18:00:55

问题在以下几行:

代码语言:javascript
复制
     [:FUN & params body] [:FUN & body]

匹配的rest部分有两个符号,特别是paramsbody,但不允许有多个符号。这会导致您正在获取的错误。

也许,您应该按照以下方式重写此match子句:

代码语言:javascript
复制
     [:FUN params & body] [:FUN & body]

此外,正如@Andre所指出的,您应该检查此匹配的返回值,因为&符号肯定是多余的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34388555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档