2012-10-17 38 views
4

我有一个结构列表,我想写一个函数来改变结构中的某些插槽而不影响原始列表。我尝试使用复制列表,但它不够深入;插槽值也在原始列表中更改。我的问题是,是否有一个内置的函数可以实现我想要的?或者我应该自己写一个函数?谢谢。复制共同lisp的结构列表

编辑:

我去上写我自己的功能,有一个内置的一个会做这个有关系吗?

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

回答

10

该函数预先定义的价值不大。

你的代码只是:

(mapcar #'copy-structure some-list) 
+0

AAAahhhhhh,你是对的:d。这是一个愚蠢的问题,但它是非常深夜,但:D。非常感谢您花时间回答这个问题。 – turingcomplete