gpt4 book ai didi

haskell - Erlang "single assignment"与 Haskell "immutable values"不同吗?

转载 作者:行者123 更新时间:2023-12-03 15:17:06 24 4
gpt4 key购买 nike

在“Programming Erlang”一书中,据说该语言使用“单一赋值”变量。在其他关于函数式编程语言的文章中,我总是读到“不可变值”。

措辞“单一赋值”是否意味着与“不可变值”不同的东西?

最佳答案

在 erlang 中,变量可以是绑定(bind)的,也可以是未绑定(bind)的。您只能为未绑定(bind)的变量赋值。这就是单一赋值的由来,因为一旦绑定(bind)了变量,就不能再给它赋值。因此,在 erlang 中,您不能执行以下操作,即使 01是不可变的值。

X = 1.
X = 2. // This is not a valid operation

术语不可变是相对于变量的值,而不是变量本身。因此,在某些语言中,您可以为同一个变量分配不可变的不同值:
X = immutableValue;
X = anotherImutableValue; // This is a valid operation

编辑:来自维基百科

Immutable Object :

In object-oriented and functional programming, an immutable object is an object whose state cannot be modified after it is created.



Single Assignment :

Single assignment is an example of name binding and differs from assignment as described in this article in that it can only be done once, usually when the variable is created; no subsequent re-assignment is allowed. [...] Once created by single assignment, named values are not variables but immutable objects.

关于haskell - Erlang "single assignment"与 Haskell "immutable values"不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9753080/

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