如何在Lisp中创建列表列表?

问题描述 投票:0回答:1

我正在尝试使用通用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))

非常感谢!

lisp common-lisp clisp
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.