具有偶数位置元素的 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)
我正在尝试从作为参数给出的列表中获取一个列表,该列表仅包含偶数位置的元素。
所以如果我有'(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)