我正在尝试实施Land of Lisp's Dice of Doom game而我正在获得Don't know how to create ISeq from: clojure.lang.PersistentList$1
。
调用我的add-new-dice
函数时会发生这种情况:
(defn add-new-dice [board player spare-dice]
(letfn [(f [lst n]
(cond (empty? lst) nil
(zero? n) lst
:else (let [current-player (first (first lst))
current-dice (first (rest (first lst)))]
(if (and (= current-player player) (< current-dice *max-dice*))
(cons (list current-player (+ current-dice 1))
(f (rest lst) (- n 1)))
(cons (first lst) (f (rest list) n))))))]
(f board spare-dice)))
用这个:
(add-new-dice '[(0 1) (1 3) (0 2) (1 1)] 0 2)
我这样做主要是为了熟悉CL代码并获得将其移植到Clojure的经验。
如果有人能给我一些建议,我们将不胜感激。
答案 0 :(得分:8)
您在第二行到最后一行使用函数list
而不是您的参数lst
。 (f (rest list) n)
应为(f (rest lst) n)