Jak*_* M. 3 erlang functional-programming memoization
函数式语言的一个属性是函数没有副作用,因此相同的输入应该总是产生相同的输出.这些语言似乎可以轻松地从备忘录中获益.
但是,至少对于Erlang而言,函数调用没有默认的memoization.有没有什么特别的原因,Erlang(以及我所知的其他函数语言)默认情况下(或使用简单的触发器)进行memoize,或者至少对memoization有明确的,良好的支持?
记忆化有什么本质上的错误吗?
我可以想象的一个原因是,通过记忆,您的内存占用可以快速增长.是的,但是Erlang已经在VM上运行并管理内存,所以我猜它可以驯服缓存并防止它们很容易增长.
相关:
编辑:
这个问题有很多错误的假设.
函数式语言的一个属性是函数没有副作用
不正确,只有"纯功能语言"才有这样的约束.Erlang不是纯粹的功能.它允许功能中的任意副作用.
有没有什么特别的原因,Erlang(以及我所知的其他函数语言)默认情况下(或使用简单的触发器)进行memoize,或者至少对memoization有明确的,良好的支持?
没有语言(至少非玩具语言)实现所有函数调用的默认memoization.为什么?随之而来的是大量的空间泄漏.
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |