是否收集了 Erlang 的乐趣垃圾?

Are Erlang funs garbage collected?

如果在 erlang 中生成 funs,它们会被垃圾回收吗?例如复制一个 python 像 iterator 或读取一个流,可以为每个产量生成 funs —— 可能很多。使用过的fun在使用后不再需要,所以它们最终会被垃圾回收吗?

我猜也就是说,#Fun<erl_eval.xx.yyyyyyy>这样的物体是原子吗?

I guess that is to say, is such an object as #Fun<erl_eval.xx.yyyyyyy> an atom?

不,乐趣不是原子,乐趣是它自己的数据类型。在某些时候,您会在文档中看到以下 erlang 数据类型的排序:

number < atom < reference < fun < port < pid < tuple < map < nil < list < bit string

这意味着你可以这样写:

1> 12 < fun(X) -> X end. 
true

2> abc < fun(X) -> X end.
true

3> [1, 2, 3] < fun(X) -> X end.
false