Recursion 递归函数的参数编号错误

Recursion 递归函数的参数编号错误,recursion,clojure,Recursion,Clojure,我是一个函数式编程的初学者,我试着打印一个迷宫。 这是我的功能 (defn pprint-maze [arr row col] (loop [coll arr idx 0] (match [idx] [(_ :guard #(= (mod idx col) 0))] (println "") ; write a \n :else (print "-")) ; write a wall (when (nex

我是一个函数式编程的初学者,我试着打印一个迷宫。 这是我的功能

(defn pprint-maze
  [arr row col]
  (loop [coll arr idx 0]
    (match [idx]
      [(_ :guard #(= (mod idx col) 0))] (println "") ; write a \n
      :else (print "-"))                       ; write a wall
    (when (next coll)
      (recur (next coll) (inc idx)))))
我的函数获取迷宫的集合和大小,现在只需在行的末尾打印一个破折号和一个\n。 我遇到的问题是: 线程主线程clojure.lang.ArityException中出现异常:传递给以下对象的args 1数目错误:core/pprint maze/fn-4873/fn-4874

我认为指出的函数是我的循环函数,问题与match有关,因为当我注释match块时,一切都正常。我认为match尝试调用循环函数,参数为nil,返回println函数

如何解决这个问题?

传递给:guard的函数应该只接受一个参数,即被保护的值。您的函数接受零参数。

。。。因为。。。表单不包含%1或%1令牌。