[erlang-questions] Passing functions as arguments requires export?
Kostis Sagonas
kostis@REDACTED
Wed Nov 3 19:25:52 CET 2010
Michal D. wrote:
> Hi All,
>
> I'm having some problems working with functions in Erlang. Specifically,
> passing functions as arguments. Given the following module:
>
> -module(test).
> -export([res/0]).
>
> res() -> lists:map({test,incr}, [0,1,2]).
>
> incr(X) -> X + 1.
>
> I stumbled upon the syntax {test,incr} to pass a (not anonymous) function.
> When I go to run this code in the emulator, I get an error that doesn't get
> resolved unless I add "incr/1" to the export list. However, there's no
> reason to export the function because I don't ever want to call it
> directly. What am I missing?
You are using a really obsolete language feature that should have been
completely eliminated by now. There is absolutely no reason for it to
still exist in the language.
Use the more modern (and more fun ;-) construct instead:
res() -> lists:map(fun incr/1, [0,1,2]).
Kostis
More information about the erlang-questions
mailing list