gpt4 book ai didi

elm - 在 Elm 中更新记录(旧的发生了什么?)

转载 作者:行者123 更新时间:2023-12-01 22:14:58 26 4
gpt4 key购买 nike

好的,首先请看下面的帖子:

Updating a record in Elm

我更好奇这实际上是如何实现的,因为这使得记录成为一个有效的变量,这是函数式编程试图避免的事情?

我的旧账单怎么了?有人基本上删除了我的 x = 4 并制作了一个新的 x = boo_far?

最佳答案

函数式编程避免了突变。在 Elm 中,记录不会发生变化,它们会被复制。

即使说它们是复制 也有点失实。它们不是逐字节完全克隆的。那将是非常低效的。它们的内部结构更像图形,允许基于指针的高效操作,在您执行复制到新记录的操作时,可以有效地扩展底层结构,而不会改变已经存在的节点和边。 p>

从概念上讲,这样想可能会有所帮助:一旦您复制到一个新的记录值,旧的就会永远存在。然而,我们的计算机并没有无限的内存,那些值可能经常永远不会被使用,所以我们将它留给 Javascript 的垃圾收集器来清理那些旧指针。

考虑 example in the answer given by @timothyclifford :

-- Create Bill Gates
billGates = { age = 100, name = "gates" }

-- Copy to Bill Nye
billNye = { bill | name = "Nye" }

-- Copy to a younger Bill Nye
youngBillNye = { billNye | age = 22 }

内部表示可以这样想:

all the bills

从概念上讲,您可以想到那些永生的人。但是,假设 billGates 被选中进行垃圾删除,因为它不再被引用(例如,它的帧从堆栈中弹出)。 billGates 指针被删除,name=="gates" 节点被删除,但所有其他节点和边保持不变:

bye bye gates

关于elm - 在 Elm 中更新记录(旧的发生了什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46684628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com