是否可以告诉dolist
在给定列表中的某个元素开始(或者甚至更好)?因为我可能不想在之前评估所有元素。
如果无法这样做,是否有其他宏可以完成这项工作?
考虑这个例子:
(defvar *liste* #(1 2 3 4 5 6))
(dolist (x *liste* :start-after: '4)
(FORMAT t "~a~%" x))
导致:
5
6
答案 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)