编辑:

答案是我在看函数,而不是循环参数。

在以下两个函数中的第二个函数中,我无法弄清楚为什么recur认为它只应该传递一个参数。

CompilerException java.lang.IllegalArgumentException:重复出现不匹配的参数计数,预期值:1 args,得到:2,编译:(/ home / cnorton / projects / clojure / clj_in_action / mr1 / src / mr1.clj:84)

我没有看到不正确的地方。

(defn determine-rover-move
    [rover-coord mov]

    (println rover-coord mov)
    (cond
        (= \L mov) (assoc rover-coord 0 (adj-compass-posL (first rover-coord)))
        (= \R mov) (assoc rover-coord 0 (adj-compass-posR (first rover-coord)))
        (= \M mov) (mov-rover rover-coord)

    ))


(defn execute-each-move
    [moves rover-coord]
    (loop [mov moves]
        (if (nil? mov)
            rover-coord
            (recur (rest moves) (determine-rover-move rover-coord mov)))))

===============>>#1 票数:3 已采纳

重要的部分是此处的部分:

(loop [mov moves] ...)

此代码片段将mov绑定到外部函数范围的moves 尽管recur的使用位于loop内部,所以recur根据loop定义仅期望一个参数。

  ask by octopusgrabbus translate from so

未解决问题?本站智能推荐: