在 common lisp 中复制结构列表

Posted

技术标签:

【中文标题】在 common lisp 中复制结构列表【英文标题】:copying list of structs in common lisp 【发布时间】:2012-10-07 06:37:12 【问题描述】:

我有一个结构列表,我想编写一个函数来改变结构中的一些槽而不影响原始列表。我尝试使用复制列表,但它不够深;插槽值也在原始列表中更改。我的问题是,是否有一个内置函数可以满足我的需求?还是我应该自己编写一个?谢谢。

编辑:

我继续写了自己的函数,有没有内置的函数可以做到这一点?

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

【问题讨论】:

【参考方案1】:

预定义该功能没有什么价值。

您的代码只是:

(mapcar #'copy-structure some-list)

【讨论】:

AAAahhhhhh,你是对的:D。这是一个愚蠢的问题,虽然已经很晚了:D。非常感谢您花时间回答这个问题。

以上是关于在 common lisp 中复制结构列表的主要内容,如果未能解决你的问题,请参考以下文章

解析 Common Lisp 列表中的符号

Common Lisp:在 first、rest、last 中解构列表(如 Python 可迭代解包)

使用 Lisp:编写一个名为 myList 的 Common Lisp 函数,它创建以下列表并返回它

如何使用依赖于包装它的较短列表的 map 循环较长的列表以将某些函数应用于 Common Lisp 中的较长列表?

Clojure let vs Common Lisp let

ANSI Common Lisp Chapter 2