【发布时间】:2021-12-08 18:01:33
【问题描述】:
我的印象是,在 Erlang 中调用函数时,Erlang 会将整个参数从调用者深度复制到被调用者,主要由Erlang Efficiency Guide 告知。但是,我确实注意到该指南以及 original paper 主要关注记录而不是列表。我试图找到一个规范或其他东西来解释 Erlang 如何传递列表参数,但这些努力都是徒劳的。
此时,我的一位同事来找我,告诉我 Erlang 像 C 指针和 Golang 切片一样“通过引用”传递列表参数,但根据我的经验,这似乎不是真的。由于手头没有可靠的知识,我无法证明我或他的假设。
我想知道是否有这样的文档、论文或规范可以让我了解 Erlang 如何处理列表参数?毫无疑问,越官方越好,但实际上即使是博客或电子邮件也可以。
【问题讨论】:
-
我认为这不是一般规则。 Erlang 是一种支持
immutability的语言,在将参数传递给函数时复制参数是没有意义的。但是,我们在效率指南中看到的是涉及生成新进程的示例,并且由于进程之间也没有共享,因此副本是必不可少的,这也应该适用于列表......我的猜测。
标签: performance erlang