Lisp列表迭代

Ale*_*olz 4 lisp iteration list

我有一个获取x(值)和xs(列表)的函数,并从列表中删除所有大于x的值.那它不起作用,你能告诉我为什么吗?

(defun biggerElems(x xs) 
  (let ((xst))
    (dolist (elem xs)
      (if (> x elem)
          (setf xst (remove elem xs))))
    xst))
Run Code Online (Sandbox Code Playgroud)

Ben*_*ins 5

我认为这条线路不对:

(setf xst (remove elem xs))))
Run Code Online (Sandbox Code Playgroud)

第一个参数setf是地点,后跟值.它看起来像你倒退(并且xstnil或未初始化).

您可能会发现这样做更容易:

(defun biggerElems (x xs)
  (remove-if (lambda (item) (> item x)) xs))
Run Code Online (Sandbox Code Playgroud)