我目前正试图掌握二郎。 它是第一个功能编程语言,我看看,我注意到,在二郎,每次你做任务是分配一次。 而且很显然,不只是在二郎山,但在许多其他函数式编程语言,作业都是通过单一分配完成。
我真搞不清楚为什么他们把它这样。 究竟是单任务的目的是什么? 我们可以从它那里得到什么好处?
我目前正试图掌握二郎。 它是第一个功能编程语言,我看看,我注意到,在二郎,每次你做任务是分配一次。 而且很显然,不只是在二郎山,但在许多其他函数式编程语言,作业都是通过单一分配完成。
我真搞不清楚为什么他们把它这样。 究竟是单任务的目的是什么? 我们可以从它那里得到什么好处?
不变性(你叫什么单赋值),简化了很多东西,因为它需要从你的程序中“时间”变量。
例如,在数学,如果你说
x = y
您可以替换x
为y
,无处不在。 在操作的编程语言,你不能保证这个等式成立:存在与每一行代码相关的“时间”(状态)。 这一次,状态也敞开了大门不希望的副作用,这是我们的敌人数量模块化和并行之一。
欲了解更多信息,请参阅本: http://mitpress.mit.edu/sicp/full-text/book/book-ZH-20.html#%_sec_3.1.1
因为单赋值 ,副作用是微乎其微的。 逸岸,它与比赛条件或任何副作用二郎这么难写代码。 这是因为,该编译器easilly告诉未使用的变量,它不使用创建的术语,阴影变量(特别是内部funs
)等
是二郎在此得到的另一个优点是引用透明 。 在二郎一个函数将只取决于传递给它,而不是全局变量的变量,除了MACROS
(和宏不能在运行时修改,它们是常数)。
最后,如果你看了二郎神的电影中, Sophisticated Error Detection Mechanism
,其内置到二郎取决于Erlang中,变量一旦赋予其实这么多。
有变量保持它们的值使得它更容易理解和调试代码。 随着并发进程,你得到了同样的问题,无论如何,所以有足够的并发症反正无需任何刚潜在变化随时改变它的值。 把它看成是由明确的时候,只允许它们封装的副作用。