在普通的lisp中复制结构列表

tur*_*ete 3 struct copy list common-lisp pass-by-value

我有一个结构列表,我想编写一个函数来改变结构中的一些插槽而不影响原始列表.我尝试使用copy-list,但它不够深入; 插槽值也在原始列表中更改.我的问题是,是否有内置函数可以完成我想要的操作?或者我应该编写自己的函数?谢谢.

编辑:

我接着编写了自己的函数,是否有一个可以执行此操作的内置函数?

(defun deep-copy (li)
    (if (null li)
        nil
        (cons (copy-structure (car li)) (deep-copy (rest li)))))
Run Code Online (Sandbox Code Playgroud)

Rai*_*wig 9

预先定义该功能几乎没有价值.

你的代码只是:

(mapcar #'copy-structure some-list)
Run Code Online (Sandbox Code Playgroud)