Получение не знаю, как создать ISeq из: clojure.lang.PersistentList $ 1 - PullRequest
3 голосов
/ 05 января 2012

Я пытаюсь реализовать Land of Lisp's Dice of Doom игру , и я получаю 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.

Если кто-нибудь может дать мне какой-нибудь совет, это будет оценено.

1 Ответ

8 голосов
/ 05 января 2012

Вы используете функцию list вместо аргумента lst со второй до последней строки. (f (rest list) n) должно быть (f (rest lst) n)

...