list - 如何制作一个新列表指向其他地方,Lisp

标签 list pointers memory lisp memory-address

标题是不言自明的。我如何从另一个列表 Y(相同结构)构建一个新列表 X,但生成的列表指向内存区域中的其他地方,实际上是另一个对象?我尝试使用 make-list :initial-element Y 或附加到一个空列表,但我仍然得到相同的对象。谢谢!

最佳答案

Common Lisp

使用COPY-LIST复制第一层列表。

使用COPY-TREE复制一棵conses树,多级列表将在所有级别上复制。

COPY-TREE 和 COPY-LIST 都只会复制 conses 而不会复制其他内容。列表中的内容保持不变(意思是 EQL,而不是 EQ)。

参见 Common Lisp HyperSpec 的 The Conses Dictionary用于这些和相关功能。

关于list - 如何制作一个新列表指向其他地方,Lisp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1734566/

相关文章:

Linux Ubuntu Tomcat Best Config 避免内存不足

java - Android 应用程序内存问题

python - 这些 Python 结构之间的区别

c# - 将字典内容保存到文件

python - 如何在python中将对象列表转换为json格式

r - 在列表对象中,对每行中的字符进行排序

c - 奇怪的 malloc 行为

c - C中的str==NULL和str[0]=='\0'有什么区别?

c++ - 将原始指针移动到创建的函数中的下一个字符

ios - XCode Instruments 6(到目前为止)没有反射(reflect)正确的内存量