具有偶数位置元素的 lisp 列表

lisp list with even position elements

我正在尝试从作为参数给出的列表中获取一个列表,该列表仅包含偶数位置的元素。

所以如果我有'(a b c d e f) 我应该得到'(a c e)。 我也想用 do.

迭代地做
(defun pozpar (lst)
  (do ((l lst (cdr l))
       (y 0 (+ y 1))
       (x '() (cond ((eql 0 (mod y 2))
                     (cons (car l) x)))))
      ((null l) x)))
POZPAR
> (pozpar '(a b c d e f))
NIL

我不明白代码有什么问题以及为什么列表只有零。

您错过了 cond 的“else”子句。

试试这个

* (defun pozpar(lst)
    (do ((l lst (cdr l))
         (y 0 (+ y 1))
         (x '() (cond ((eql 0 (mod y 2)) (cons (car l) x))
                      (t x))))
        ((null l) x)))

* (reverse (pozpar '(a b c d e f)))
(A C E)