Определение отправной точки для Dolist - PullRequest
1 голос
/ 05 февраля 2012

Можно ли сказать dolist начинать (или даже лучше) определенный элемент в данном списке?Поскольку я, возможно, не хочу оценивать все элементы раньше.

Если нет способа сделать это, есть ли другой макрос, который мог бы выполнить эту работу?

Учитывая этот пример:

(defvar *liste* #(1 2 3 4 5 6))

(dolist (x *liste* :start-after: '4)
 (FORMAT t "~a~%" x))

в результате:

5
6

Ответы [ 2 ]

2 голосов
/ 05 февраля 2012

О каком диалекте Лисп мы говорим?

Принимая Common Lisp.

#(1 2 3 4 5 6) не является list. Это vector.

CL-USER > (let ((v #(1 2 3 4 5 6)))
            (loop for i from 4 below (length v)
                  do (print (aref v i)))) 

5 
6 
NIL

Со списком:

CL-USER 1 > (mapc #'print (nthcdr 4 '(1 2 3 4 5 6)))

5 
6 
(5 6)
2 голосов
/ 05 февраля 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...