我将图形坐标存储在一个圆形列表中:
(defun make-circular-list (size &key initial-element)
(let ((list (make-list size :initial-element initial-element)))
(nconc list list)))
(defvar *coordinates* (make-circular-list 1024 :initial-element 0.0))
*coordinates*
现在,无论何时必须设置新坐标,都可以轻松更新。
但是,我有一个库函数,它采用一系列坐标在图形上绘制线条。当然这个函数对循环结构不起作用,所以我想做一个固定长度的副本。列表或数组都可以。
到目前为止,我已经尝试过subseq
使用make-array
关键字:initial-contents
,但它失败了。 loop
或dotimes
做工作,但我希望避免迭代列表的每个元素。
是否可以有效地复制这个循环结构或本着置换数组的精神制作一个固定长度的数组?