【发布时间】:2020-03-20 18:53:05
【问题描述】:
我正在尝试用 common 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))
非常感谢!
【问题讨论】:
-
您又多了一对圆括号。 (progn (...)) 应该是 (progn ...)。
-
这是一本很好的 Common Lisp 入门书籍:cs.cmu.edu/~dst/LispBook/book.pdf
-
与stackoverflow.com/questions/60767680相同的错误信息和相同的原因。
标签: lisp common-lisp clisp