定义dolist的起点

时间:2012-02-05 10:08:14

标签: lisp

是否可以告诉dolist在给定列表中的某个元素开始(或者甚至更好)?因为我可能不想在之前评估所有元素。

如果无法这样做,是否有其他宏可以完成这项工作?

考虑这个例子:

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

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

导致:

5
6

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

我们在谈论哪种Lisp方言?

假设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)