Chr*_*ian 5 f# functional-programming list
我一直认为,追加一个列表到另一个意味着从第一个列表复制的对象,然后例如如指向附加列表在这里.但是,在这篇博客文章及其评论中,它表示只有复制的指针而不是底层对象.什么是正确的?
根据Snowbear的回答,结合两个列表(比问题中第一个引用文章中提出的列表)更准确的图像如下所示.
let FIRST = [1;2;3]
let SECOND = [4;5;6]
let COMBINED = FIRST @ SECOND
Run Code Online (Sandbox Code Playgroud)

在函数世界中,列表是不可变的。这意味着节点共享是可能的,因为原始列表永远不会改变。由于第一个列表以空列表结尾,因此必须复制其节点才能将其最后一个节点指向第二个列表。
如果您指的是这个陈述,那么答案似乎非常简单。第一篇文章的作者在谈论列表节点元素时说nodes。节点元素与列表项本身不同。看看第一篇文章中的图片。有从每个元素到下一个节点的箭头。这些箭头是指针。但整数类型(放入列表中)没有这样的指针。可能有某种list node类型包装这些整数并存储指针。当作者说nodes must be copies他正在谈论这些包装被复制时。底层对象(如果它们不是本例中的值类型)将不会被克隆,新的包装器将指向与以前相同的对象。