Ich möchte die Funktion (* x 2) auf jedes andere Element in einer Liste anwenden und die gesamte Liste mit dem Makro loop zurückgeben. Die Lösung, die ich mit so weit habe kommen, ist dies:Common Lisp - Funktion auf jedes andere Element in der Liste anwenden
(defun double-every-other (xs)
(loop for x in xs by #'cddr collect (* x 2)))
Dies wird jedoch doppelt jedes andere Element und nur die Elemente zurück, die verdoppelt wurden, also wenn ich ausgeführt:
(double-every-other '(1 2 3 4))
Die Ergebnis wäre:
'(4 8)
Aber ich will das Ergebnis sein:
'(1 4 3 8)
Gibt es eine Möglichkeit, dies mit (Schleife) zu tun?
Hat mit einer ungeraden Anzahl von Elementen für eine Liste nicht. – Renzo
@Renzo Danke, ich habe es verpasst – coredump