功能语言的一个特性是函数没有副作用,因此相同的输入应该总是产生相同的输出。这些语言似乎可以很容易地从回忆录中获益。
但是,至少对于二郎,没有默认的函数调用回忆录。据我所知,Erlang (和其他函数式语言)默认进行回忆录(或使用简单的触发器),或者至少有明确的、良好的回忆录支持,有什么特别的原因吗?
回忆录本身有什么问题吗?
我可以想象的一个原因是,回忆录你的记忆足迹可以快速增长。是的,但是Erlang已经在VM上运行并管理内存,所以我想它可以很容易地驯服缓存并阻止它们的增长。
相关
编辑
发布于 2013-08-14 10:43:27
在这个问题上有许多错误的假设。
函数语言的一个特性是,函数没有副作用。
不正确,只有“纯功能语言”才有这样的约束。Erlang并不是纯功能性的。它允许在功能上任意产生副作用。
据我所知,Erlang (和其他函数式语言)默认进行回忆录(或使用简单的触发器),或者至少有明确的、良好的回忆录支持,有什么特别的原因吗?
没有语言(至少非玩具语言)在默认情况下实现所有函数调用的回忆录。为什么?随之而来的是大量的空间泄漏。
https://stackoverflow.com/questions/18213527
复制相似问题