[erlang-bugs] Escript and fun local_func/arity runtime error
Scott Lystig Fritchie
fritchie@REDACTED
Fri Oct 19 22:57:44 CEST 2012
Hi, all. A colleague noticed this less-than-helpful runtime error when
using:
* escript
* "fun local_func/1" syntax
The error message:
% /usr/local/erlang/R15B02.64bit/bin/escript ~/foo
Starting main....
escript: exception error: undefined function erl_eval:bar/0
See the example script below. If your script doesn't have any initial
output (as the example does), then the error message could lead the
unsuspecting soul to believe that there's a compile-time error. Well,
except that escripts aren't really compiled by default, but ... believe
that there's a syntax error detected prior to executing main(). But
main() really is executing.
I don't see fun syntax difference documented in the
http://www.erlang.org/doc/man/escript.html reference.
Yes, the problem disappears if "-mode(compile)." is added to the script.
-Scott
--- snip --- snip --- snip --- snip --- snip --- snip ---
#!/usr/bin/env escript
%%! -args_file ./data/ssl_distribution.args_file
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ft=erlang ts=4 sw=4 et
%% -------------------------------------------------------------------
main( _) ->
io:format("Starting main....\n"),
X = fun() -> foo() end,
Y = fun bar/0,
X(),
Y().
foo() ->
io:format("Hello, foo!\n").
bar() ->
io:format("Hello, bar!\n").
More information about the erlang-bugs
mailing list