首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纯函数编程:如何将元素添加到列表中?

纯函数编程:如何将元素添加到列表中?
EN

Stack Overflow用户
提问于 2012-10-21 00:47:58
回答 2查看 2.7K关注 0票数 0

在纯函数编程中,我们不修改函数的任何参数。那么,我们如何设计一个函数来添加一个元素到它的参数,一个列表呢?例如,function list add (elem, list)。这个问题类似于这个线程:函数式编程:状态与重新分配

我猜的解决方案是深拷贝输入列表,然后使用一些破坏性操作(如append )来操作新的列表。我说的对吗?

附加

我从图形复制算法复制以下代码:

代码语言:javascript
复制
// in Node
public Node deepCopy(Map<Node, Node> isomorphism) {
    Node copy = isomorphism.get(this);
    if (copy == null) {
        copy = new Node();
        isomorphism.put(this, copy);
        for (Node connection: connections) {
            copy.connections.add(connection.deepCopy(isomorphism));
        }
    }
    return copy;
}

要深入复制图形,必须跟踪正在复制的每个节点.在宇宙中,我们使用isomorphism参数来实现这一点。我认为制作此deepCopy操作纯功能版本的唯一方法是不仅返回变量copy,还返回指示返回的节点是否是新节点的标志。对吗?

EN

回答 2

Stack Overflow用户

发布于 2012-10-21 00:58:23

是的,您必须返回一个添加了元素的新列表。

然而,这不需要一个深刻的副本。函数式语言通常以持久数据结构为特色,它允许在不同版本之间共享结构的部分,因此您可以在O(1)时间内将元素添加到列表中。

票数 3
EN

Stack Overflow用户

发布于 2012-10-21 00:51:12

您将编写一个函数来构建一个新列表(在本例中,一个函数中添加了新元素到旧列表中)&返回该函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12993979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档