为什么这个 do times lisp loop 给我带来问题?

why does this do times lisp loop giving me issues?

我正在尝试实现函数元素 I,return 列表 list.car 的第 i 个元素是元素 0,1 等,我正在尝试使用 dotimes 循环连同 pop 函数,我不断收到错误

(defun element-i (y L)
;; (setq m )
  (let ((m ( cdr L));;(return car L))
    (dotimes(m (cdr L) t)
      (if (equal y 0) (return car L)
     (pop car L)
       (setq i (+ m L)))))))

您这里有很多问题。首先,您使用的是参数 y,但在函数内部调用它 i。此外 L 是一个列表,因此 (+ m L) 将发出错误信号。另一方面,我认为您打算将 m 用作整数,但将其初始化为 (cdr L) 这是一个列表。 此外,函数 pop 修改列表 L,但使用变量指向列表的下一个元素要容易得多,而无需修改列表,只需说 (setq m (cdr m))
您可以用更简单的方式重写该函数,按照以下思路进行思考:取一个变量 m 并将其初始化为 L。在列表中循环 i 次,使每次 m 等于 (cdr m),即同一个列表减去前一个循环的第一个元素。退出循环后,m 将成为子列表,其汽车是 L.

的第 i 个元素