|
|
1
3
事实上,在Erlang中,不变性并不能解决任何“共享状态”问题,因为不可变数据是“进程本地的”。 从 然而,从这个角度来看,不变性提供了许多好处,在 this Quora answer :
|
|
|
2
4
Erlang最初是在Prolog中实现的,Prolog也没有真正使用可变的数据结构(尽管有些方言使用可变的数据结构)。所以一开始没有他们。这使得运行时实现更简单、更快(特别是垃圾收集)。 因此,添加可变的数据结构将需要大量的工作,可能会引入bug,而Erlang程序员几乎可以定义为至少愿意在没有它们的情况下生活。
这种缺失确实意味着Erlang在某些领域(例如,高性能科学计算)非常不可用,至少作为主要语言是如此。但是,这意味着这些域中没有人会首先使用Erlang,因此没有特别的动机让它可用,而代价是让现有用户不满意。
|
|
|
3
0
这是怎么回事?
如果运行factorial(4),则单个进程将运行相同的函数。每次函数都有它自己的值X,如果X的值在进程的范围内,而不是函数,递归函数将不起作用。所以首先我们需要了解范围。如果您想说您不明白为什么数据需要在单个函数/块的范围内是不可变的,那么您会有一个观点,但是思考数据在哪里是不可变的,在哪里不是不可变的,这将是一个令人头痛的问题。 |
|
|
mritalian · Erlang ETS内存碎片 8 年前 |
|
|
david · Erlang:从主机名获取ip地址 8 年前 |
|
|
Matt · 有没有办法访问GenServer的状态? 8 年前 |
|
|
Chris W · 具有并行HTTP请求的Erlang网络问题 8 年前 |