单一作业的目的

Kem*_*lah 7 erlang functional-programming

我目前正在努力掌握Erlang.这是我看到的第一个函数式编程语言,我注意到在Erlang中,你所做的每个任务都是一个赋值.显然,不仅在Erlang中,而且在许多其他函数式编程语言中,分配都是通过单一赋值完成的.

我真的很困惑他们为什么这样做.单一作业的目的究竟是什么?我们可以从中获得什么好处?

Die*_*ego 9

不可变性(你称之为单一作业)简化了许多事情,因为它从你的程序中取出了"时间"变量.

例如,在数学中,如果你说

  x = y
Run Code Online (Sandbox Code Playgroud)

可以替换xy,无处不在.在操作编程语言中,您无法确保此等式成立:存在与每行代码关联的"时间"(状态).这个时间状态也为不受欢迎的副作用敞开了大门,这是模块性和并发性的头号敌人.

有关更多信息,请参阅:http://mitpress.mit.edu/sicp/full-text/book/book-ZH-20.html#%_sec_3.1.1