小编lan*_*our的帖子

Common Lisp - 将函数应用于列表中的每个其他元素

我想将函数(*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)

有没有办法可以使用(循环)?

lisp loops common-lisp

3
推荐指数
3
解决办法
1215
查看次数

标签 统计

common-lisp ×1

lisp ×1

loops ×1