'Are Erlang funs garbage collected?

If one generates funs in erlang, are they garbage collected? For instance to replicate a python like iterator or to read a stream, one may generate funs for every yield -- potentially a great many. The used funs are no longer required after use, so are they eventually garbage collected?

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



Solution 1:[1]

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

No, a fun is not an atom, rather a fun is its own data type. At some point, you will see the following ordering of erlang's data types in the docs:

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

which means you can write things like this:

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

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

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1