我是功能编程的初学者,我试着打印一个迷宫 这是我的功能
(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。
我遇到的问题是:
Exception in thread "main" clojure.lang.ArityException: Wrong number of args (1) passed to: core/pprint-maze/fn--4873/fn--4874
我认为指出的函数是我的循环函数,问题与匹配有关(因为当我评论匹配块时,一切正常)。我认为匹配尝试用nil作为参数调用循环函数(println函数的返回)。
如何解决?
答案 0 :(得分:7)
传递给:guard
的函数应该只接受一个参数,值被保护。你的函数没有参数。