Erlang 17中的Funs名字

时间:2014-04-21 14:12:44

标签: erlang

Erlang 17发布了。根据{{​​3}}:

  

Funs现在可以命名为

没有给出任何例子。

如何在Erlang 17中为乐趣指定名称?

3 个答案:

答案 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.