我想将函数(*x 2)应用于列表中的每个其他元素,并使用循环宏返回整个列表.我到目前为止提出的解决方案是这样的:
(defun double-every-other (xs)
(loop for x in xs by #'cddr collect (* x 2)))
Run Code Online (Sandbox Code Playgroud)
但是,这会使每个其他元素加倍,只返回加倍的元素,所以如果我执行:
(double-every-other '(1 2 3 4))
Run Code Online (Sandbox Code Playgroud)
结果将是:
'(4 8)
Run Code Online (Sandbox Code Playgroud)
但我希望结果如下:
'(1 4 3 8)
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用(循环)?