Is there a straightforward way to convert an Erlang fun
to a string
? A call to io_lib:format
only prints the function reference, e.g. something like "#Fun<erl_eval.20.67289768>"
. For example, I'd like to be able to do this:
1> Fun = fun() -> atom_to_list('hello world') end.
2> FunStr = fun_to_str(Fun).
"fun() -> atom_to_list('hello world') end."
I'm looking for how to implement fun_to_str
. In javascript, some interpreters have a .toSource()
function that can be called on any object, including functions, that print their string representation. Any info is appreciated, thanks.
You might be able to use erlang:fun_info/2 for that, atleast i get some information from the shell when doing
You want the last list with the clause atom and then pretty print it using for instance erl_pp
First, get the environment variables for the fun (which includes the abstract code):
Pretty print the abstract code using
erl_pp
:(You have to add
{'fun', 1, {clauses, ...}}
around it to make it a complete Erlang expression)