为什么默认情况下Erlang函数没有被记忆?

Jak*_* M. 3 erlang functional-programming memoization

函数式语言的一个属性是函数没有副作用,因此相同的输入应该总是产生相同的输出.这些语言似乎可以轻松地从备忘录中获益.

但是,至少对于Erlang而言,函数调用没有默认的memoization.有没有什么特别的原因,Erlang(以及我所知的其他函数语言)默认情况下(或使用简单的触发器)进行memoize,或者至少对memoization有明确的,良好的支持?

记忆化有什么本质上的错误吗?

我可以想象的一个原因是,通过记忆,您的内存占用可以快速增长.是的,但是Erlang已经在VM上运行并管理内存,所以我猜它可以驯服缓存并防止它们很容易增长.

相关:

编辑:

Don*_*art 5

这个问题有很多错误的假设.

函数式语言的一个属性是函数没有副作用

不正确,只有"纯功能语言"才有这样的约束.Erlang不是纯粹的功能.它允许功能中的任意副作用.

有没有什么特别的原因,Erlang(以及我所知的其他函数语言)默认情况下(或使用简单的触发器)进行memoize,或者至少对memoization有明确的,良好的支持?

没有语言(至少非玩具语言)实现所有函数调用的默认memoization.为什么?随之而来的是大量的空间泄漏.