[erlang-questions] clarify: variable as function name

Anthony Kong <>
Mon Dec 10 12:21:59 CET 2007


The proper syntax should be:

  g() -> F=fun f/0, F().

It is because if you simply put 'f' there, it is considered an atom, not a
function. Hence the 'badfun'.

Cheers, Anthony

On Dec 10, 2007 9:24 PM, Lovei Laszlo <> wrote:

> Hi all!
>
> A quote from the reference manual:
> http://www.erlang.org/doc/reference_manual/expressions.html#6.6
>
>   6.6 Function Calls
>
>   ExprF(Expr1,...,ExprN)
>   ExprM:ExprF(Expr1,...,ExprN)
>
>   ExprM should evaluate to a module name and ExprF to a function name
>   or a fun.
>   [...]
>   The module name can be omitted, if ExprF evaluates to the name of a
>   local function, an imported function, or an auto-imported BIF.
>
> This means that the following code is valid (F evaluates to a local
> function name):
>
>   f() -> ok.
>   g() -> F=f, F().
>
> In practice, this aborts with the reason badfun. The question is, which
> one is considered good: the manual, or the implementation?
>
>
> Thanks!
> Laszlo
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions
>



-- 
/*--*/
Experience is simply the name we give our mistakes.
---- Oscar Wilde
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20071210/e06ca704/attachment.html>


More information about the erlang-questions mailing list