[erlang-questions] escript exception error, undefined function, why can't use fun in escript script?

Karl Velicka <>
Sun Aug 6 15:44:13 CEST 2017


Hi,

I've run into this myself once - it seems that you can't have
functions other than main/1 in escripts, although this doesn't appear
to be documented.

The way around this is to make your scripts compiled, these can have
multiple functions defined in them. You'll need to add this line
somewhere in your .escript file:

-mode(compile).


Cheers,
Karl

On 6 August 2017 at 12:44, lib nl <> wrote:
> Hi,
>
>
>
> On Linux Mint 18.2 + Erlang/OTP 20.0, there are two escript scripts: a and
> b.
>
>
>
> 1.      a
>
> #!/usr/bin/env escript
>
> main(_) ->
>
>        L = lists:map(fun(N) -> 2*N end, lists:seq(1,10)),
>
>        io:format("~p~n", [L]).
>
>
>
>
>
> 2.      b
>
> #!/usr/bin/env escript
>
> main(_) ->
>
>        L = lists:map(fun f2/1, lists:seq(1,10)),
>
>        io:format("~p~n", [L]).
>
>
>
> f2(N) -> 2 * N.
>
>
>
>
>
> $ chmod u+x a
>
> $ ./a
>
> [2,4,6,8,10,12,14,16,18,20]
>
>
>
> $ chmod u+x b
>
> $ ./b
>
> escript: exception error: undefined function erl_eval:f2/1
>
>
>
>
>
> So why can’t use fun in escript script? Is this a limitation or known issue?
> Are there any references that can give more info regarding this behavior?
> Thanks!
>
>
>
>
>
>
>
> Thanks!
>
>
>
>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>


More information about the erlang-questions mailing list