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

时间:2012-10-17 04:04:59

标签: list struct copy common-lisp pass-by-value

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

编辑:

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

(defun deep-copy (li)
    (if (null li)
        nil
        (cons (copy-structure (car li)) (deep-copy (rest li)))))

1 个答案:

答案 0 :(得分:10)

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

您的代码只是:

(mapcar #'copy-structure some-list)