【问题标题】:How to create a list of lists in lisp?如何在 lisp 中创建列表列表?
【发布时间】: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))

非常感谢!

【问题讨论】:

标签: lisp common-lisp clisp


【解决方案1】:
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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多