我正在尝试使用通用Lisp运行代码,但是它一直给我以下错误:
*** - SYSTEM::%EXPAND-FORM: (SETF (NTH X NUMS) 0) should be a lambda
expression
我做错了什么?我对Lisp相当陌生,这是我的代码:
(defun answer-ynq()
(setq nums '(13 15 19 33))
(setq numsstuff '())
(loop for x from 1 to 4
do (progn(
(setf (nth x nums) 0)
(append numstuff nums)
)))
(print numstuff)
)
(answer-ynq)
而且,这是从列表中创建列表的正确方法吗?我需要以这种方式将numsstuff用作列表列表,如果我给出对象列表(13 15 19 33),则会得到以下列表列表的输出:(((0 15 19 33)(13 0 19 33)(13 15 0 33)(13 15 19 0))
非常感谢!
CL-USER > (loop for i below 4
collect (loop for e in '(13 15 19 33)
for j from 0
when (= i j) collect 0 else collect e))
((0 15 19 33) (13 0 19 33) (13 15 0 33) (13 15 19 0))