Lisp 为dolist定义一个起点

Lisp 为dolist定义一个起点,lisp,Lisp,有没有可能告诉dolist从给定列表中的某个元素开始,或者在该元素之后更好?因为我之前可能不想评估所有元素 如果没有办法,是否有其他宏可以执行此任务 考虑到这个例子: (defvar *liste* #(1 2 3 4 5 6)) (dolist (x *liste* :start-after: '4) (FORMAT t "~a~%" x)) 导致: 5 6 NTHCDR有什么问题 NTHCDR有什么问题 我们说的是哪种Lisp方言 假设公共Lisp 123456不是一个列表。它是一个

有没有可能告诉dolist从给定列表中的某个元素开始,或者在该元素之后更好?因为我之前可能不想评估所有元素

如果没有办法,是否有其他宏可以执行此任务

考虑到这个例子:

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

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

5
6
NTHCDR有什么问题

NTHCDR有什么问题


我们说的是哪种Lisp方言

假设公共Lisp

123456不是一个列表。它是一个向量

列出:

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

5 
6 
(5 6)

我们说的是哪种Lisp方言

假设公共Lisp

123456不是一个列表。它是一个向量

列出:

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

5 
6 
(5 6)

它确实起作用了,但我正在编写一个递归函数来生成一个二项式系数,形成列表中所有元素的组合,因此能够将doliste与a:start after结合使用,这将大大简化我的工作。对,但是你可以在从NTHCDR获得的列表的末尾开始。你可以代替*liste*:在同一个位置上的4 do NTHCDR 4*liste*之后开始,这实际上更短,而且在其他方面是相同的,因为dolist无论如何都要在列表中找到一个起点。它确实可以完成它的工作,但我正在编写一个递归函数来生成一个二项式系数,形成列表元素的所有组合,因此能够将dolist与:start after结合使用将大大简化我的工作。对,但是你可以从你从NTHCDR获得的列表的末尾开始。你可以代替*liste*:在同一个点上的4之后开始,这实际上是更短的,而且在其他方面是相同的,因为dolist必须在列表的末尾找到一个起点。你可能想要接受一个答案,鉴于这里有两个答案可以解决您的问题。在给出解决方案之前,您想尝试这两个答案。但事实上,双方都会达成协议,第二个更容易修改。考虑到这里有两个答案可以解决您的问题,您可能想要接受一个答案。在给出解决方案之前,您想尝试这两个答案。但事实上,双方都会达成协议,第二个协议更容易修改。