Erlang 17发布了。根据{{3}}:
Funs现在可以命名为
没有给出任何例子。
如何在Erlang 17中为乐趣指定名称?
答案 0 :(得分:12)
Joe Armstrong在他的blog post中以一个例子解释了这一点。
1> F = fun F(0) -> 1;
F(N) -> N * F(N - 1)
end.
#Fun
以前,您必须将该函数作为匿名递归调用的args之一传递。 (想想y-combinator)。
1> F = fun(F, 0) -> 1;
(F, N) -> N*F(F, N-1)
end.
#Fun
答案 1 :(得分:3)
命名的funs是EEP37的实现,请参阅链接以获取详细说明和基本原理。
答案 2 :(得分:0)
这个版本不需要传递函数作为args之一:
1> Fac = fun(Num) ->
Foo = fun(F, 0) -> 1;
(F, N) when N > 0, is_integer(N) -> N * F(F, N -1) end,
Foo(Foo, Num) end.